diff --git a/emper/io/Future.cpp b/emper/io/Future.cpp
index 329386c9781a3454dec9030e9b8651205c30a6d1..39b5f4793225bb122658bca8460a6cf6cf6fb839 100644
--- a/emper/io/Future.cpp
+++ b/emper/io/Future.cpp
@@ -180,7 +180,7 @@ void CancelWrapper::prepareSqeInternal(struct io_uring_sqe* sqe) {
 	if constexpr (!emper::IO_SINGLE_URING) {
 		assert(future.submitter == IoContext::workerIo);
 	}
-	void* user_data = IoContext::createFutureTag(future);
+	uint64_t user_data = IoContext::createFutureTag(future);
 	io_uring_prep_cancel(sqe, user_data, 0);
 }
 }	 // namespace emper::io
diff --git a/meson.build b/meson.build
index d08933072666fc92f59feb13559ef2a59ef0a4f2..bbc0184e7390166e63b76865460d2e01558f6a7d 100644
--- a/meson.build
+++ b/meson.build
@@ -13,7 +13,7 @@ thread_dep = dependency('threads')
 conf_data = configuration_data()
 use_bundled_deps = get_option('use_bundled_deps')
 
-liburing_version = '2.1'
+liburing_version = '2.2'
 uring_dep = dependency('liburing', version: liburing_version, required: use_bundled_deps == 'never')
 if not uring_dep.found() or use_bundled_deps == 'always'
 	message('liburing ' + liburing_version + ' not found in system, using liburing subproject')
diff --git a/subprojects/liburing.wrap b/subprojects/liburing.wrap
index b3c66d527072ad67744860bf46cd98ca18f1ba43..0245dd825fec6a29816f60bfa06b7903ca1bf1be 100644
--- a/subprojects/liburing.wrap
+++ b/subprojects/liburing.wrap
@@ -1,12 +1,6 @@
-[wrap-file]
-directory = liburing-liburing-2.1
-source_url = https://github.com/axboe/liburing/archive/refs/tags/liburing-2.1.tar.gz
-source_filename = liburing-2.1.tar.gz
-source_hash = f1e0500cb3934b0b61c5020c3999a973c9c93b618faff1eba75aadc95bb03e07
-patch_filename = liburing_2.1-1_patch.zip
-patch_url = https://wrapdb.mesonbuild.com/v2/liburing_2.1-1/get_patch
-patch_hash = aaeb2be1f5eacf4f41e0537aa02154486e0729a3395d2e832de7657ab0b56290
+[wrap-git]
+url=https://github.com/fischerling/liburing.git
+revision=7cef94c598c9137b8d98e2d361f0e6ed1e869919
 
 [provide]
 uring = uring
-