Bug 1086447 - clusterlvm support pulled by default
clusterlvm support pulled by default
Status: RESOLVED FIXED
Classification: openSUSE
Product: openSUSE Tumbleweed
Classification: openSUSE
Component: Basesystem
Current
Other Other
: P5 - None : Normal (vote)
: ---
Assigned To: Luciano Santos
E-mail List
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2018-03-22 11:14 UTC by Marcus Rückert
Modified: 2021-10-04 12:35 UTC (History)
6 users (show)

See Also:
Found By: ---
Services Priority:
Business Priority:
Blocker: ---
Marketing QA Status: ---
IT Deployment: ---
zzhou: needinfo? (luc14n0)


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Marcus Rückert 2018-03-22 11:14:26 UTC
clusterlvm support pulled by default with the following dependency chain:

libblockdev2 lvm2-clvm lvm2-cmirrord corosync

Could the Requires for lvm2-clvm be downgraded to a Recommends?
Comment 1 Tomáš Chvátal 2018-03-22 19:07:16 UTC
Tbh even recommends are quite draconic, you don't wanna clustering on desktop/laptop ever:

arcarius:~ #  zypper rm corosync
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following application is going to be REMOVED:
  "GNOME Disks"

The following 26 packages are going to be REMOVED:
  bcache-tools corosync gnome-disk-utility gnome-disk-utility-lang libatasmart-utils libatasmart4 libblockdev libblockdev2 libbytesize-lang libbytesize1 libcfg6 libcmap4 libcorosync_common4 libcpg4 libdlm3 libqb0 libquorum5 libsam4 libtotem_pg5 libudisks2_btrfs libvolume_key1
  libvotequorum8 lvm2-clvm lvm2-cmirrord udisks2 udisks2-lang
Comment 4 Tomáš Chvátal 2018-03-23 12:17:52 UTC
even tho the main reason for this is udisks2 update the dependency itself really comes from libblockdev lines 77 and following.
Comment 5 Luciano Santos 2018-03-23 15:31:25 UTC
A more detailed dep chain is: udisks2 lvm2 module-->libblockdev lvm-dbus plugin-->lvm2-clvm-->lvm2-cmirrord-->corosync. After discussing with Dominique, we decided to bundle all libblockdev plugins together because udisks2 uses a mechanism to look for libbd plugins availability and initialize them, a mechanism provided by libbd but it relies on packaging requirement to pull the plugins.  

If offering clusterlvm support by default is a not-wanted behavior we can modularize libbd plugins again and use Requires tags to pull its specific plugins for each udisks2 modules.  

Another option, and the quickest one, is to remove udisks2 lvm2 module.
Comment 6 Thomas Blume 2018-03-23 16:50:32 UTC
(In reply to Luciano Santos from comment #5)
> Another option, and the quickest one, is to remove udisks2 lvm2 module.

Hm, the udisks2 specfile at (Base:System/udisks2) shows that the lvm2 module isn't the only one with a Requires to libblockdev.
There are also the btrfs, lsm and zram module that have it. There is even a Requires in the the general udisks2 dependencies.
So removing the lvm2 module alone won't help.
I'm a bit worried about the impact when I remove all libblockdev dependencies.
Do you think it is feasible?
Comment 7 Luciano Santos 2018-03-23 23:48:59 UTC
(In reply to Thomas Blume from comment #6)
> (In reply to Luciano Santos from comment #5)
> > Another option, and the quickest one, is to remove udisks2 lvm2 module.
> 
> Hm, the udisks2 specfile at (Base:System/udisks2) shows that the lvm2 module
> isn't the only one with a Requires to libblockdev.
> There are also the btrfs, lsm and zram module that have it. There is even a
> Requires in the the general udisks2 dependencies.
> So removing the lvm2 module alone won't help.
> I'm a bit worried about the impact when I remove all libblockdev
> dependencies.
> Do you think it is feasible?

Whoops, I forgot that now the Requires are all libblockdev rather than its plugins.  

And no, it's not feasible. Libblockdev is the udisks2 low-level part. Now I see only one way of making things minimal if clusterlvm support by default is not wanted (which I'm supposing it isn't): split libblockdev plugins again and use the due Requires in udisks2 modules to pull only the minimal things it needs to run, that is, libblocked lib and one or two plugins.
Comment 8 Thomas Blume 2018-03-26 11:42:43 UTC
(In reply to Luciano Santos from comment #7)
> And no, it's not feasible. Libblockdev is the udisks2 low-level part. Now I
> see only one way of making things minimal if clusterlvm support by default
> is not wanted (which I'm supposing it isn't): split libblockdev plugins
> again and use the due Requires in udisks2 modules to pull only the minimal
> things it needs to run, that is, libblocked lib and one or two plugins.

Ok, just let me know the name of the subpackage(s) to pull when you have finished the split (in case it differs from the current name).
Comment 9 Luciano Santos 2018-03-28 03:24:37 UTC
(In reply to Thomas Blume from comment #8)
> Ok, just let me know the name of the subpackage(s) to pull when you have
> finished the split (in case it differs from the current name).

I made the due changes to libblockdev and udisks2, which can be seen in my Factory home's subproject. I will forward libblockdev to the devel project as soon as I review the changes. But it can be already tested.
Comment 10 Luciano Santos 2018-04-13 01:22:08 UTC
If there's no objections I will forward my changes to Factory. Now when issuing `zypper in udisks2` these are the dependency chain we get:  

libbd_btrfs2 libbd_crypto2 libbd_fs2 libbd_mdraid2 libbd_part2 libbd_swap2 libbd_utils2 libblockdev libblockdev2 libpipewire-0_1-0 libspa-lib0 libudisks2-0 libudisks2-0_btrfs udisks2  

libbd_btrfs2 plugin being recommended and the rest, required. I used Provides tag for the plugins with the pattern "libblockdev-pluginname" now that they are explicitly being required and they are standalone libraries as well.  

What do you think Thomas Blume?
Comment 11 Thomas Blume 2018-04-13 05:27:16 UTC
(In reply to Luciano Santos from comment #10)
> If there's no objections I will forward my changes to Factory. Now when
> issuing `zypper in udisks2` these are the dependency chain we get:  
> 
> libbd_btrfs2 libbd_crypto2 libbd_fs2 libbd_mdraid2 libbd_part2 libbd_swap2
> libbd_utils2 libblockdev libblockdev2 libpipewire-0_1-0 libspa-lib0
> libudisks2-0 libudisks2-0_btrfs udisks2  
> 
> libbd_btrfs2 plugin being recommended and the rest, required. I used
> Provides tag for the plugins with the pattern "libblockdev-pluginname" now
> that they are explicitly being required and they are standalone libraries as
> well.  
> 
> What do you think Thomas Blume?

Looks ok for me, I have no objections.
Comment 12 Swamp Workflow Management 2018-04-13 13:50:05 UTC
This is an autogenerated message for OBS integration:
This bug (1086447) was mentioned in
https://build.opensuse.org/request/show/596357 Factory / libblockdev
Comment 13 Luciano Santos 2018-04-23 12:59:43 UTC
Both Libblockdev and Udisks2 have hit Factory.
Comment 14 Roger Zhou 2019-09-02 09:43:15 UTC
Just come across to this bug,

@Luciano, FYI, openSUSE Factory is going to remove lvm2-clvm in the effort to upgrade to lvm2 v2_03_05, this will break libblockdev to "Requires" it.