提交 194a0dc8 编写于 作者: T Trond Myklebust

pNFS/flexfiles: Report DELAY and GRACE errors from the DS to the server

Ensure that if the DS is returning too many DELAY and GRACE errors, we
also report that to the MDS through the layouterror mechanism.
Signed-off-by: NTrond Myklebust <trond.myklebust@hammerspace.com>
上级 a8b373ee
...@@ -1297,21 +1297,23 @@ static void ff_layout_io_track_ds_error(struct pnfs_layout_segment *lseg, ...@@ -1297,21 +1297,23 @@ static void ff_layout_io_track_ds_error(struct pnfs_layout_segment *lseg,
} }
} }
mirror = FF_LAYOUT_COMP(lseg, idx);
err = ff_layout_track_ds_error(FF_LAYOUT_FROM_HDR(lseg->pls_layout),
mirror, offset, length, status, opnum,
GFP_NOIO);
switch (status) { switch (status) {
case NFS4ERR_DELAY: case NFS4ERR_DELAY:
case NFS4ERR_GRACE: case NFS4ERR_GRACE:
return;
default:
break; break;
case NFS4ERR_NXIO:
ff_layout_mark_ds_unreachable(lseg, idx);
/* Fallthrough */
default:
pnfs_error_mark_layout_for_return(lseg->pls_layout->plh_inode,
lseg);
} }
mirror = FF_LAYOUT_COMP(lseg, idx);
err = ff_layout_track_ds_error(FF_LAYOUT_FROM_HDR(lseg->pls_layout),
mirror, offset, length, status, opnum,
GFP_NOIO);
if (status == NFS4ERR_NXIO)
ff_layout_mark_ds_unreachable(lseg, idx);
pnfs_error_mark_layout_for_return(lseg->pls_layout->plh_inode, lseg);
dprintk("%s: err %d op %d status %u\n", __func__, err, opnum, status); dprintk("%s: err %d op %d status %u\n", __func__, err, opnum, status);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册