diff options
Diffstat (limited to 'fs/nfs/nfs4filelayoutdev.c')
| -rw-r--r-- | fs/nfs/nfs4filelayoutdev.c | 15 | 
1 files changed, 7 insertions, 8 deletions
diff --git a/fs/nfs/nfs4filelayoutdev.c b/fs/nfs/nfs4filelayoutdev.c index b85a29df20a..3336d5eaf87 100644 --- a/fs/nfs/nfs4filelayoutdev.c +++ b/fs/nfs/nfs4filelayoutdev.c @@ -804,13 +804,14 @@ nfs4_fl_prepare_ds(struct pnfs_layout_segment *lseg, u32 ds_idx)  	struct nfs4_pnfs_ds *ds = dsaddr->ds_list[ds_idx];  	struct nfs4_deviceid_node *devid = FILELAYOUT_DEVID_NODE(lseg); -	if (filelayout_test_devid_invalid(devid)) +	if (filelayout_test_devid_unavailable(devid))  		return NULL;  	if (ds == NULL) {  		printk(KERN_ERR "NFS: %s: No data server for offset index %d\n",  			__func__, ds_idx); -		goto mark_dev_invalid; +		filelayout_mark_devid_invalid(devid); +		return NULL;  	}  	if (!ds->ds_clp) { @@ -818,14 +819,12 @@ nfs4_fl_prepare_ds(struct pnfs_layout_segment *lseg, u32 ds_idx)  		int err;  		err = nfs4_ds_connect(s, ds); -		if (err) -			goto mark_dev_invalid; +		if (err) { +			nfs4_mark_deviceid_unavailable(devid); +			return NULL; +		}  	}  	return ds; - -mark_dev_invalid: -	filelayout_mark_devid_invalid(devid); -	return NULL;  }  module_param(dataserver_retrans, uint, 0644);  |