diff options
author | Chuck Lever <chuck.lever@oracle.com> | 2023-03-06 10:43:47 -0500 |
---|---|---|
committer | Chuck Lever <chuck.lever@oracle.com> | 2023-03-07 09:33:42 -0500 |
commit | fd9a2e1d513823e840960cb3bc26d8b7749d4ac2 (patch) | |
tree | b19547fd995df9dbe01c92d40606877c807e3cfb | |
parent | fb5b855d9f34927579baa0a20b4d0d8ea3740abd (diff) | |
download | lwn-fd9a2e1d513823e840960cb3bc26d8b7749d4ac2.tar.gz lwn-fd9a2e1d513823e840960cb3bc26d8b7749d4ac2.zip |
NFSD: Protect against filesystem freezing
Flole observes this WARNING on occasion:
[1210423.486503] WARNING: CPU: 8 PID: 1524732 at fs/ext4/ext4_jbd2.c:75 ext4_journal_check_start+0x68/0xb0
Reported-by: <flole@flole.de>
Suggested-by: Jan Kara <jack@suse.cz>
Link: https://bugzilla.kernel.org/show_bug.cgi?id=217123
Fixes: 73da852e3831 ("nfsd: use vfs_iter_read/write")
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Reviewed-by: Jan Kara <jack@suse.cz>
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
-rw-r--r-- | fs/nfsd/vfs.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c index 21d5209f6e04..ba34a31a7c70 100644 --- a/fs/nfsd/vfs.c +++ b/fs/nfsd/vfs.c @@ -1104,7 +1104,9 @@ nfsd_vfs_write(struct svc_rqst *rqstp, struct svc_fh *fhp, struct nfsd_file *nf, since = READ_ONCE(file->f_wb_err); if (verf) nfsd_copy_write_verifier(verf, nn); + file_start_write(file); host_err = vfs_iter_write(file, &iter, &pos, flags); + file_end_write(file); if (host_err < 0) { nfsd_reset_write_verifier(nn); trace_nfsd_writeverf_reset(nn, rqstp, host_err); |