pnfs: Stop attempting LAYOUTGET on OPEN on failure
Signed-off-by: Fred Isaman <fred.isaman@gmail.com> Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
This commit is contained in:

committed by
Trond Myklebust

parent
78746a384c
commit
6e01260cee
@@ -2088,6 +2088,8 @@ void pnfs_lgopen_prepare(struct nfs4_opendata *data,
|
||||
server->pnfs_curr_ld->flags & PNFS_LAYOUTGET_ON_OPEN))
|
||||
return;
|
||||
/* Could check on max_ops, but currently hardcoded high enough */
|
||||
if (!nfs_server_capable(data->dir->d_inode, NFS_CAP_LGOPEN))
|
||||
return;
|
||||
if (data->state)
|
||||
_lgopen_prepare_attached(data, ctx);
|
||||
else
|
||||
@@ -2101,8 +2103,23 @@ void pnfs_parse_lgopen(struct inode *ino, struct nfs4_layoutget *lgp,
|
||||
struct pnfs_layout_segment *lseg;
|
||||
u32 iomode;
|
||||
|
||||
if (!lgp || lgp->res.layoutp->len == 0)
|
||||
if (!lgp)
|
||||
return;
|
||||
dprintk("%s: entered with status %i\n", __func__, lgp->res.status);
|
||||
if (lgp->res.status) {
|
||||
switch (lgp->res.status) {
|
||||
case -NFS4ERR_DELAY:
|
||||
case -NFS4ERR_GRACE:
|
||||
case -NFS4ERR_LAYOUTTRYLATER:
|
||||
break;
|
||||
default:
|
||||
/* FIXME - Any error not listed above permanently
|
||||
* halts lgopen attempts.
|
||||
*/
|
||||
NFS_SERVER(ino)->caps &= ~NFS_CAP_LGOPEN;
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (!lgp->args.inode) {
|
||||
lo = _pnfs_grab_empty_layout(ino, ctx);
|
||||
if (!lo)
|
||||
|
Reference in New Issue
Block a user