Linux plans to deprecate the auto-creation of block devices based on
access to the device node starting from kernel 5.18. Without that feature
losetup will fail to create the loop device if a device node already
exists, but the loop device to back it in the kernel does not exist yet.
This is a scenario that should not happen in modern udev based
distributions, but apparently there still are various scripts around that
manually call the superfluous mknod.
Change losetup to unconditionally call loopcxt_add_device when a specific
device node is specified on the command line. If the loop device
already exists the LOOP_CTL_ADD ioctl will fail, but given that losetup
ignores the return value from loopcxt_add_device that failure has no
further effect.
Reported-by: Luis Chamberlain <mcgrof@kernel.org>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Chaitanya Kulkarni <kch@nvidia.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
}
}
- if (hasdev && !is_loopdev(loopcxt_get_device(lc)))
+ if (hasdev)
loopcxt_add_device(lc);
/* losetup --noverlap /dev/loopN file.img */