| From 5e8021d431eda66a1cc8204375c624f7d14c48a9 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 3 Oct 2024 15:35:02 -0400 |
| Subject: nfs/localio: eliminate unnecessary kref in nfs_local_fsync_ctx |
| |
| From: Mike Snitzer <snitzer@kernel.org> |
| |
| [ Upstream commit 894f5c5593cdb57841318597a800ad1d3cb45a52 ] |
| |
| nfs_local_commit() doesn't need async cleanup of nfs_local_fsync_ctx, |
| so there is no need to use a kref. |
| |
| Signed-off-by: Mike Snitzer <snitzer@kernel.org> |
| Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com> |
| Stable-dep-of: 9bb0060f7860 ("NFS/localio: use GFP_NOIO and non-memreclaim workqueue in nfs_local_commit") |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| fs/nfs/localio.c | 20 +++----------------- |
| 1 file changed, 3 insertions(+), 17 deletions(-) |
| |
| diff --git a/fs/nfs/localio.c b/fs/nfs/localio.c |
| index 82a053304ad59..70dfcca96f922 100644 |
| --- a/fs/nfs/localio.c |
| +++ b/fs/nfs/localio.c |
| @@ -43,7 +43,6 @@ struct nfs_local_fsync_ctx { |
| struct nfsd_file *localio; |
| struct nfs_commit_data *data; |
| struct work_struct work; |
| - struct kref kref; |
| struct completion *done; |
| }; |
| static void nfs_local_fsync_work(struct work_struct *work); |
| @@ -775,30 +774,17 @@ nfs_local_fsync_ctx_alloc(struct nfs_commit_data *data, |
| ctx->localio = localio; |
| ctx->data = data; |
| INIT_WORK(&ctx->work, nfs_local_fsync_work); |
| - kref_init(&ctx->kref); |
| ctx->done = NULL; |
| } |
| return ctx; |
| } |
| |
| -static void |
| -nfs_local_fsync_ctx_kref_free(struct kref *kref) |
| -{ |
| - kfree(container_of(kref, struct nfs_local_fsync_ctx, kref)); |
| -} |
| - |
| -static void |
| -nfs_local_fsync_ctx_put(struct nfs_local_fsync_ctx *ctx) |
| -{ |
| - kref_put(&ctx->kref, nfs_local_fsync_ctx_kref_free); |
| -} |
| - |
| static void |
| nfs_local_fsync_ctx_free(struct nfs_local_fsync_ctx *ctx) |
| { |
| nfs_local_release_commit_data(ctx->localio, ctx->data, |
| ctx->data->task.tk_ops); |
| - nfs_local_fsync_ctx_put(ctx); |
| + kfree(ctx); |
| } |
| |
| static void |
| @@ -831,7 +817,7 @@ int nfs_local_commit(struct nfsd_file *localio, |
| } |
| |
| nfs_local_init_commit(data, call_ops); |
| - kref_get(&ctx->kref); |
| + |
| if (how & FLUSH_SYNC) { |
| DECLARE_COMPLETION_ONSTACK(done); |
| ctx->done = &done; |
| @@ -839,6 +825,6 @@ int nfs_local_commit(struct nfsd_file *localio, |
| wait_for_completion(&done); |
| } else |
| queue_work(nfsiod_workqueue, &ctx->work); |
| - nfs_local_fsync_ctx_put(ctx); |
| + |
| return 0; |
| } |
| -- |
| 2.51.0 |
| |