]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
loopdev: set block_size when using LOOP_CONFIGURE
authorHideki EIRAKU <hdk@igel.co.jp>
Wed, 25 May 2022 03:23:16 +0000 (12:23 +0900)
committerKarel Zak <kzak@redhat.com>
Wed, 20 Jul 2022 15:47:28 +0000 (17:47 +0200)
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 <hdk@igel.co.jp>
Signed-off-by: Karel Zak <kzak@redhat.com>
lib/loopdev.c

index d89c795ed2d8090331b19b7137f55849027fde65..05376dd298eedcbb922cd55d093324920dd1b469 100644 (file)
@@ -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"));
        }