From: Hanna Czenczek Date: Mon, 9 Mar 2026 15:08:47 +0000 (+0100) Subject: fuse: Drop permission changes in fuse_do_truncate X-Git-Tag: v11.0.0-rc0~17^2~12 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=bea1163decf81cda4e9b09dad7090bf585f2ed10;p=thirdparty%2Fqemu.git fuse: Drop permission changes in fuse_do_truncate This function is always called with writable == true. This makes add_resize_perm always false, and thus we can drop the quite ugly permission-changing code. Signed-off-by: Hanna Czenczek Message-ID: <20260309150856.26800-17-hreitz@redhat.com> Reviewed-by: Kevin Wolf Signed-off-by: Kevin Wolf --- diff --git a/block/export/fuse.c b/block/export/fuse.c index af0a8de17b1..b7a710c29f8 100644 --- a/block/export/fuse.c +++ b/block/export/fuse.c @@ -503,44 +503,14 @@ static void fuse_getattr(fuse_req_t req, fuse_ino_t inode, static int fuse_do_truncate(const FuseExport *exp, int64_t size, bool req_zero_write, PreallocMode prealloc) { - uint64_t blk_perm, blk_shared_perm; BdrvRequestFlags truncate_flags = 0; - bool add_resize_perm; - int ret, ret_check; - - /* Growable and writable exports have a permanent RESIZE permission */ - add_resize_perm = !exp->growable && !exp->writable; if (req_zero_write) { truncate_flags |= BDRV_REQ_ZERO_WRITE; } - if (add_resize_perm) { - if (!qemu_in_main_thread()) { - /* Changing permissions like below only works in the main thread */ - return -EPERM; - } - - blk_get_perm(exp->common.blk, &blk_perm, &blk_shared_perm); - - ret = blk_set_perm(exp->common.blk, blk_perm | BLK_PERM_RESIZE, - blk_shared_perm, NULL); - if (ret < 0) { - return ret; - } - } - - ret = blk_truncate(exp->common.blk, size, true, prealloc, - truncate_flags, NULL); - - if (add_resize_perm) { - /* Must succeed, because we are only giving up the RESIZE permission */ - ret_check = blk_set_perm(exp->common.blk, blk_perm, - blk_shared_perm, &error_abort); - assert(ret_check == 0); - } - - return ret; + return blk_truncate(exp->common.blk, size, true, prealloc, + truncate_flags, NULL); } /**