diff --git a/_service b/_service
index d912a05..35ccf01 100644
--- a/_service
+++ b/_service
@@ -5,8 +5,10 @@
     <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="revision">sles15-sp6</param>
+    <param name="match-tag">0.[0-9].[0-9]*</param>
+    <param name="versionrewrite-pattern">[-]pre\.([0-9])</param>
+    <param name="versionrewrite-replacement">~\1</param>
     <param name="changesgenerate">enable</param>
   </service>
   <service name="set_version" mode="manual"/>
diff --git a/_servicedata b/_servicedata
index d8304a5..961dae0 100644
--- a/_servicedata
+++ b/_servicedata
@@ -1,4 +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>
\ No newline at end of file
+              <param name="changesrevision">d504d833c678c52886e7762254658896ce6a8e7b</param></service></servicedata>
\ No newline at end of file
diff --git a/libmpathpersist-example-old.c b/libmpathpersist-example-old.c
deleted file mode 100644
index 19968e4..0000000
--- a/libmpathpersist-example-old.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * 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;
-}
diff --git a/modprobe_d-scsi_dh.conf b/modprobe_d-scsi_dh.conf
new file mode 100644
index 0000000..ca779e4
--- /dev/null
+++ b/modprobe_d-scsi_dh.conf
@@ -0,0 +1,10 @@
+# Make sure scsi device handlers are loaded before any SCSI host adapter
+# drivers. This requires loading sd_mod before host adapters, which
+# is ensured by the scsi_mod softdep below.
+softdep sd_mod pre: scsi_dh_alua scsi_dh_rdac scsi_dh_emc
+
+# Note that there can be only one softdep per module, and earlier
+# directives take precedence. 10-scsi.conf is shipped by suse-module-tools
+# in some SUSE releases; it will override the scsi_mod softdep below.
+# (but it will also make sure that sd_mod is loaded early).
+softdep scsi_mod post: sd_mod
diff --git a/multipath-dracut.conf b/multipath-dracut.conf
index df5d7ea..f73581e 100644
--- a/multipath-dracut.conf
+++ b/multipath-dracut.conf
@@ -1,2 +1,2 @@
-# Make sure the tmpfiles entry exists in initramfs already
-install_items+=" @TMPFILESDIR@/multipath.conf "
+# Make sure the tmpfiles entry and rules files exist in initramfs already
+install_items+=" @TMPFILESDIR@/multipath.conf @UDEVRULESDIR@/99-z-dm-mpath-late.rules "
diff --git a/multipath-tools-0.9.6+71+suse.f07325e.obscpio b/multipath-tools-0.9.6+71+suse.f07325e.obscpio
deleted file mode 100644
index 96c8143..0000000
--- a/multipath-tools-0.9.6+71+suse.f07325e.obscpio
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:29b31f59ce21e3dc530d9ae44ffbeac787c486ffc2ffa8f40aebda8a738c47f2
-size 2795532
diff --git a/multipath-tools-0.9.8+88+suse.d504d83.obscpio b/multipath-tools-0.9.8+88+suse.d504d83.obscpio
new file mode 100644
index 0000000..8d2d75c
--- /dev/null
+++ b/multipath-tools-0.9.8+88+suse.d504d83.obscpio
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a131d06f66d9a6080b41a29389578763e6af3ecb0518e7e468e1ea76dbec4c78
+size 2868236
diff --git a/multipath-tools.changes b/multipath-tools.changes
index a1e1b87..58bee68 100644
--- a/multipath-tools.changes
+++ b/multipath-tools.changes
@@ -1,3 +1,123 @@
+-------------------------------------------------------------------
+Thu Apr 11 15:22:02 UTC 2024 - Martin Wilck <mwilck@suse.com>
+
+- Update to version 0.9.8+88+suse.d504d83:
+  * Revert "libmultipath: fix max_sectors_kb on adding path"
+  (bsc#1222458)
+
+-------------------------------------------------------------------
+Tue Mar  5 20:19:12 UTC 2024 - Martin Wilck <mwilck@suse.com>
+
+- Update to version 0.9.8+87+suse.f72b9f3:
+  * fix misspelled DM_UDEV_DISABLE_OTHER_RULES_FLAG in udev rules
+    (bsc#1220810)
+
+-------------------------------------------------------------------
+Tue Feb 27 10:12:35 UTC 2024 - Martin Wilck <mwilck@suse.com>
+
+- Remove libmpathpersist-example-old.c, which has been obsolete
+  since multipath-tools 0.8.6.
+
+-------------------------------------------------------------------
+Mon Feb 26 11:57:03 UTC 2024 - Martin Wilck <mwilck@suse.com>
+
+- Update to version 0.9.8+83+suse.bcae610 (bsc#1220374)
+  * multipath-tools: added NEWS.md
+
+-------------------------------------------------------------------
+Thu Feb 15 11:00:59 UTC 2024 - Martin Wilck <mwilck@suse.com>
+
+- Update to version 0.9.8~1+82+suse.dcd98a3:
+  * Adapt package version such that it shows as a 0.9.8 prerelease
+  * Add missing udev rules file
+
+-------------------------------------------------------------------
+Wed Feb 14 20:52:13 UTC 2024 - Martin Wilck <mwilck@suse.com>
+
+- Update to version 0.9.7+148+suse.9780ae0:
+  * 11-dm-mpath.rules: Fix quoting mistake (bsc#1219142)
+
+-------------------------------------------------------------------
+Mon Feb 12 15:33:58 UTC 2024 - Martin Wilck <mwilck@suse.com>
+
+- Update to version 0.9.7+148+suse.7d9953e.obscpio
+  * This is a multipath-tools 0.9.8 pre-release
+  * fix fast_io_fail for Infinibox (bsc#1219348)
+  * Fix activation of LVM volume groups during coldplug (bsc#1219142)
+
+-------------------------------------------------------------------
+Mon Feb 12 15:09:47 UTC 2024 - Martin Wilck <mwilck@suse.com>
+
+- Update to version 0.9.7+140+suse.2d78457:
+  * This is a multipath-tools 0.9.8 pre-release
+  * Socket activation via multipathd.socket has been disabled by default
+    because it has undesirable side effects on systems without multipath.
+    Users with multipath hardware should enable multipathd.service
+  * The restorequeueing CLI command now only enables queueing if
+    disablequeueing had been sent before
+  * Avoid multipathd hang during map flush
+  * multipathd now tracks the queueing mode of maps in its internal features string
+  * Improve error messages in 'multipathd -k'
+  * Fix segfault in autoresize code (bsc#1219289)
+  * Fix missing map reloads (bsc#1219796)
+  * Documentation fixes, spelling fixes, minor code fixes
+
+-------------------------------------------------------------------
+Fri Jan  5 14:32:11 UTC 2024 - Martin Wilck <mwilck@suse.com>
+
+- Update to version 0.9.7+93+suse.e2f2272:
+  * fix ANA prioritizer enablement logic (bsc#1218326)
+  * avoid setting queue_if_no_path on multipath maps for which the
+    no_path_retry timeout has expired
+  * the interactive commands "restorequeueing map X" and
+    "restorequeing maps" now only affect maps that had queueing
+    manually disabled using "disablequeuing maps" or
+    "disablequeuing map X" beforehand
+  * Spelling fixes
+
+-------------------------------------------------------------------
+Tue Nov 21 20:46:40 UTC 2023 - Martin Wilck <mwilck@suse.com>
+
+- Update to version 0.9.7+76+suse.5f857af:
+  * Update to upstream 0.9.7 (jsc#PED-6464)
+  * added max_retries config option to limit SCSI retries
+  * added auto_resize config option to enable resizing multipath maps automatically
+  * fixed memory and error handling for code using aio (marginal path code,
+    directio path checker)
+  * dropped modules-load.d/multipath.conf; replaced by a dependency on
+    modprobe@dm-multipath.service (systemd >= 245: SLE15-SP3 and later only)
+    and a softdep on sd_mod for the SCSI device handlers
+    (bsc#1217377)
+  * On SLE/Leap suse-module-tools doesn't ship a scsi_mod->sd_mod softdep yet.
+    Add it here, too. It will be overridden by s-m-t when it's added there.
+  * drop usr_prefix= setting in SLE build recipes (set to /usr by upstream
+    automatically)
+
+-------------------------------------------------------------------
+Wed Oct 25 10:46:30 UTC 2023 - Martin Wilck <mwilck@suse.com>
+
+- Update to version 0.9.6+115+suse.07776fb
+  * multipathd: Added support to handle FPIN-Li events for FC-NVMe
+
+-------------------------------------------------------------------
+Fri Sep 15 12:36:30 UTC 2023 - Martin Wilck <mwilck@suse.com>
+
+- Update to version 0.9.6+110+suse.5dfdf35:
+  * The options "bindings_file", "prkeys_file", and "wwids_file",
+    which have been deprecated since multipath-tools 0.8.8,
+    aren't supported any more. The paths to these files are now
+    hard-coded to "bindings", "prkeys" and "wwids" under
+    /etc/multipath.
+  * Strictly avoid assigning map aliases that are already taken
+    (bsc#1213265)
+  * Improve handling of user-friendly names
+  * avoid "multipath -d" (dry-run) changing SCSI timeouts in sysfs
+    (bsc#1213809)
+- spec file:
+  * adapt prefix values to upstream changes
+  * fix compilation flags for "make check"
+  * pass EXTRAVERSION to build
+
 -------------------------------------------------------------------
 Tue Sep 12 06:48:40 UTC 2023 - Martin Wilck <mwilck@suse.com>
 
@@ -16,6 +136,7 @@ Wed Sep  6 13:51:42 UTC 2023 - Martin Wilck <mwilck@suse.com>
 - Update to version 0.9.6+70+suse.63925e8:
   Upstream feature additions and bug fixes:
   * ignore nvme devices by default if nvme native multipath is enabled
+    (bsc#1212854)
   * add "group_by_tpg" path_grouping_policy
   * add config options "detect_pgpolicy" and "detect_pgpolicy_use_tpg"
   * libmultipath: add ALUA tpg path wildcard "%A"
diff --git a/multipath-tools.obsinfo b/multipath-tools.obsinfo
index dfe78f3..fd53083 100644
--- a/multipath-tools.obsinfo
+++ b/multipath-tools.obsinfo
@@ -1,4 +1,4 @@
 name: multipath-tools
-version: 0.9.6+71+suse.f07325e
-mtime: 1694069633
-commit: f07325e85d5d9444ac4c816f75d2ce67af52af93
+version: 0.9.8+88+suse.d504d83
+mtime: 1712848814
+commit: d504d833c678c52886e7762254658896ce6a8e7b
diff --git a/multipath-tools.spec b/multipath-tools.spec
index 8eff2ec..fbcd210 100644
--- a/multipath-tools.spec
+++ b/multipath-tools.spec
@@ -19,10 +19,10 @@
 %global _lto_cflags %{nil}
 %global _make_output_sync -Orecurse
 
-# multipath-tools auto-detects support for -D_FORTFY_SOURCE.
+# multipath-tools auto-detects support for -D_FORTIFY_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 &/')
+# -D_FORTIFY_SOURCE in optflags, unless it's preceded with -U_FORTIFY_SOURCE
+%global mp_optflags %(echo %{optflags} | sed '/-U_FORTIFY_SOURCE/!s/-D_FORTIFY_SOURCE=[0-9]/-U_FORTIFY_SOURCE &/')
 
 # Whether to build libdmmp - default YES
 %bcond_without libdmmp
@@ -35,20 +35,20 @@
 %define libdmmp_version %(echo %{_libdmmp_version} | tr . _)
 
 Name:           multipath-tools
-Version:        0.9.6+71+suse.f07325e
+Version:        0.9.8+88+suse.d504d83
 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
+# modprobe.d configuration file
+Source1:        modprobe_d-scsi_dh.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}
@@ -87,9 +87,6 @@ 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
@@ -149,21 +146,22 @@ 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}
+%global extraversion %(echo %{version} | sed 's/^[^+]*//')
+%define makeflags EXTRAVERSION="%{extraversion}" %{!?with_libdmmp:ENABLE_LIBDMMP=0}
 %if 0%{?suse_version} < 1550
-%define dirflags LIB=%{_lib} usr_prefix=%{_prefix} systemd_prefix=%{_prefix}
+%define dirflags LIB=%{_lib}
 %define sbindir /sbin
 %define libdir  /%{_lib}
 %else
-%define dirflags LIB=%{_lib} prefix=%{_prefix} configdir=%{_sysconfdir}/multipath/conf.d
+%define dirflags LIB=%{_lib} prefix=%{_prefix} etc_prefix=
 %define sbindir %{_sbindir}
 %define libdir  %{_libdir}
 %endif
 
+
 %prep
 %setup -q -n multipath-tools-%{version}
 cp %{SOURCE4} .
-cp %{SOURCE5} .
 %autopatch -p1
 
 %build
@@ -172,7 +170,7 @@ cp %{SOURCE5} .
 
 %if 0%{?with_check} == 1
 %check
-%{make_build} OPTFLAGS="%{mp_optflags}" V=1 test
+%{make_build} OPTFLAGS="%{mp_optflags}" %{dirflags} %{makeflags} V=1 test
 %endif
 
 %install
@@ -187,12 +185,11 @@ for x in mpathutil multipath mpathpersist mpathcmd mpathvalid; do
 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 -D %{SOURCE1} %{buildroot}/usr/lib/modprobe.d/90-scsi_dh.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
+sed -i 's,@TMPFILESDIR@,%{_tmpfilesdir},;s,@UDEVRULESDIR@,%{_udevrulesdir},' %{buildroot}/usr/lib/dracut/dracut.conf.d/multipath.conf
 
 %post -n libmpath0 -p %{run_ldconfig}
 %postun -n libmpath0 -p %{run_ldconfig}
@@ -224,10 +221,12 @@ exit 0
 
 %files
 %doc README.md
+%doc NEWS.md
 %license LICENSES/GPL-2.0
 %license LICENSES/GPL-3.0
 %{_udevrulesdir}/11-dm-mpath.rules
 %{_udevrulesdir}/56-multipath.rules
+%{_udevrulesdir}/99-z-dm-mpath-late.rules
 %{sbindir}/multipath
 %{sbindir}/multipathd
 %{sbindir}/multipathc
@@ -235,11 +234,14 @@ exit 0
 /usr/sbin/rcmultipathd
 %{_unitdir}/multipathd.service
 %{_unitdir}/multipathd.socket
+%if 0%{?suse_version} < 1550 && 0%{?sle_version} < 150300
 %dir /usr/lib/modules-load.d
 /usr/lib/modules-load.d/multipath.conf
+%endif
 %dir /usr/lib/dracut
 %dir /usr/lib/dracut/dracut.conf.d
 /usr/lib/dracut/dracut.conf.d/multipath.conf
+/usr/lib/modprobe.d/90-scsi_dh.conf
 %{_tmpfilesdir}/multipath.conf
 %{_mandir}/man8/multipath.8*
 %{_mandir}/man5/multipath.conf.5*
@@ -271,7 +273,6 @@ exit 0
 /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
diff --git a/multipath.conf b/multipath.conf
deleted file mode 100644
index 37e9e78..0000000
--- a/multipath.conf
+++ /dev/null
@@ -1,5 +0,0 @@
-# Load device-handler and multipath module at boot
-scsi_dh_alua
-scsi_dh_emc
-scsi_dh_rdac
-dm-multipath