]> git.ipfire.org Git - thirdparty/util-linux.git/commit
losetup: don't skip adding a new device if it already has a device node
authorChristoph Hellwig <hch@lst.de>
Fri, 25 Feb 2022 18:09:03 +0000 (19:09 +0100)
committerKarel Zak <kzak@redhat.com>
Mon, 28 Feb 2022 10:14:35 +0000 (11:14 +0100)
commitdfa92ef17e5fcf03d6525c63c8609bd0633a49fa
tree0f63f73554819c3c72c7fe9e0a808535544f16d9
parent1f71f0cf2c8e157803ccd2e25bd9f21cae6c5fd3
losetup: don't skip adding a new device if it already has a device node

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>
sys-utils/losetup.c