Re: [PATCH v2] vhost/vsock: specify module version
From: Luis Chamberlain
Date: Thu Oct 03 2024 - 15:48:37 EST
+ linux-modules@xxxxxxxxxxxxxxx + Lucas
On Mon, Sep 30, 2024 at 07:03:52PM +0200, Aleksandr Mikhalitsyn wrote:
> On Mon, Sep 30, 2024 at 5:43 PM Stefano Garzarella <sgarzare@xxxxxxxxxx> wrote:
> >
> > Hi Aleksandr,
> >
> > On Mon, Sep 30, 2024 at 04:43:36PM GMT, Aleksandr Mikhalitsyn wrote:
> > >On Mon, Sep 30, 2024 at 4:27 PM Stefano Garzarella
> > ><sgarzare@xxxxxxxxxx> wrote:
> > >>
> > >> On Sun, Sep 29, 2024 at 08:21:03PM GMT, Alexander Mikhalitsyn wrote:
> > >> >Add an explicit MODULE_VERSION("0.0.1") specification for the vhost_vsock module.
> > >> >
> > >> >It is useful because it allows userspace to check if vhost_vsock is there when it is
> > >> >configured as a built-in.
> > >> >
> > >> >This is what we have *without* this change and when vhost_vsock is
> > >> >configured
> > >> >as a module and loaded:
> > >> >
> > >> >$ ls -la /sys/module/vhost_vsock
> > >> >total 0
> > >> >drwxr-xr-x 5 root root 0 Sep 29 19:00 .
> > >> >drwxr-xr-x 337 root root 0 Sep 29 18:59 ..
> > >> >-r--r--r-- 1 root root 4096 Sep 29 20:05 coresize
> > >> >drwxr-xr-x 2 root root 0 Sep 29 20:05 holders
> > >> >-r--r--r-- 1 root root 4096 Sep 29 20:05 initsize
> > >> >-r--r--r-- 1 root root 4096 Sep 29 20:05 initstate
> > >> >drwxr-xr-x 2 root root 0 Sep 29 20:05 notes
> > >> >-r--r--r-- 1 root root 4096 Sep 29 20:05 refcnt
> > >> >drwxr-xr-x 2 root root 0 Sep 29 20:05 sections
> > >> >-r--r--r-- 1 root root 4096 Sep 29 20:05 srcversion
> > >> >-r--r--r-- 1 root root 4096 Sep 29 20:05 taint
> > >> >--w------- 1 root root 4096 Sep 29 19:00 uevent
> > >> >
> > >> >When vhost_vsock is configured as a built-in there is *no* /sys/module/vhost_vsock directory at all.
> > >> >And this looks like an inconsistency.
> > >> >
> > >> >With this change, when vhost_vsock is configured as a built-in we get:
> > >> >$ ls -la /sys/module/vhost_vsock/
> > >> >total 0
> > >> >drwxr-xr-x 2 root root 0 Sep 26 15:59 .
> > >> >drwxr-xr-x 100 root root 0 Sep 26 15:59 ..
> > >> >--w------- 1 root root 4096 Sep 26 15:59 uevent
> > >> >-r--r--r-- 1 root root 4096 Sep 26 15:59 version
> > >> >
> > >> >Signed-off-by: Alexander Mikhalitsyn <aleksandr.mikhalitsyn@xxxxxxxxxxxxx>
> > >> >---
> > >> > drivers/vhost/vsock.c | 1 +
> > >> > 1 file changed, 1 insertion(+)
> > >> >
> > >> >diff --git a/drivers/vhost/vsock.c b/drivers/vhost/vsock.c
> > >> >index 802153e23073..287ea8e480b5 100644
> > >> >--- a/drivers/vhost/vsock.c
> > >> >+++ b/drivers/vhost/vsock.c
> > >> >@@ -956,6 +956,7 @@ static void __exit vhost_vsock_exit(void)
> > >> >
> > >> > module_init(vhost_vsock_init);
> > >> > module_exit(vhost_vsock_exit);
> > >> >+MODULE_VERSION("0.0.1");
> > >
> > >Hi Stefano,
> > >
> > >>
> > >> I was looking at other commits to see how versioning is handled in order
> > >> to make sense (e.g. using the same version of the kernel), and I saw
> > >> many commits that are removing MODULE_VERSION because they say it
> > >> doesn't make sense in in-tree modules.
> > >
> > >Yeah, I agree absolutely. I guess that's why all vhost modules have
> > >had version 0.0.1 for years now
> > >and there is no reason to increment version numbers at all.
> >
> > Yeah, I see.
> >
> > >
> > >My proposal is not about version itself, having MODULE_VERSION
> > >specified is a hack which
> > >makes a built-in module appear in /sys/modules/ directory.
> >
> > Hmm, should we base a kind of UAPI on a hack?
>
> Good question ;-)
>
> >
> > I don't want to block this change, but I just wonder why many modules
> > are removing MODULE_VERSION and we are adding it instead.
>
> Yep, that's a good point. I didn't know that other modules started to
> remove MODULE_VERSION.
MODULE_VERSION was a stupid idea and there is no real value to it.
I agree folks should just remove its use and we remove it.
> > >I spent some time reading the code in kernel/params.c and
> > >kernel/module/sysfs.c to figure out
> > >why there is no /sys/module/vhost_vsock directory when vhost_vsock is
> > >built-in. And figured out the
> > >precise conditions which must be satisfied to have a module listed in
> > >/sys/module.
> > >
> > >To be more precise, built-in module X appears in /sys/module/X if one
> > >of two conditions are met:
> > >- module has MODULE_VERSION declared
> > >- module has any parameter declared
> >
> > At this point my question is, should we solve the problem higher and
> > show all the modules in /sys/modules, either way?
Because if you have no attribute to list why would you? The thing you
are trying to ask is different: "is this a module built-in" and for that we
have userpsace solution already suggested: /lib/modules/*/modules.builtin
> Probably, yes. We can ask Luis Chamberlain's opinion on this one.
>
> +cc Luis Chamberlain <mcgrof@xxxxxxxxxx>
Please use linux-modules in the future as I'm not the only maintainer.
Luis