-
Bug
-
Resolution: Unresolved
-
Minor
-
None
-
Lustre 2.15.8
-
None
-
First noticed on Rocky 8 / ppc64le / Lustre 2.12, but is a general issue.
-
3
-
9223372036854775807
Hi,
We manage the Lustre kernel modules on our clients using the lustre-client-dkms rpm package and have noticed that it incorrectly declares it "provides" lustre-client, when it does not.
If lustre-client-dkms is installed before lustre-client, idempotent configuration management tools like puppet can believe that lustre-client has already been installed as it has already been "provided".
Seems to be a problem in 2.12.x, 2.15.x, 2.17.x, etc.
e.g.
# create a basic yum repository cd /root/packages wget https://downloads.whamcloud.com/public/lustre/latest-release/el8.10/client/RPMS/x86_64/lustre-client-2.15.8-1.el8.x86_64.rpm wget https://downloads.whamcloud.com/public/lustre/latest-release/el8.10/client/RPMS/x86_64/lustre-client-dkms-2.15.8-1.el8.noarch.rpm wget https://yum.puppetlabs.com/puppet7/el/8/x86_64/puppet-agent-7.9.0-1.el8.x86_64.rpm createrepo . cat > /etc/yum.repos.d/packages.repo <<EOF [packages] name = local packages baseurl = file:///root/packages enabled = 1 gpgcheck = 0 EOF # install puppet dnf install puppet-agent # ATTEMPT 1 # ask puppet to install lustre-client-dkms and then lustre-client [root@test ~]# puppet resource package lustre-client-dkms ensure=installed Notice: /Package[lustre-client-dkms]/ensure: created package { 'lustre-client-dkms': ensure => '2.15.8-1.el8', provider => 'dnf', } [root@test ~]# rpm -q -a | grep lustre lustre-client-dkms-2.15.8-1.el8.noarch [root@test ~]# puppet resource package lustre-client ensure=installed package { 'lustre-client': ensure => '2.15.8-1.el8', provider => 'dnf', } # ATTEMPT 1 RESULT: only lustre-client-dkms installed [root@test ~]# rpm -q -a | grep lustre lustre-client-dkms-2.15.8-1.el8.noarch # reset... [root@test ~]# rpm -e lustre-client-dkms lustre-client [root@test ~]# rpm -q -a | grep lustre # ATTEMPT 2 # ask puppet to install lustre-client and then lustre-client-dkms [root@slurm ~]# puppet resource package lustre-client ensure=installed Notice: /Package[lustre-client]/ensure: created package { 'lustre-client': ensure => '2.15.8-1.el8', provider => 'dnf', } [root@slurm ~]# rpm -q -a | grep lustre lustre-client-2.15.8-1.el8.x86_64 lustre-client-dkms-2.15.8-1.el8.noarch [root@slurm ~]# puppet resource package lustre-client-dkms ensure=installed package { 'lustre-client-dkms': ensure => '2.15.8-1.el8', provider => 'dnf', } # ATTEMPT 2 RESULT: both lustre-client and lustre-client-dkms installed [root@slurm ~]# rpm -q -a | grep lustre lustre-client-2.15.8-1.el8.x86_64 lustre-client-dkms-2.15.8-1.el8.noarch
Problem appears to stem from lustre-dkms.spec.in containing:
%if %{with servers} %if %{with zfs} Provides: %{lustre_name}-osd-zfs = %{version} Provides: kmod-%{lustre_name}-osd-zfs = %{version} Provides: %{lustre_name}-osd-zfs-mount = %{version} %endif %if %{with ldiskfs} Provides: %{lustre_name}-osd-ldiskfs = %{version} Provides: kmod-%{lustre_name}-osd-ldiskfs = %{version} Provides: %{lustre_name}-osd-ldiskfs-mount = %{version} %endif Provides: %{lustre_name}-osd %else Provides: %{lustre_name}-client %endif
Ignoring the "with servers" case (because I've never used it), the "Provides: %{lustre_name}client" line probably needs to be changed to "Provides: kmod%{lustre_name}-client" - seems to do the trick for us.