diff --git a/SOURCES/0046-fix-skip-cbtlog-disks-in-commit-related-operations.patch b/SOURCES/0046-fix-skip-cbtlog-disks-in-commit-related-operations.patch new file mode 100644 index 0000000..0a7a4b2 --- /dev/null +++ b/SOURCES/0046-fix-skip-cbtlog-disks-in-commit-related-operations.patch @@ -0,0 +1,64 @@ +From 7034c039d092ade9ce6eef37f1a249289fd42a88 Mon Sep 17 00:00:00 2001 +From: Mathieu Labourier +Date: Mon, 17 Aug 2026 15:08:15 +0200 +Subject: [PATCH] fix: skip cbtlog disks in commit related operations + +This prevents a bug where tapdisk will return a cbtlog +disk in commit related operations, causing them to fail early +since the cbtlog driver doesn't include a commit action + +Signed-off-by: Mathieu Labourier +--- + drivers/tapdisk-vbd.c | 18 +++++++++++++++--- + 1 file changed, 15 insertions(+), 3 deletions(-) + +diff --git a/drivers/tapdisk-vbd.c b/drivers/tapdisk-vbd.c +index 8fcabbbd..7b5171cd 100644 +--- a/drivers/tapdisk-vbd.c ++++ b/drivers/tapdisk-vbd.c +@@ -167,6 +167,18 @@ tapdisk_vbd_first_image(td_vbd_t *vbd) + return image; + } + ++static inline td_image_t * ++tapdisk_vbd_first_non_log_image(td_vbd_t *vbd) ++{ ++ td_image_t *image = NULL, *tmp; ++ ++ tapdisk_vbd_for_each_image(vbd, image, tmp) ++ if (image->type != DISK_TYPE_LOG) ++ return image; ++ ++ return image; ++} ++ + static inline td_image_t * + tapdisk_vbd_last_image(td_vbd_t *vbd) + { +@@ -1146,7 +1158,7 @@ tapdisk_vbd_commit(td_vbd_t *vbd, const char *name) + INFO("commit %s\n", name); + } + +- err = td_commit(tapdisk_vbd_first_image(vbd), name); ++ err = td_commit(tapdisk_vbd_first_non_log_image(vbd), name); + + INFO("commit started (%d)\n", err); + +@@ -1162,7 +1174,7 @@ tapdisk_vbd_query_commit_job(td_vbd_t *vbd, td_query_t *query) + INFO("query commit job.\n"); + } + +- err = td_query_commit_job(tapdisk_vbd_first_image(vbd), query); ++ err = td_query_commit_job(tapdisk_vbd_first_non_log_image(vbd), query); + + INFO("query commit job (%d)\n", err); + +@@ -1178,7 +1190,7 @@ tapdisk_vbd_cancel_commit_job(td_vbd_t *vbd, bool wait) + INFO("cancel commit job.\n"); + } + +- err = td_cancel_commit_job(tapdisk_vbd_first_image(vbd), wait); ++ err = td_cancel_commit_job(tapdisk_vbd_first_non_log_image(vbd), wait); + + INFO("cancel commit job (%d)\n", err); + diff --git a/SPECS/blktap.spec b/SPECS/blktap.spec index f0433e8..c047245 100644 --- a/SPECS/blktap.spec +++ b/SPECS/blktap.spec @@ -7,7 +7,7 @@ Summary: blktap user space utilities Name: blktap Version: 3.55.5 -Release: %{?xsrel}.3%{?dist} +Release: %{?xsrel}.4%{?dist} License: BSD AND GPL-2.0-or-later Group: System/Hypervisor URL: https://github.com/xapi-project/blktap @@ -88,6 +88,7 @@ Patch1042: 0042-tapdisk-support-new-cancel-command.patch Patch1043: 0043-qcow2-support-cancel-command.patch Patch1044: 0044-libqcow2-fix-abort-commit-without-crash.patch Patch1045: 0045-feat-pass-error-details-up-to-tap-ctl.patch +Patch1046: 0046-fix-skip-cbtlog-disks-in-commit-related-operations.patch %description Blktap creates kernel block devices which realize I/O requests to @@ -217,6 +218,9 @@ without requiring other libraries %{_libdir}/libblockcrypto.so.* %changelog +* Mon Aug 24 2026 Anthoine Bourgeois - 3.55.5-9.4 +- Filter cbtlog disk in coalesce commands to avoid ENOTSUPP error and un-coalescable VDIs. + * Fri Jul 03 2026 Mathieu Labourier - 3.55.5-9.3 - Pass error details up to tap-ctl. * The error printed by tap-ctl is now clearer and parsable for tools like SM.