nfs: flexfilelayout: remove v3-only data server limitation
authorTigran Mkrtchyan <tigran.mkrtchyan@desy.de>
Tue, 4 Apr 2017 13:12:51 +0000 (15:12 +0200)
committerTrond Myklebust <trond.myklebust@primarydata.com>
Thu, 20 Apr 2017 17:35:24 +0000 (13:35 -0400)
Flexfilelayout supports data servers which talk NFS v3 and v4.{0,1,2}.
However, this code path is disabled and v3 only servers are accepted.
This change removes this limitation.
Signed-off-by: Tigran Mkrtchyan <tigran.mkrtchyan@desy.de>
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
fs/nfs/flexfilelayout/flexfilelayoutdev.c

index 457cfeb1d5c162e4177450eb941460a2fe39f3b1..8ca9cc6655613ad23541d96767094bf34723d952 100644 (file)
@@ -119,7 +119,13 @@ nfs4_ff_alloc_deviceid_node(struct nfs_server *server, struct pnfs_device *pdev,
                if (ds_versions[i].wsize > NFS_MAX_FILE_IO_SIZE)
                        ds_versions[i].wsize = NFS_MAX_FILE_IO_SIZE;
 
-               if (ds_versions[i].version != 3 || ds_versions[i].minor_version != 0) {
+               /*
+                * check for valid major/minor combination.
+                * currently we support dataserver which talk:
+                *   v3, v4.0, v4.1, v4.2
+                */
+               if (!((ds_versions[i].version == 3 && ds_versions[i].minor_version == 0) ||
+                       (ds_versions[i].version == 4 && ds_versions[i].minor_version < 3))) {
                        dprintk("%s: [%d] unsupported ds version %d-%d\n", __func__,
                                i, ds_versions[i].version,
                                ds_versions[i].minor_version);