FAILED: patch "[PATCH] NFSv4: Check the return value of update_open_stateid()" failed to apply to 4.14-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.14-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From e3c8dc761ead061da2220ee8f8132f729ac3ddfe Mon Sep 17 00:00:00 2001
From: Trond Myklebust <[email protected]>
Date: Mon, 29 Jul 2019 18:25:00 +0100
Subject: [PATCH] NFSv4: Check the return value of update_open_stateid()
Ensure that we always check the return value of update_open_stateid() so that we can retry if the update of local state failed. This fixes infinite looping on state recovery.
Fixes e23008ec81ef3 ("NFSv4 reduce attribute requests for open reclaim")
Signed-off-by Trond Myklebust <[email protected]>
Cc [email protected] # v3.7+
fs/nfs/nfs4proc.c +8 -4
@@ -1915,8 +1915,9 @@ _nfs4_opendata_reclaim_to_nfs4_state(struct nfs4_opendata *data)if (data->o_res.delegation_type !=0 )nfs4_opendata_check_deleg (data, state); update: -update_open_stateid (state, &data->o_res.stateid,NULL , - data->o_arg.fmode); +if (!update_open_stateid (state, &data->o_res.stateid, +NULL , data->o_arg.fmode)) +return ERR_PTR (-EAGAIN );refcount_inc (&state->count);return state;
@@ -1981,8 +1982,11 @@ _nfs4_opendata_to_nfs4_state(struct nfs4_opendata *data)if (data->o_res.delegation_type !=0 )nfs4_opendata_check_deleg (data, state); -update_open_stateid (state, &data->o_res.stateid,NULL , - data->o_arg.fmode); +if (!update_open_stateid (state, &data->o_res.stateid, +NULL , data->o_arg.fmode)) { +nfs4_put_open_state (state); + state =ERR_PTR (-EAGAIN ); + } out:nfs_release_seqid (data->o_arg.seqid);return state;