|
@@ -334,6 +334,9 @@ filelayout_read_pagelist(struct nfs_read_data *data)
|
|
__func__, data->inode->i_ino,
|
|
__func__, data->inode->i_ino,
|
|
data->args.pgbase, (size_t)data->args.count, offset);
|
|
data->args.pgbase, (size_t)data->args.count, offset);
|
|
|
|
|
|
|
|
+ if (test_bit(NFS_DEVICEID_INVALID, &FILELAYOUT_DEVID_NODE(lseg)->flags))
|
|
|
|
+ return PNFS_NOT_ATTEMPTED;
|
|
|
|
+
|
|
/* Retrieve the correct rpc_client for the byte range */
|
|
/* Retrieve the correct rpc_client for the byte range */
|
|
j = nfs4_fl_calc_j_index(lseg, offset);
|
|
j = nfs4_fl_calc_j_index(lseg, offset);
|
|
idx = nfs4_fl_calc_ds_index(lseg, j);
|
|
idx = nfs4_fl_calc_ds_index(lseg, j);
|
|
@@ -373,6 +376,9 @@ filelayout_write_pagelist(struct nfs_write_data *data, int sync)
|
|
struct nfs_fh *fh;
|
|
struct nfs_fh *fh;
|
|
int status;
|
|
int status;
|
|
|
|
|
|
|
|
+ if (test_bit(NFS_DEVICEID_INVALID, &FILELAYOUT_DEVID_NODE(lseg)->flags))
|
|
|
|
+ return PNFS_NOT_ATTEMPTED;
|
|
|
|
+
|
|
/* Retrieve the correct rpc_client for the byte range */
|
|
/* Retrieve the correct rpc_client for the byte range */
|
|
j = nfs4_fl_calc_j_index(lseg, offset);
|
|
j = nfs4_fl_calc_j_index(lseg, offset);
|
|
idx = nfs4_fl_calc_ds_index(lseg, j);
|
|
idx = nfs4_fl_calc_ds_index(lseg, j);
|
|
@@ -456,6 +462,10 @@ filelayout_check_layout(struct pnfs_layout_hdr *lo,
|
|
goto out;
|
|
goto out;
|
|
} else
|
|
} else
|
|
dsaddr = container_of(d, struct nfs4_file_layout_dsaddr, id_node);
|
|
dsaddr = container_of(d, struct nfs4_file_layout_dsaddr, id_node);
|
|
|
|
+ /* Found deviceid is being reaped */
|
|
|
|
+ if (test_bit(NFS_DEVICEID_INVALID, &dsaddr->id_node.flags))
|
|
|
|
+ goto out_put;
|
|
|
|
+
|
|
fl->dsaddr = dsaddr;
|
|
fl->dsaddr = dsaddr;
|
|
|
|
|
|
if (fl->first_stripe_index < 0 ||
|
|
if (fl->first_stripe_index < 0 ||
|