From 2e5262f5051e51e712ee96b0d0a2900db3732620 Mon Sep 17 00:00:00 2001 From: Hideki EIRAKU Date: Wed, 25 May 2022 12:23:16 +0900 Subject: [PATCH] loopdev: set block_size when using LOOP_CONFIGURE LOOP_CONFIGURE ioctl was introduced by commit d5fd456c88aba4fcf77d35fe38024a8d5c814686. Since the previous implementation set partscan flag but did not set block_size with the LOOP_CONFIGURE ioctl, an issue fixed by commit 422f0e9f206a145c59a71333dad20d38cbbfc0c4 was reappeared. Setting block_size in the LOOP_CONFIGURE ioctl parameter fixes the issue. Signed-off-by: Hideki EIRAKU Signed-off-by: Karel Zak --- lib/loopdev.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/loopdev.c b/lib/loopdev.c index d89c795ed2..05376dd298 100644 --- a/lib/loopdev.c +++ b/lib/loopdev.c @@ -1367,6 +1367,9 @@ int loopcxt_setup_device(struct loopdev_cxt *lc) * -- since Linux v5.8-rc1, commit 3448914e8cc550ba792d4ccc74471d1ca4293aae */ lc->config.fd = file_fd; + if (lc->blocksize > 0) + lc->config.block_size = lc->blocksize; + if (ioctl(dev_fd, LOOP_CONFIGURE, &lc->config) < 0) { rc = -errno; errsv = errno; @@ -1376,11 +1379,6 @@ int loopcxt_setup_device(struct loopdev_cxt *lc) } fallback = 1; } else { - if (lc->blocksize > 0 - && (rc = loopcxt_ioctl_blocksize(lc, lc->blocksize)) < 0) { - errsv = -rc; - goto err; - } DBG(SETUP, ul_debugobj(lc, "LOOP_CONFIGURE: OK")); } -- 2.47.2