Add a new backend store that enables iSCSI targets backed by S3-compatible object storage (AWS S3, MinIO, Ceph RGW, etc.). The implementation uses a chunked storage strategy where the virtual block device is divided into fixed-size chunks (default 4 MiB), each stored as an independent S3 object. This enables efficient random read/write access on top of object storage. Key features: - Chunked storage with configurable chunk size - Sparse device support (unwritten chunks treated as zeros) - Concurrent multi-chunk I/O via errgroup - Per-chunk locking for safe read-modify-write - AWS SDK v2 with default credential chain - In-process gofakes3 test server (no Docker needed) - 12 unit tests + 2 integration tests Also updates CI workflow to run S3 backend tests and updates README with S3 backend documentation. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
66 lines
2.9 KiB
Modula-2
66 lines
2.9 KiB
Modula-2
module github.com/gostor/gotgt
|
|
|
|
go 1.25.0
|
|
|
|
require (
|
|
github.com/aws/aws-sdk-go-v2 v1.41.4
|
|
github.com/aws/aws-sdk-go-v2/config v1.32.12
|
|
github.com/aws/aws-sdk-go-v2/credentials v1.19.12
|
|
github.com/aws/aws-sdk-go-v2/service/s3 v1.97.1
|
|
github.com/ceph/go-ceph v0.30.0
|
|
github.com/coreos/go-systemd v0.0.0-20191104093116-d3cd4ed1dbcf
|
|
github.com/docker/go-connections v0.5.0
|
|
github.com/google/uuid v1.6.0
|
|
github.com/gorilla/mux v1.8.1
|
|
github.com/johannesboyne/gofakes3 v0.0.0-20260208201424-4c385a1f6a73
|
|
github.com/mitchellh/go-homedir v1.1.0
|
|
github.com/sirupsen/logrus v1.9.3
|
|
github.com/spf13/cobra v1.8.0
|
|
github.com/spf13/viper v1.18.2
|
|
golang.org/x/net v0.24.0
|
|
golang.org/x/sync v0.20.0
|
|
)
|
|
|
|
require (
|
|
github.com/Microsoft/go-winio v0.6.1 // indirect
|
|
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.7 // indirect
|
|
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 // indirect
|
|
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 // indirect
|
|
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 // indirect
|
|
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 // indirect
|
|
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.21 // indirect
|
|
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 // indirect
|
|
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.12 // indirect
|
|
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 // indirect
|
|
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.20 // indirect
|
|
github.com/aws/aws-sdk-go-v2/service/signin v1.0.8 // indirect
|
|
github.com/aws/aws-sdk-go-v2/service/sso v1.30.13 // indirect
|
|
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 // indirect
|
|
github.com/aws/aws-sdk-go-v2/service/sts v1.41.9 // indirect
|
|
github.com/aws/smithy-go v1.24.2 // indirect
|
|
github.com/fsnotify/fsnotify v1.7.0 // indirect
|
|
github.com/hashicorp/hcl v1.0.0 // indirect
|
|
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
|
github.com/magiconair/properties v1.8.7 // indirect
|
|
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
|
github.com/pelletier/go-toml/v2 v2.2.1 // indirect
|
|
github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46 // indirect
|
|
github.com/sagikazarmark/locafero v0.4.0 // indirect
|
|
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
|
|
github.com/sourcegraph/conc v0.3.0 // indirect
|
|
github.com/spf13/afero v1.11.0 // indirect
|
|
github.com/spf13/cast v1.6.0 // indirect
|
|
github.com/spf13/pflag v1.0.5 // indirect
|
|
github.com/subosito/gotenv v1.6.0 // indirect
|
|
go.shabbyrobe.org/gocovmerge v0.0.0-20230507111327-fa4f82cfbf4d // indirect
|
|
go.uber.org/atomic v1.9.0 // indirect
|
|
go.uber.org/multierr v1.9.0 // indirect
|
|
golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect
|
|
golang.org/x/mod v0.12.0 // indirect
|
|
golang.org/x/sys v0.25.0 // indirect
|
|
golang.org/x/text v0.14.0 // indirect
|
|
golang.org/x/tools v0.13.0 // indirect
|
|
gopkg.in/ini.v1 v1.67.0 // indirect
|
|
gopkg.in/yaml.v3 v3.0.1 // indirect
|
|
)
|