This may lead to deadlocks on the nfsd state lock. Instead, wait for the laundromat to expire the client. TODO: Regardless, even if the callback succeeded, we need to track a list of recalled layout and maintain it as they returned by the client Then, scrub it in the laundromat and expire the client if it hasn't returned all recalled layouts in a timely manner (e.g. after 2 lease periods after its last return with the respective stateid) Signed-off-by: Benny Halevy <bhalevy@xxxxxxxxxxx> --- fs/nfsd/nfs4callback.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) diff --git a/fs/nfsd/nfs4callback.c b/fs/nfsd/nfs4callback.c index c5973c3..f5c24d1 100644 --- a/fs/nfsd/nfs4callback.c +++ b/fs/nfsd/nfs4callback.c @@ -1043,7 +1043,6 @@ static void nfsd4_cb_layout_done(struct rpc_task *task, void *calldata) * the client after at-least "lease time" .eg lease-time * 2 * when failing to communicate a recall */ - expire_client_lock(clp); break; case -NFS4ERR_DELAY: /* Pole the client until it's done with the layout */ -- 1.6.4.4 -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html