virtiofs: export filesystem tags through sysfs
authorStefan Hajnoczi <stefanha@redhat.com>
Tue, 13 Feb 2024 00:11:48 +0000 (19:11 -0500)
committerMiklos Szeredi <mszeredi@redhat.com>
Fri, 23 Feb 2024 08:40:26 +0000 (09:40 +0100)
commita8f62f50b4e4ea92a938fca2ec1bd108d7f210e9
tree59e108ad413c9f6663fcf3b4dc2ddd60c03f985d
parent40488cc16f7ea0d193a4e248f0d809c25cc377db
virtiofs: export filesystem tags through sysfs

The virtiofs filesystem is mounted using a "tag" which is exported by
the virtiofs device:

  # mount -t virtiofs <tag> /mnt

The virtiofs driver knows about all the available tags but these are
currently not exported to user space.

People have asked for these tags to be exported to user space. Most
recently Lennart Poettering has asked for it as he wants to scan the
tags and mount virtiofs automatically in certain cases.

https://gitlab.com/virtio-fs/virtiofsd/-/issues/128

This patch exports tags at /sys/fs/virtiofs/<N>/tag where N is the id of
the virtiofs device. The filesystem tag can be obtained by reading this
"tag" file.

There is also a symlink at /sys/fs/virtiofs/<N>/device that points to
the virtiofs device that exports this tag.

This patch converts the existing struct virtio_fs into a full kobject.
It already had a refcount so it's an easy change. The virtio_fs objects
can then be exposed in a kset at /sys/fs/virtiofs/. Note that virtio_fs
objects may live slightly longer than we wish for them to be exposed to
userspace, so kobject_del() is called explicitly when the underlying
virtio_device is removed. The virtio_fs object is freed when all
references are dropped (e.g. active mounts) but disappears as soon as
the virtiofs device is gone.

Originally-by: Vivek Goyal <vgoyal@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Vivek Goyal <vgoyal@redhat.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Documentation/ABI/testing/sysfs-fs-virtiofs [new file with mode: 0644]
fs/fuse/virtio_fs.c