pnfs/flexfiles: do not mark delay-like status as DS failure
We just need to delay and retry in these cases. Signed-off-by: Peng Tao <tao.peng@primarydata.com> Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
This commit is contained in:
committed by
Trond Myklebust
parent
7c1e6e58e2
commit
c22eeb8697
@@ -1188,6 +1188,14 @@ static void ff_layout_io_track_ds_error(struct pnfs_layout_segment *lseg,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch (status) {
|
||||||
|
case NFS4ERR_DELAY:
|
||||||
|
case NFS4ERR_GRACE:
|
||||||
|
return;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
mirror = FF_LAYOUT_COMP(lseg, idx);
|
mirror = FF_LAYOUT_COMP(lseg, idx);
|
||||||
err = ff_layout_track_ds_error(FF_LAYOUT_FROM_HDR(lseg->pls_layout),
|
err = ff_layout_track_ds_error(FF_LAYOUT_FROM_HDR(lseg->pls_layout),
|
||||||
mirror, offset, length, status, opnum,
|
mirror, offset, length, status, opnum,
|
||||||
@@ -1399,7 +1407,6 @@ static int ff_layout_write_done_cb(struct rpc_task *task,
|
|||||||
ff_layout_reset_write(hdr, false);
|
ff_layout_reset_write(hdr, false);
|
||||||
return task->tk_status;
|
return task->tk_status;
|
||||||
case -EAGAIN:
|
case -EAGAIN:
|
||||||
rpc_restart_call_prepare(task);
|
|
||||||
return -EAGAIN;
|
return -EAGAIN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user