diff --git a/_output/seaweedfs-csi-driver b/_output/seaweedfs-csi-driver new file mode 100755 index 0000000..adbcd3e Binary files /dev/null and b/_output/seaweedfs-csi-driver differ diff --git a/cmd/seaweedfs-csi-driver/main.go b/cmd/seaweedfs-csi-driver/main.go index a654992..2671f0b 100644 --- a/cmd/seaweedfs-csi-driver/main.go +++ b/cmd/seaweedfs-csi-driver/main.go @@ -10,10 +10,11 @@ import ( ) var ( - filer = flag.String("filer", "localhost:8888", "filer server") - endpoint = flag.String("endpoint", "unix://tmp/seaweedfs-csi.sock", "CSI endpoint to accept gRPC calls") - nodeID = flag.String("nodeid", "", "node id") - version = flag.Bool("version", false, "Print the version and exit.") + filer = flag.String("filer", "localhost:8888", "filer server") + endpoint = flag.String("endpoint", "unix://tmp/seaweedfs-csi.sock", "CSI endpoint to accept gRPC calls") + nodeID = flag.String("nodeid", "", "node id") + version = flag.Bool("version", false, "Print the version and exit.") + concurrentWriters = flag.Int("concurrentWriters", 128, "limit concurrent goroutine writers if not 0") ) func main() { @@ -30,5 +31,6 @@ func main() { } drv := driver.NewSeaweedFsDriver(*filer, *nodeID, *endpoint) + drv.ConcurrentWriters = *concurrentWriters drv.Run() } diff --git a/pkg/driver/driver.go b/pkg/driver/driver.go index 4e3b808..ad559d0 100644 --- a/pkg/driver/driver.go +++ b/pkg/driver/driver.go @@ -4,12 +4,12 @@ import ( "fmt" "os" + "github.com/chrislusf/seaweedfs/weed/glog" "github.com/chrislusf/seaweedfs/weed/pb" "github.com/chrislusf/seaweedfs/weed/pb/filer_pb" "github.com/chrislusf/seaweedfs/weed/security" "github.com/chrislusf/seaweedfs/weed/util" "github.com/container-storage-interface/spec/lib/go/csi" - "github.com/chrislusf/seaweedfs/weed/glog" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -35,8 +35,9 @@ type SeaweedFsDriver struct { vcap []*csi.VolumeCapability_AccessMode cscap []*csi.ControllerServiceCapability - filer string - grpcDialOption grpc.DialOption + filer string + grpcDialOption grpc.DialOption + ConcurrentWriters int } func NewSeaweedFsDriver(filer, nodeID, endpoint string) *SeaweedFsDriver { diff --git a/pkg/driver/mounter_seaweedfs.go b/pkg/driver/mounter_seaweedfs.go index 848da85..2464485 100644 --- a/pkg/driver/mounter_seaweedfs.go +++ b/pkg/driver/mounter_seaweedfs.go @@ -35,6 +35,9 @@ func (seaweedFs *seaweedFsMounter) Mount(target string) error { fmt.Sprintf("-filer=%s", seaweedFs.driver.filer), fmt.Sprintf("-filer.path=/buckets/%s", seaweedFs.bucketName), } + if seaweedFs.driver.ConcurrentWriters > 0 { + args = append(args, fmt.Sprintf("-concurrentWriters %d", seaweedFs.driver.ConcurrentWriters)) + } err := fuseMount(target, seaweedFsCmd, args) if err != nil { glog.Errorf("mount %s%s to %s: %s", seaweedFs.driver.filer, seaweedFs.bucketName, target, err)