diff options
| author | Jeff Layton <jlayton@kernel.org> | 2025-02-20 11:47:15 -0500 |
|---|---|---|
| committer | Chuck Lever <chuck.lever@oracle.com> | 2025-03-10 09:11:10 -0400 |
| commit | 49bdbdb11f70edef73ff9015f9b4ce717338def9 (patch) | |
| tree | e1c0960597497b447d9d4cc386df03361dbe54c4 /fs/nfsd/state.h | |
| parent | 424dd3df1f991b14a70f044a68c8a595abbdf1ad (diff) | |
nfsd: replace CB_GETATTR_BUSY with NFSD4_CALLBACK_RUNNING
These flags serve essentially the same purpose and get set and cleared
at the same time. Drop CB_GETATTR_BUSY and just use
NFSD4_CALLBACK_RUNNING instead.
For this to work, we must use clear_and_wake_up_bit(), but doing that on
for other types of callbacks is wasteful. Declare a new NFSD4_CALLBACK_WAKE
flag in cb_flags to indicate that wake_up is needed, and only set that
for CB_GETATTRs.
Also, make the wait use a TASK_UNINTERRUPTIBLE sleep. This is done in
the context of an nfsd thread, and it should never need to deal with
signals.
Signed-off-by: Jeff Layton <jlayton@kernel.org>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Diffstat (limited to 'fs/nfsd/state.h')
| -rw-r--r-- | fs/nfsd/state.h | 5 |
1 files changed, 1 insertions, 4 deletions
diff --git a/fs/nfsd/state.h b/fs/nfsd/state.h index b1907979524c..acb9792d8273 100644 --- a/fs/nfsd/state.h +++ b/fs/nfsd/state.h @@ -68,6 +68,7 @@ struct nfsd4_callback { struct nfs4_client *cb_clp; struct rpc_message cb_msg; #define NFSD4_CALLBACK_RUNNING (0) +#define NFSD4_CALLBACK_WAKE (1) unsigned long cb_flags; const struct nfsd4_callback_ops *cb_ops; struct work_struct cb_work; @@ -164,15 +165,11 @@ struct nfs4_cb_fattr { struct timespec64 ncf_cb_mtime; struct timespec64 ncf_cb_atime; - unsigned long ncf_cb_flags; bool ncf_file_modified; u64 ncf_initial_cinfo; u64 ncf_cur_fsize; }; -/* bits for ncf_cb_flags */ -#define CB_GETATTR_BUSY 0 - /* * Represents a delegation stateid. The nfs4_client holds references to these * and they are put when it is being destroyed or when the delegation is |
