]> git.proxmox.com Git - pve-storage.git/blobdiff - PVE/Storage/CIFSPlugin.pm
zfspool: add zfs_get_sorted_snapshot_list helper
[pve-storage.git] / PVE / Storage / CIFSPlugin.pm
index 070ab826c1a78757a994bbe5f6196607d7f46ab4..3a7e638c25407f84655a025957dc6791c05d29b1 100644 (file)
@@ -78,7 +78,7 @@ sub cifs_mount {
        push @$cmd, 'guest,username=guest';
     }
 
-    push @$cmd, '-o', defined($smbver) ? "vers=$smbver" : "vers=3.0";
+    push @$cmd, '-o', defined($smbver) ? "vers=$smbver" : "vers=default";
 
     run_command($cmd, errmsg => "mount error");
 }
@@ -115,9 +115,11 @@ sub properties {
            maxLength => 256,
        },
        smbversion => {
-           description => "SMB protocol version",
+           description => "SMB protocol version. 'default' if not set, negotiates the highest SMB2+"
+               ." version supported by both the client and server.",
            type => 'string',
-           enum => ['2.0', '2.1', '3.0'],
+           default => 'default',
+           enum => ['default', '2.0', '2.1', '3', '3.0', '3.11'],
            optional => 1,
        },
     };
@@ -140,6 +142,7 @@ sub options {
        smbversion => { optional => 1},
        mkdir => { optional => 1 },
        bwlimit => { optional => 1 },
+       preallocation => { optional => 1 },
     };
 }
 
@@ -160,7 +163,7 @@ sub on_add_hook {
     if (defined($sensitive{password})) {
        cifs_set_credentials($sensitive{password}, $storeid);
        if (!exists($scfg->{username})) {
-           warn "ignoring password parameter\n";
+           warn "storage $storeid: ignoring password parameter, no user set\n";
        }
     } else {
        cifs_delete_credentials($storeid);
@@ -177,7 +180,7 @@ sub on_update_hook {
     if (defined($sensitive{password})) {
        cifs_set_credentials($sensitive{password}, $storeid);
        if (!exists($scfg->{username})) {
-           warn "ignoring password parameter\n";
+           warn "storage $storeid: ignoring password parameter, no user set\n";
        }
     } else {
        cifs_delete_credentials($storeid);
@@ -255,9 +258,12 @@ sub check_connection {
 
     my $servicename = '//'.$scfg->{server}.'/'.$scfg->{share};
 
-    my $cmd = ['/usr/bin/smbclient', $servicename, '-d', '0', '-m'];
+    my $cmd = ['/usr/bin/smbclient', $servicename, '-d', '0'];
 
-    push @$cmd, $scfg->{smbversion} ? "smb".int($scfg->{smbversion}) : 'smb3';
+    if (defined($scfg->{smbversion}) && $scfg->{smbversion} ne 'default') {
+       # max-protocol version, so basically only relevant for smb2 vs smb3
+       push @$cmd, '-m', "smb" . int($scfg->{smbversion});
+    }
 
     if (my $cred_file = get_cred_file($storeid)) {
        push @$cmd, '-U', $scfg->{username}, '-A', $cred_file;