Sync from SUSE:SLFO:Main multipath-tools revision c4961fef68993b7c8a7fc517737cc1ff

This commit is contained in:
Adrian Schröter 2024-05-03 16:53:01 +02:00
commit 31ff46d79e
13 changed files with 3861 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

14
_service Normal file
View File

@ -0,0 +1,14 @@
<?xml version="1.0"?>
<services>
<service name="obs_scm" mode="manual">
<param name="scm">git</param>
<param name="url">https://github.com/openSUSE/multipath-tools.git</param>
<param name="filename">multipath-tools</param>
<param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@+suse.%h</param>
<param name="revision">factory</param>
<param name="match-tag">0.[0-9].[0-9]</param>
<param name="changesgenerate">enable</param>
</service>
<service name="set_version" mode="manual"/>
<service mode="buildtime" name="tar"/>
</services>

4
_servicedata Normal file
View File

@ -0,0 +1,4 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/openSUSE/multipath-tools.git</param>
<param name="changesrevision">f07325e85d5d9444ac4c816f75d2ce67af52af93</param></service></servicedata>

3
dm-parts.conf Normal file
View File

@ -0,0 +1,3 @@
# This file has recently been added to kpartx.
# Not all dracut versions know about it.
install_items+=" /usr/lib/udev/rules.d/11-dm-parts.rules "

13
dont-del-part-nodes.rules Normal file
View File

@ -0,0 +1,13 @@
# This system's udev rules support deletion of partition device nodes
# for disks which are members of multipath devices. That is useful
# to avoid using the member device partitions accidentally.
#
# See also 68-del-part-nodes.rules.
#
# On SUSE distributions, this feature is disabled by default, for
# backwards compatibility reasons, by means of this rule file.
# In order to enable the feature, copy this file to /etc/udev/rules.d
# and comment out the lines below.
SUBSYSTEM=="block", KERNEL=="sd*|dasd*|rbd*", ACTION=="add|change", \
ENV{DONT_DEL_PART_NODES}="1"

View File

@ -0,0 +1,41 @@
/*
* This is a minimal skeleton for code using libmpathpersist.
* Compile with "-lmpathpersist -lmultipath -ludev".
*
* Header files for libmultipath are intentionally not included
* in the multipath-tools-devel package, because libmultipath has
* no well defined API for external programs at this time.
*/
#include <mpath_persist.h>
#include <libudev.h>
struct udev *udev;
/*
* logsink determines where libmultipath log messages go
* 1 - log to syslog only
* -1 - log to syslog and stderr
* 0 - log to syslog and stderr, with timestamps
*/
int logsink;
static struct config *conf;
struct config *get_multipath_config(void) {
return conf;
}
void put_multipath_config(struct config* c)
{
}
int main(void)
{
udev = udev_new();
conf = mpath_lib_init();
if(!conf) {
udev_unref(udev);
return 1;
}
return 0;
}

26
libmpathpersist-example.c Normal file
View File

@ -0,0 +1,26 @@
/*
* This is a minimal skeleton for code using libmpathpersist.
* Compile with "-lmpathpersist -lmultipath -lmpathcmd".
*
* Header files for libmultipath are intentionally not included
* in the multipath-tools-devel package, because libmultipath has
* no well defined API for external programs at this time.
*
* With multipath-tools 0.8.6, the sample program can be drastically
* simplified, see below. Compare with libmpathpersist-example-old.c
* for 0.8.5 and older. Note that the old code can still be used.
*/
#include <mpath_persist.h>
#include <libudev.h>
struct config *conf;
int main(void)
{
conf = mpath_lib_init();
if(!conf) {
return 1;
}
return 0;
}

2
multipath-dracut.conf Normal file
View File

@ -0,0 +1,2 @@
# Make sure the tmpfiles entry exists in initramfs already
install_items+=" @TMPFILESDIR@/multipath.conf "

BIN
multipath-tools-0.9.6+71+suse.f07325e.obscpio (Stored with Git LFS) Normal file

Binary file not shown.

3412
multipath-tools.changes Normal file

