Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
From 7034c039d092ade9ce6eef37f1a249289fd42a88 Mon Sep 17 00:00:00 2001
From: Mathieu Labourier <mathieu.labourier@vates.tech>
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 <mathieu.labourier@vates.tech>
---
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);

6 changes: 5 additions & 1 deletion SPECS/blktap.spec
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -217,6 +218,9 @@ without requiring other libraries
%{_libdir}/libblockcrypto.so.*

%changelog
* Mon Aug 24 2026 Anthoine Bourgeois <anthoine.bourgeois@vates.tech> - 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 <mathieu.labourier@vates.tech> - 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.
Expand Down