diff --git a/50-virtiofsd.json b/50-virtiofsd.json
new file mode 100644
index 0000000..9eec755
--- /dev/null
+++ b/50-virtiofsd.json
@@ -0,0 +1,9 @@
+{
+ "description": "virtiofsd vhost-user-fs",
+ "type": "fs",
+ "binary": "@@LIBEXECDIR@@/virtiofsd",
+ "features": [
+ "migrate-precopy",
+ "separate-options"
+ ]
+}
diff --git a/_service b/_service
index 48f1ca1..f7afa24 100644
--- a/_service
+++ b/_service
@@ -3,7 +3,7 @@
https://gitlab.com/virtio-fs/virtiofsd.git
git
virtiofsd
- v1.10.1
+ v1.12.0
@PARENT_TAG@
[v]?([^\+]+)(.*)
\1
@@ -19,10 +19,6 @@
xz
-
- virtiofsd
-
-
virtiofsd
xz
diff --git a/cargo_config b/cargo_config
deleted file mode 100644
index 6fb4ff4..0000000
--- a/cargo_config
+++ /dev/null
@@ -1,5 +0,0 @@
-[source.crates-io]
-replace-with = "vendored-sources"
-
-[source.vendored-sources]
-directory = "vendor"
\ No newline at end of file
diff --git a/vendor.tar.xz b/vendor.tar.xz
index 20fa4e9..b780b1c 100644
--- a/vendor.tar.xz
+++ b/vendor.tar.xz
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:fa57f009ab7ede4768ac53646917e49bb831decb78a3a050de34063dc02f7ea0
-size 12339184
+oid sha256:2b7b97407e428a651c32f6056fefd623de6c2be4c3bed3a8eb7b9cc07d34e7b5
+size 14894944
diff --git a/virtiofsd-1.10.1.tar.xz b/virtiofsd-1.10.1.tar.xz
deleted file mode 100644
index 5925667..0000000
--- a/virtiofsd-1.10.1.tar.xz
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:b52b3d59f43140dca7d56e6dc8d88a0f894eeb0de69d0003b72115be71627154
-size 97376
diff --git a/virtiofsd-1.12.0.tar.xz b/virtiofsd-1.12.0.tar.xz
new file mode 100644
index 0000000..4b02812
--- /dev/null
+++ b/virtiofsd-1.12.0.tar.xz
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:213df73a935768ce863362dd4ad5b3abe4b8676883820ec559abbb54e196b611
+size 129248
diff --git a/virtiofsd.changes b/virtiofsd.changes
index b3da64c..fb8706b 100644
--- a/virtiofsd.changes
+++ b/virtiofsd.changes
@@ -1,3 +1,113 @@
+-------------------------------------------------------------------
+Wed Oct 16 17:24:41 UTC 2024 - caleb.crane@suse.com
+
+- Update to version 1.12.0:
+ * Bump version to v1.12.0
+ * Add file-handles migration mode
+ * Serialize mount FD map
+ * Deserialize file handles
+ * Build mount FD map on deserialization
+ * Add MigrationMode::FileHandles
+ * PassthroughFsV2
+ * Allow deserializing serializable file handles
+ * Extract serialized::Inode.deserialize_root_node()
+
+-------------------------------------------------------------------
+Thu Oct 3 18:55:20 UTC 2024 - Caleb Crane
+
+- Spec: Add direct dependency on cargo in addition to cargo-packaging.
+ This fixes build errors on 15SP7 where the inherited version of Rust
+ is too old
+
+-------------------------------------------------------------------
+Thu Aug 8 19:57:34 UTC 2024 - Caleb Crane
+
+- Service: Remove deprecated cargo_config and cargo_audit services, both
+ are now handled by the cargo_vendor service
+- Add new upstream features for the libvirt/virtiofsd interop config
+
+-------------------------------------------------------------------
+Thu Aug 08 08:13:17 UTC 2024 - Xiaoguang Wang
+
+- Fix build failure after update to Rust 1.80 (bsc#1228972)
+- Update to version 1.11.1:
+ * Changes since 1.11.0:
+ * Add "separate-options" capability
+ * Force-call DESTROY on INIT
+ * Do not require --shared-dir to print capabilities
+ * Enable notification on vring failure
+ * Bump version to v1.11.0
+ * deps: Update to the latest rust-vmm crates
+ * deps: Update to the latest libc
+ * Note migration capability
+ * README: Document new migration switches
+ * Introduce --migration-mode switch
+ * Introduce --migration-confirm-paths
+ * PassthroughFs::init: Point to NegotiatedOpts
+ * Implement device state deserialization
+ * Add get_path_by_fd()/printable_fd() functions
+ * Implement device state serialization
+ * Implement preserialization/premigration
+ * Define our serialized device state
+ * Introduce serializable file handles
+ * Introduce --migration-verify-handles
+ * Introduce --migration-on-error switch
+ * Allow explicitly invalid inodes and handles
+ * Split try_lookup() off of do_lookup()
+ * Add ReadDir::new_no_seek()
+ * Put open_root_node() into own function
+ * Add type for strong inode references
+ * Hide InodeStore locking
+ * Remove `&Inode` indirection
+ * Add device state infrastructure
+ * Add ErrorContext, ResultErrorContext traits
+ * Add other_io_error() utility function
+ * Add support for dirty memory logging
+ * opt: Introduce --allow-mmap flag
+ * fuse: Enable DIRECT_IO_ALLOW_MMAP with --allow-mmap
+ * Add '--shared-dir' as required if '-o' is missing
+ * Close the listener in the parent process
+ * Check if the socket parent directory exists
+ * Check if the shared directory exists
+ * deps: Bump syslog version
+ * Increase maximum virtqueue size to 32768
+ * Allow multiple uid/gid maps
+ * Hide clippy warning in readdir
+ * Shorten `std::result::Result` where possible
+ * Remove redundant Result imports
+ * deps: Bump vhost and vhost-user-backend versions
+ * Remove virtio-bindings feature
+ * Directly write uid/gidmap where possible
+ * Fix clippy warning: Complicated `match` condition
+ * Fix clippy warning: Skip converting to owned
+ * Fix clippy warning: Make use of `.cloned()`
+ * Fix new compiler warnings
+
+-------------------------------------------------------------------
+Thu Mar 7 14:03:20 UTC 2024 - Ben Greiner
+
+- Fix libexecdir move: rpm cannot replace a directory with a single
+ file on upgrades -- boo#1220592
+ * Add pre scriptlet removing the directory on Tumbleweed during
+ upgrades
+ * Don't own plain %_libexecdir on Tumbleweed
+
+-------------------------------------------------------------------
+Wed Feb 28 15:08:19 UTC 2024 - Caleb Crane
+
+- Spec: More tweaks to libexecdir path issues on SLE and Tumbleweed
+
+-------------------------------------------------------------------
+Mon Feb 26 14:16:30 UTC 2024 - Caleb Crane
+
+- Spec: We don't want /usr/libexec to be namespaced like it is with /usr/lib (bsc#1220304)
+
+-------------------------------------------------------------------
+Thu Feb 22 03:02:23 UTC 2024 - Caleb Crane
+
+- Spec: Adjust libvirt/virtiofsd interop config file to handle differences in
+ the definition of libexecdir macro on SLE and Tumbleweed (bsc#1219772)
+
-------------------------------------------------------------------
Tue Jan 30 17:09:25 UTC 2024 - caleb.crane@suse.com
@@ -15,7 +125,7 @@ Tue Jan 30 17:09:25 UTC 2024 - caleb.crane@suse.com
-------------------------------------------------------------------
Thu Aug 31 20:28:08 UTC 2023 - Caleb Crane
-- Update to upstream version v1.7.2 (jsc#4980)
+- Update to upstream version v1.7.2 (jsc#PED-4980)
- Add supplementary group extension support
- Prevent EPERM failures with O_NOATIME
- Fix cache timeouts
diff --git a/virtiofsd.spec b/virtiofsd.spec
index bae6214..ab2d7a8 100644
--- a/virtiofsd.spec
+++ b/virtiofsd.spec
@@ -16,16 +16,23 @@
#
+%if 0%{?suse_version} > 1500
+ %define _virtiofsd_libexecdir %{_libexecdir}
+%else
+ %define _virtiofsd_libexecdir %{_libexecdir}/%{name}
+%endif
+
Name: virtiofsd
-Version: 1.10.1
+Version: 1.12.0
Release: 0
-Summary: vhost-user virtio-fs device backend written in Rust
+Summary: A vhost-user virtio-fs device backend written in Rust
Group: Development/Libraries/Rust
License: Apache-2.0
URL: https://gitlab.com/virtio-fs/virtiofsd
Source0: %{name}-%{version}.tar.xz
Source1: vendor.tar.xz
-Source2: cargo_config
+Source2: 50-virtiofsd.json
+BuildRequires: cargo
BuildRequires: cargo-packaging
BuildRequires: libcap-ng-devel
BuildRequires: libseccomp-devel
@@ -33,24 +40,31 @@ Conflicts: qemu-tools < 8
ExcludeArch: %ix86 %arm
%description
-vhost-user virtio-fs device backend written in Rust
+A vhost-user virtio-fs device backend written in Rust
%prep
%autosetup -a1
-mkdir .cargo
-cp %{SOURCE2} .cargo/config
+# Adjust libvirt/virtiofsd interop config file to handle differences in
+# the definition of libexecdir macro on SLE and Tumbleweed (bsc#1219772)
+sed -i 's#@@LIBEXECDIR@@#%{_virtiofsd_libexecdir}#' %{SOURCE2}
%build
%{cargo_build}
%install
-mkdir -p %{buildroot}%{_libexecdir}
-install -D -p -m 0755 %{_builddir}/%{name}-%{version}/target/release/virtiofsd %{buildroot}%{_libexecdir}/virtiofsd
-install -D -p -m 0644 %{_builddir}/%{name}-%{version}/50-virtiofsd.json %{buildroot}%{_datadir}/qemu/vhost-user/50-virtiofsd.json
+mkdir -p %{buildroot}%{_virtiofsd_libexecdir}
+install -D -p -m 0755 %{_builddir}/%{name}-%{version}/target/release/virtiofsd %{buildroot}%{_virtiofsd_libexecdir}/virtiofsd
+install -D -p -m 0644 %{SOURCE2} %{buildroot}%{_datadir}/qemu/vhost-user/50-virtiofsd.json
%check
%{cargo_test}
+%if 0%{?suse_version} > 1500
+# transition from old subdirectory to single file: rpm can't replace a directory on upgrades, force delete
+%pre
+[ ! -d %{_libexecdir}/%{name} ] || rm -r %{_libexecdir}/%{name}
+%endif
+
%files
%doc README.md
%{_libexecdir}/virtiofsd