Revert "NFS: Fix O_DIRECT locking issues"

This reverts commit 4d98038e5b which is
commit 7c6339322c upstream.

There are reported NFS problems in the 6.1.56 release, so revert a set
of NFS patches to hopefully resolve the issue.

Reported-by: poester <poester@internetbrands.com>
Link: https://lore.kernel.org/r/20231012165439.137237-2-kernel@linuxace.com
Reported-by: Daniel Díaz <daniel.diaz@linaro.org>
Link: https://lore.kernel.org/r/2023100755-livestock-barcode-fe41@gregkh
Cc: Trond Myklebust <trond.myklebust@hammerspace.com>
Cc: Anna Schumaker <Anna.Schumaker@Netapp.com>
Cc: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Greg Kroah-Hartman 2023-10-12 19:41:41 +02:00
parent ebf5841ac1
commit b0cee281c4
1 changed files with 4 additions and 4 deletions

View File

@ -555,7 +555,7 @@ static void nfs_direct_write_reschedule(struct nfs_direct_req *dreq)
/* Bump the transmission count */ /* Bump the transmission count */
req->wb_nio++; req->wb_nio++;
if (!nfs_pageio_add_request(&desc, req)) { if (!nfs_pageio_add_request(&desc, req)) {
spin_lock(&dreq->lock); spin_lock(&cinfo.inode->i_lock);
if (dreq->error < 0) { if (dreq->error < 0) {
desc.pg_error = dreq->error; desc.pg_error = dreq->error;
} else if (desc.pg_error != -EAGAIN) { } else if (desc.pg_error != -EAGAIN) {
@ -565,7 +565,7 @@ static void nfs_direct_write_reschedule(struct nfs_direct_req *dreq)
dreq->error = desc.pg_error; dreq->error = desc.pg_error;
} else } else
dreq->flags = NFS_ODIRECT_RESCHED_WRITES; dreq->flags = NFS_ODIRECT_RESCHED_WRITES;
spin_unlock(&dreq->lock); spin_unlock(&cinfo.inode->i_lock);
break; break;
} }
nfs_release_request(req); nfs_release_request(req);
@ -875,9 +875,9 @@ static ssize_t nfs_direct_write_schedule_iovec(struct nfs_direct_req *dreq,
/* If the error is soft, defer remaining requests */ /* If the error is soft, defer remaining requests */
nfs_init_cinfo_from_dreq(&cinfo, dreq); nfs_init_cinfo_from_dreq(&cinfo, dreq);
spin_lock(&dreq->lock); spin_lock(&cinfo.inode->i_lock);
dreq->flags = NFS_ODIRECT_RESCHED_WRITES; dreq->flags = NFS_ODIRECT_RESCHED_WRITES;
spin_unlock(&dreq->lock); spin_unlock(&cinfo.inode->i_lock);
nfs_unlock_request(req); nfs_unlock_request(req);
nfs_mark_request_commit(req, NULL, &cinfo, 0); nfs_mark_request_commit(req, NULL, &cinfo, 0);
desc.pg_error = 0; desc.pg_error = 0;