-
Notifications
You must be signed in to change notification settings - Fork 1.2k
losetup /dev/loopX int overflow for large X #903
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
It works for me (version 2.33.2 as well as the current upstream tree) on kernel 5.4.0-0.rc8.git0.2.fc32.x86_64:
Please, try "LOOPDEV_DEBUG=all losetup /dev/loop1048576 somefile" to get more details. Anyway, the dmesg output seems like a kernel problem. |
Setup:
Setup dmesg:
Subsequent detachement failure:
|
On Tue, Dec 03, 2019 at 07:12:11AM -0800, Andreas Klauer wrote:
Setup:
```
***@***.*** ~]# uname -a
Linux KVM-NEU 5.4.1-arch1-1 #1 SMP PREEMPT Fri, 29 Nov 2019 13:37:24 +0000 x86_64 GNU/Linux
***@***.*** ~]# truncate -s 1M somefile
***@***.*** ~]# export LOOPDEV_DEBUG=all
***@***.*** ~]# losetup /dev/loop0 somefile
432: loopdev: CXT: [0x7ffc52078140]: initialize context
432: loopdev: CXT: [0x7ffc52078140]: init: ignore ioctls
432: loopdev: CXT: [0x7ffc52078140]: init: loop-control detected
432: loopdev: CXT: [0x7ffc52078140]: /dev/loop0 name assigned
432: loopdev: CXT: [0x7ffc52078140]: add_device 0
432: loopdev: CXT: [0x7ffc52078140]: add_device done [rc=-1]
432: loopdev: CXT: [0x7ffc52078140]: set backing file=/root/somefile
432: loopdev: SETUP: [0x7ffc52078140]: device setup requested
432: loopdev: SETUP: [0x7ffc52078140]: backing file open: OK
432: loopdev: CXT: [0x7ffc52078140]: open /dev/loop0 [rw]: Success
432: loopdev: SETUP: [0x7ffc52078140]: device open: OK
432: loopdev: SETUP: [0x7ffc52078140]: LOOP_SET_FD: OK
432: loopdev: SETUP: [0x7ffc52078140]: LOOP_SET_STATUS64: OK
432: loopdev: SETUP: [0x7ffc52078140]: success [rc=0]
432: loopdev: CXT: [0x7ffc52078140]: de-initialize
432: loopdev: CXT: [0x7ffc52078140]: closing old open fd
432: loopdev: ITER: [0x7ffc520782d0]: de-initialize
***@***.*** ~]# losetup /dev/loop1048576 somefile
444: loopdev: CXT: [0x7ffd08568400]: initialize context
444: loopdev: CXT: [0x7ffd08568400]: init: ignore ioctls
444: loopdev: CXT: [0x7ffd08568400]: init: loop-control detected
444: loopdev: CXT: [0x7ffd08568400]: /dev/loop1048576 name assigned
444: loopdev: CXT: [0x7ffd08568400]: add_device 1048576
444: loopdev: CXT: [0x7ffd08568400]: add_device done [rc=1048576]
This means that LOOP_CTL_ADD ioctl has been successful and kernel
promised the device allocation.
444: loopdev: CXT: [0x7ffd08568400]: set backing file=/root/somefile
444: loopdev: SETUP: [0x7ffd08568400]: device setup requested
444: loopdev: SETUP: [0x7ffd08568400]: backing file open: OK
444: loopdev: CXT: [0x7ffd08568400]: open /dev/loop1048576 [rw]: No such file or directory
444: loopdev: CXT: [0x7ffd08568400]: open /dev/loop1048576 [rw]: No such file or directory
444: loopdev: CXT: [0x7ffd08568400]: open /dev/loop1048576 [rw]: No such file or directory
444: loopdev: CXT: [0x7ffd08568400]: open /dev/loop1048576 [rw]: No such file or directory
444: loopdev: CXT: [0x7ffd08568400]: open /dev/loop1048576 [rw]: No such file or directory
444: loopdev: CXT: [0x7ffd08568400]: open /dev/loop1048576 [rw]: No such file or directory
444: loopdev: CXT: [0x7ffd08568400]: open /dev/loop1048576 [rw]: No such file or directory
444: loopdev: CXT: [0x7ffd08568400]: open /dev/loop1048576 [rw]: No such file or directory
444: loopdev: CXT: [0x7ffd08568400]: open /dev/loop1048576 [rw]: No such file or directory
444: loopdev: CXT: [0x7ffd08568400]: open /dev/loop1048576 [rw]: No such file or directory
444: loopdev: CXT: [0x7ffd08568400]: open /dev/loop1048576 [rw]: No such file or directory
444: loopdev: CXT: [0x7ffd08568400]: open /dev/loop1048576 [rw]: No such file or directory
444: loopdev: CXT: [0x7ffd08568400]: open /dev/loop1048576 [rw]: No such file or directory
444: loopdev: CXT: [0x7ffd08568400]: open /dev/loop1048576 [rw]: No such file or directory
444: loopdev: CXT: [0x7ffd08568400]: open /dev/loop1048576 [rw]: No such file or directory
444: loopdev: CXT: [0x7ffd08568400]: open /dev/loop1048576 [rw]: No such file or directory
444: loopdev: CXT: [0x7ffd08568400]: open /dev/loop1048576 [rw]: No such file or directory
This means that the node (/dev/loop1048576) has not bean created. The
first thing we can blame is udevd, but it seems like kernel problem
due to kernel back trace in the dmesg output.
Please, report it again kernel (ideally by your distribution bug tracking
system). Thanks!
Karel
…--
Karel Zak <kzak@redhat.com>
http://karelzak.blogspot.com
|
A patch to reject /dev/loopX with X >= 1048576 has arrived to upstream kernel as Please backport to your distribution's kernel as needed. |
Thanks! |
This might be exclusively a kernel bug, or losetup, or both, not sure. I report it here because losetup is the trigger.
Out of curiosity I tried to experimentally determine what the largest /dev/loop# number might be.
This actually seem to try to create /dev/loop0 instead, and if already exists:
Same thing happens when trying to create /dev/loop1048575 and /dev/loop2097151, and it's not possible to remove /dev/loop1048575 afterwards.
See also: full dmesg.txt
The text was updated successfully, but these errors were encountered: