On Fri, Jan 05, 2024 at 07:04:02AM +0000, 陈 晟祺 wrote:

Hi,

> > zfs-dkms is the failsafe in case the zfs-modules-<kernelversion> package is 
> > *not* installed
> > (for example, because this is the first slow box I'm installing this kernel 
> > or this version of
> > zfs-dkms on and I don't yet have a corresponding zfs-modules package).
> 
> Let's imagine you install modules pkg first, then dkms pkg, which skips 
> building because you have
> "same" modules installed. After some days you accidentally uninstalled the 
> modules pkg, then how
> would the dkms pkg know and start the building? There is no such mechanism 
> according to my knowledge.

I'd like to start by saying that installing a zfs-modules-<kernelversion> 
package is something only few people would probably do, people who have good 
reasons for going off the beaten path.

I submit that it's not unreasonable to expect such people to be extra careful 
and be aware of the risks inherent in what they are doing.

That said, I suppose a dpkg trigger could be used; or the postrm script of the 
zfs-modules-<kernelversion> package could trigger the module build if zfs-dkms 
is installed. But frankly, I'm a great believer in allowing people to shoot 
themselves in the foot if they so desire. Expert features (which this would be) 
don't call for nanny automation.

> Even though such mechanism can be implemented by dkms, let's dig deeper into 
> details: how would dkms
> know that your prebuilt version and dkms source files are "the exact same" 
> and decide to skip? Designing
> such a mechanism would be either cumbersome for developers, or confusing for 
> users, I suppose.

I don't think it needs to do that. If the zfs-modules-<kernelversion> package 
is installed, that means the admin is taking care of things.

If they have outdated kernel modules installed, it's their problem and not up 
to dkms or zfs-dkms maintainers to fix for them. You don't have to do 
everything for everyone.

I'd say it would be sufficient to document that installing a 
zfs-modules-<kernelversion> package is not officially supported, and has the 
following consequences:

 1. zfs-dkms won't build a new module for <kernelversion>;
 2. if you subsequently remove zfs-modules-<kernelversion>, you'll be left 
without a zfs module for <kernelversion> unless you trigger a zfs-dkms build 
yourself.

FWIW, you could also look at it from a green angle: building the modules when 
it's not necessary consumes extra electricity and is thus wasteful.

Best regards,

András

-- 
                  I break into song if I can't find the key.

Reply via email to