File diff suppressed because it is too large Load Diff

4
multipath-tools.obsinfo Normal file
View File

@ -0,0 +1,4 @@
name: multipath-tools
version: 0.9.6+71+suse.f07325e
mtime: 1694069633
commit: f07325e85d5d9444ac4c816f75d2ce67af52af93

311
multipath-tools.spec Normal file
View File

@ -0,0 +1,311 @@
#
# spec file for package multipath-tools
#
# Copyright (c) 2022 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%global _lto_cflags %{nil}
%global _make_output_sync -Orecurse
# multipath-tools auto-detects support for -D_FORTFY_SOURCE.
# This will lead to a compilation error if the distro overrides
# -D_FORTIFY_SOURCE in optflags, unless we precede it with -U
%global mp_optflags %(echo %{optflags} | sed 's/-D_FORTIFY_SOURCE=[0-9]/-U_FORTIFY_SOURCE &/')
# Whether to build libdmmp - default YES
%bcond_without libdmmp
# Whether to run tests - default YES
%bcond_without check
# This should match the version in libdmmp/Makefile
%define _libdmmp_version 0.2.0
%define libdmmp_version %(echo %{_libdmmp_version} | tr . _)
Name: multipath-tools
Version: 0.9.6+71+suse.f07325e
Release: 0
Summary: Tools to Manage Multipathed Devices with the device-mapper
License: GPL-2.0-only AND GPL-3.0-or-later
Group: System/Base
URL: http://christophe.varoqui.free.fr/
Source: multipath-tools-%{version}.tar
Source1: multipath.conf
# SUSE policy: disable partition deletion by default
Source2: dont-del-part-nodes.rules
# Dracut conf file to make sure 11-dm-parts.rules is included in initrd
Source3: dm-parts.conf
Source4: libmpathpersist-example.c
Source5: libmpathpersist-example-old.c
Source6: multipath-dracut.conf
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%{?systemd_requires}
BuildRequires: libaio-devel
BuildRequires: pkgconfig(devmapper)
%if 0%{?with_libdmmp} == 1
BuildRequires: pkgconfig(json-c)
%endif
BuildRequires: readline-devel
BuildRequires: pkgconfig(libsystemd)
BuildRequires: pkgconfig(libudev)
BuildRequires: pkgconfig(liburcu)
BuildRequires: pkgconfig(systemd)
BuildRequires: pkgconfig(udev)
BuildRequires: pkgconfig(mount)
%if 0%{?with_check} == 1
BuildRequires: pkgconfig(cmocka)
%endif
# For regenerate-initrd-posttrans
# For now, we still need to require suse-module-tools
# See https://github.com/openSUSE/rpm-config-SUSE/pull/6
BuildRequires: suse-module-tools
Requires(post): suse-module-tools
Requires: device-mapper >= 1.2.78
Requires: kpartx
Requires: sg3_utils
Obsoletes: multipath-tools-rbd <= %{version}
PreReq: coreutils
PreReq: grep
%description
This package provides the multipath tool and the multipathd daemon
to manage dm-multipath devices. multipath can detect and set up
multipath maps. multipathd sets up multipath maps automatically,
monitors path devices for failure, removal, or addition, and applies
the necessary changes to the multipath maps to ensure continuous
availability of the map devices.
# Currently, it makes no sense to split out libmpathpersist and libmpathcmd
# separately. libmultipath has no stable API at all, and it depends
# on libmpathcmd (to be fixed). libmpathpersist depends on libmultipath
# and it loads prioritizers (to be fixed) and checkers.
%package -n libmpath0
Summary: Libraries for multipath-tools
# This is for libmpathcmd, which is useless without multipathd.
# No hard dependency here - we don't want to pull in all dependencies
# of multipath-tools.
License: GPL-2.0-only AND LGPL-2.1-only AND LGPL-2.0-or-later
Group: System/Libraries
Recommends: multipath-tools
Conflicts: multipath-tools < 0.8.0
%description -n libmpath0
libmpathpersist provides a C API for handling of SCSI persistent
reservations for device-mapper multipath devices. libmpathcmd
provides a C API for sending commands to a running multipathd
instance.
%package -n kpartx
Summary: Manages partition tables on device-mapper devices
License: GPL-2.0-only
Group: System/Base
Requires: device-mapper
%description -n kpartx
The kpartx program maps linear devmaps to device partitions, which
makes multipath maps partionable.
%package devel
Summary: Development libraries for multipath-tools
License: GPL-2.0-only AND LGPL-2.0-or-later
Group: Development/Libraries/C and C++
Requires: libmpath0 = %{version}
%description devel
This package contains the development libraries for multipath-tools
and libmpathpersist.
%package -n libdmmp%{libdmmp_version}
Summary: C API for multipath-tools
License: GPL-3.0-or-later
Group: System/Libraries
Requires: multipath-tools
%description -n libdmmp%{libdmmp_version}
This library enables the use of libmultipath commands from C code.
%package -n libdmmp-devel
Summary: Header files for multipath-tools C API
License: GPL-3.0-or-later
Group: Development/Libraries/C and C++
Requires: libdmmp%{libdmmp_version} = %{version}
%description -n libdmmp-devel
This package provides development files and documentation for libdmmp.
%define makeflags %{!?with_libdmmp:ENABLE_LIBDMMP=0}
%if 0%{?suse_version} < 1550
%define dirflags LIB=%{_lib} usr_prefix=%{_prefix} systemd_prefix=%{_prefix}
%define sbindir /sbin
%define libdir /%{_lib}
%else
%define dirflags LIB=%{_lib} prefix=%{_prefix} configdir=%{_sysconfdir}/multipath/conf.d
%define sbindir %{_sbindir}
%define libdir %{_libdir}
%endif
%prep
%setup -q -n multipath-tools-%{version}
cp %{SOURCE4} .
cp %{SOURCE5} .
%autopatch -p1
%build
[ -n "$SOURCE_DATE_EPOCH" ] && export KBUILD_BUILD_TIMESTAMP=@$SOURCE_DATE_EPOCH
%{make_build} OPTFLAGS="%{mp_optflags}" %{dirflags} %{makeflags} V=1
%if 0%{?with_check} == 1
%check
%{make_build} OPTFLAGS="%{mp_optflags}" V=1 test
%endif
%install
%make_install %{dirflags} %{makeflags} V=1
mkdir -p %{buildroot}%{_defaultlicensedir}
mkdir -p %{buildroot}/usr/sbin
mkdir -p %{buildroot}/usr/%{_lib}
%if 0%{?suse_version} < 1550
for x in mpathutil multipath mpathpersist mpathcmd mpathvalid; do
rm -f %{buildroot}/%{_lib}/lib$x.so
ln -sf /%{_lib}/lib$x.so.0 %{buildroot}/usr/%{_lib}/lib$x.so
done
%endif
ln -sf service %{buildroot}/usr/sbin/rcmultipathd
mkdir -p %{buildroot}/usr/lib/modules-load.d
install -m 644 -D %{SOURCE1} "%{buildroot}/usr/lib/modules-load.d/multipath.conf"
install -m 644 %{SOURCE2} %{buildroot}%{_udevrulesdir}/00-dont-del-part-nodes.rules
install -m 644 -D %{SOURCE3} %{buildroot}/usr/lib/dracut/dracut.conf.d/dm-parts.conf
install -m 644 -D %{SOURCE6} %{buildroot}/usr/lib/dracut/dracut.conf.d/multipath.conf
sed -i 's,@TMPFILESDIR@,%{_tmpfilesdir},' %{buildroot}/usr/lib/dracut/dracut.conf.d/multipath.conf
%post -n libmpath0 -p %{run_ldconfig}
%postun -n libmpath0 -p %{run_ldconfig}
%pre
[ -f /.buildenv ] && exit 0
%service_add_pre multipathd.socket multipathd.service
%post
[ -f /.buildenv ] && exit 0
%tmpfiles_create %{_tmpfilesdir}/multipath.conf
%service_add_post multipathd.socket multipathd.service
if [ $1 -eq 1 ]; then
[ ! -x /sbin/modprobe ] || /sbin/modprobe dm_multipath || true
fi
%{?regenerate_initrd_post}
exit 0
%preun
%service_del_preun multipathd.service multipathd.socket
%postun
%{?regenerate_initrd_post}
%service_del_postun multipathd.service
%service_del_postun_without_restart multipathd.socket
%posttrans
%{?regenerate_initrd_posttrans}
%files
%doc README.md
%license LICENSES/GPL-2.0
%license LICENSES/GPL-3.0
%{_udevrulesdir}/11-dm-mpath.rules
%{_udevrulesdir}/56-multipath.rules
%{sbindir}/multipath
%{sbindir}/multipathd
%{sbindir}/multipathc
%{sbindir}/mpathpersist
/usr/sbin/rcmultipathd
%{_unitdir}/multipathd.service
%{_unitdir}/multipathd.socket
%dir /usr/lib/modules-load.d
/usr/lib/modules-load.d/multipath.conf
%dir /usr/lib/dracut
%dir /usr/lib/dracut/dracut.conf.d
/usr/lib/dracut/dracut.conf.d/multipath.conf
%{_tmpfilesdir}/multipath.conf
%{_mandir}/man8/multipath.8*
%{_mandir}/man5/multipath.conf.5*
%{_mandir}/man8/multipathd.8*
%{_mandir}/man8/multipathc.8*
%{_mandir}/man8/mpathpersist.8*
%ghost %attr(700,root,root) /run/multipath
%files -n libmpath0
%{libdir}/libmultipath.so.0
%{libdir}/libmpathcmd.so.0
%{libdir}/libmpathpersist.so.0
%{libdir}/libmpathvalid.so.0
%{libdir}/libmpathutil.so.0
%{libdir}/multipath
%license LICENSES/GPL-2.0
%license LICENSES/LGPL-2.0
%license LICENSES/LGPL-2.1
%license README.licenses
%files devel
%{_libdir}/libmultipath.so
%{_libdir}/libmpathcmd.so
%{_libdir}/libmpathpersist.so
%{_libdir}/libmpathvalid.so
%{_libdir}/libmpathutil.so
/usr/include/mpath_cmd.h
/usr/include/mpath_persist.h
/usr/include/mpath_valid.h
%{_mandir}/man3/mpath_persistent_*
%doc libmpathpersist-example.c
%doc libmpathpersist-example-old.c
%files -n kpartx
%license LICENSES/GPL-2.0
%{sbindir}/kpartx
%{_udevrulesdir}/00-dont-del-part-nodes.rules
%{_udevrulesdir}/11-dm-parts.rules
%{_udevrulesdir}/66-kpartx.rules
%{_udevrulesdir}/68-del-part-nodes.rules
/usr/lib/udev/kpartx_id
/usr/lib/dracut/dracut.conf.d/dm-parts.conf
%{_mandir}/man8/kpartx.8*
%posttrans -n kpartx
# The kpartx package contains udev rules that may need to be in initrd.
%{?regenerate_initrd_posttrans}
%post -n libdmmp%{libdmmp_version} -p %{run_ldconfig}
%postun -n libdmmp%{libdmmp_version} -p %{run_ldconfig}
%if 0%{?with_libdmmp} == 1
%files -n libdmmp%{libdmmp_version}
%defattr(-,root,root)
%license LICENSES/GPL-3.0
/%{_libdir}/libdmmp.so.%{_libdmmp_version}
%files -n libdmmp-devel
%defattr(-,root,root)
%{_libdir}/libdmmp.so
%{_mandir}/man3/libdmmp.h*
%{_mandir}/man3/dmmp_*
%{_includedir}/libdmmp
%{_libdir}/pkgconfig/libdmmp.pc
%endif
%changelog

5
multipath.conf Normal file
View File

@ -0,0 +1,5 @@
# Load device-handler and multipath module at boot
scsi_dh_alua
scsi_dh_emc
scsi_dh_rdac
dm-multipath