mirror of
https://github.com/torvalds/linux.git
synced 2026-06-07 14:04:54 +02:00
NFS/pNFS: Don't call pnfs_free_bucket_lseg() before removing the request
commit1757655d78upstream. In pnfs_generic_clear_request_commit(), we try calling pnfs_free_bucket_lseg() before we remove the request from the DS bucket. That will always fail, since the point is to test for whether or not that bucket is empty. Fixes:c84bea5944("NFS/pNFS: Simplify bucket layout segment reference counting") Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
e6ae16467a
commit
067aefcdfc
|
|
@ -78,22 +78,18 @@ void
|
|||
pnfs_generic_clear_request_commit(struct nfs_page *req,
|
||||
struct nfs_commit_info *cinfo)
|
||||
{
|
||||
struct pnfs_layout_segment *freeme = NULL;
|
||||
struct pnfs_commit_bucket *bucket = NULL;
|
||||
|
||||
if (!test_and_clear_bit(PG_COMMIT_TO_DS, &req->wb_flags))
|
||||
goto out;
|
||||
cinfo->ds->nwritten--;
|
||||
if (list_is_singular(&req->wb_list)) {
|
||||
struct pnfs_commit_bucket *bucket;
|
||||
|
||||
if (list_is_singular(&req->wb_list))
|
||||
bucket = list_first_entry(&req->wb_list,
|
||||
struct pnfs_commit_bucket,
|
||||
written);
|
||||
freeme = pnfs_free_bucket_lseg(bucket);
|
||||
}
|
||||
struct pnfs_commit_bucket, written);
|
||||
out:
|
||||
nfs_request_remove_commit_list(req, cinfo);
|
||||
pnfs_put_lseg(freeme);
|
||||
if (bucket)
|
||||
pnfs_put_lseg(pnfs_free_bucket_lseg(bucket));
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(pnfs_generic_clear_request_commit);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user