Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
[sfrench/cifs-2.6.git] / fs / nfs / flexfilelayout / flexfilelayoutdev.c
index 457cfeb1d5c162e4177450eb941460a2fe39f3b1..6df7a0cf566015378aa3f76c480115675454297d 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);
@@ -415,7 +421,7 @@ nfs4_ff_layout_prepare_ds(struct pnfs_layout_segment *lseg, u32 ds_idx,
                             mirror->mirror_ds->ds_versions[0].minor_version);
 
        /* connect success, check rsize/wsize limit */
-       if (ds->ds_clp) {
+       if (!status) {
                max_payload =
                        nfs_block_size(rpc_max_payload(ds->ds_clp->cl_rpcclient),
                                       NULL);