From: "Michael S. Tsirkin" <mst@redhat.com>
To: Max Gurtovoy <mgurtovoy@nvidia.com>
Cc: stefanha@redhat.com, virtualization@lists.linux.dev,
"Miklos Szeredi" <mszeredi@redhat.com>,
"Vivek Goyal" <vgoyal@redhat.com>,
kvm@vger.kernel.org, "Jingbo Xu" <jefflexu@linux.alibaba.com>,
pgootzen@nvidia.com, smalin@nvidia.com, larora@nvidia.com,
ialroy@nvidia.com, oren@nvidia.com, izach@nvidia.com,
"Eugenio Pérez" <eperezma@redhat.com>
Subject: Re: [PATCH v1 1/2] virtio_fs: introduce virtio_fs_put_locked helper
Date: Thu, 5 Sep 2024 08:11:47 -0400 [thread overview]
Message-ID: <20240905081133-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20240825130716.9506-1-mgurtovoy@nvidia.com>
Cc: "Eugenio Pérez" <eperezma@redhat.com>
On Sun, Aug 25, 2024 at 04:07:15PM +0300, Max Gurtovoy wrote:
> Introduce a new helper function virtio_fs_put_locked to encapsulate the
> common pattern of releasing a virtio_fs reference while holding a lock.
> The existing virtio_fs_put helper will be used to release a virtio_fs
> reference while not holding a lock.
>
> Also add an assertion in case the lock is not taken when it should.
>
> Reviewed-by: Idan Zach <izach@nvidia.com>
> Reviewed-by: Shai Malin <smalin@nvidia.com>
> Signed-off-by: Max Gurtovoy <mgurtovoy@nvidia.com>
> ---
> fs/fuse/virtio_fs.c | 17 +++++++++++------
> 1 file changed, 11 insertions(+), 6 deletions(-)
>
> diff --git a/fs/fuse/virtio_fs.c b/fs/fuse/virtio_fs.c
> index dd5260141615..43f7be1d7887 100644
> --- a/fs/fuse/virtio_fs.c
> +++ b/fs/fuse/virtio_fs.c
> @@ -201,18 +201,25 @@ static const struct kobj_type virtio_fs_ktype = {
> };
>
> /* Make sure virtiofs_mutex is held */
> -static void virtio_fs_put(struct virtio_fs *fs)
> +static void virtio_fs_put_locked(struct virtio_fs *fs)
> {
> + lockdep_assert_held(&virtio_fs_mutex);
> +
> kobject_put(&fs->kobj);
> }
>
> +static void virtio_fs_put(struct virtio_fs *fs)
> +{
> + mutex_lock(&virtio_fs_mutex);
> + virtio_fs_put_locked(fs);
> + mutex_unlock(&virtio_fs_mutex);
> +}
> +
> static void virtio_fs_fiq_release(struct fuse_iqueue *fiq)
> {
> struct virtio_fs *vfs = fiq->priv;
>
> - mutex_lock(&virtio_fs_mutex);
> virtio_fs_put(vfs);
> - mutex_unlock(&virtio_fs_mutex);
> }
>
> static void virtio_fs_drain_queue(struct virtio_fs_vq *fsvq)
> @@ -1052,7 +1059,7 @@ static void virtio_fs_remove(struct virtio_device *vdev)
>
> vdev->priv = NULL;
> /* Put device reference on virtio_fs object */
> - virtio_fs_put(fs);
> + virtio_fs_put_locked(fs);
> mutex_unlock(&virtio_fs_mutex);
> }
>
> @@ -1596,9 +1603,7 @@ static int virtio_fs_get_tree(struct fs_context *fsc)
>
> out_err:
> kfree(fc);
> - mutex_lock(&virtio_fs_mutex);
> virtio_fs_put(fs);
> - mutex_unlock(&virtio_fs_mutex);
> return err;
> }
>
> --
> 2.18.1
next prev parent reply other threads:[~2024-09-05 12:11 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-25 13:07 [PATCH v1 1/2] virtio_fs: introduce virtio_fs_put_locked helper Max Gurtovoy
2024-08-25 13:07 ` [PATCH v1 2/2] virtio_fs: add sysfs entries for queue information Max Gurtovoy
2024-09-05 12:12 ` Michael S. Tsirkin
2024-09-05 12:11 ` Michael S. Tsirkin [this message]
2024-09-05 14:17 ` [PATCH v1 1/2] virtio_fs: introduce virtio_fs_put_locked helper Stefan Hajnoczi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240905081133-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=eperezma@redhat.com \
--cc=ialroy@nvidia.com \
--cc=izach@nvidia.com \
--cc=jefflexu@linux.alibaba.com \
--cc=kvm@vger.kernel.org \
--cc=larora@nvidia.com \
--cc=mgurtovoy@nvidia.com \
--cc=mszeredi@redhat.com \
--cc=oren@nvidia.com \
--cc=pgootzen@nvidia.com \
--cc=smalin@nvidia.com \
--cc=stefanha@redhat.com \
--cc=vgoyal@redhat.com \
--cc=virtualization@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.