Hide Forgot
Description of problem: mount: could not find any free loop device Version-Release number of selected component (if applicable): util-linux-2.20.1-2.2.fc16.i686 How reproducible: once it occurs; always until reboot. Steps to Reproduce: 1. mount -o loop -t iso9660 <isofilename> <mountpoint> 2. umount <mountpoint> 3. repeat 9 times There are 8 loop devices. The loop device used by a mount is not released by the umount. Actual results: Error and iso does not mount. mount: could not find any free loop device Expected results: Once a mount point has been un-mounted, the loop device should be released for use again. Additional info: brw-rw----. 1 root disk 7, 0 Jan 30 00:39 /dev/loop0 brw-rw----. 1 root disk 7, 1 Feb 3 19:36 /dev/loop1 brw-rw----. 1 root disk 7, 2 Feb 3 19:44 /dev/loop2 brw-rw----. 1 root disk 7, 3 Feb 3 19:49 /dev/loop3 brw-rw----. 1 root disk 7, 4 Feb 3 19:52 /dev/loop4 brw-rw----. 1 root disk 7, 5 Feb 3 19:54 /dev/loop5 brw-rw----. 1 root disk 7, 6 Feb 3 23:28 /dev/loop6 brw-rw----. 1 root disk 7, 7 Feb 3 19:24 /dev/loop7 crw-------. 1 root root 10, 237 Jan 29 16:33 /dev/loop-control
I'm not able to reproduce the problem. Please, try: # mount -o loop -t iso9660 <isofilename> <mountpoint> # losetup -a # cat /sys/block/<loopN>/loop/autoclear <-- e.g. loop0 # umount <mountpoint> # echo $? # cat /sys/block/<loopN>/loop/autoclear # strace -e ioctl mount -o loop -t iso9660 <isofilename> <mountpoint> # uname -a # rpm -qf /bin/mount I'd like to see output from these commands.
# mount -o loop -t iso9660 /mypath/my.iso /mnt mount: warning: /mnt seems to be mounted read-only. # losetup -a /dev/loop0: [fd06]:24379519 (/mypath/my.iso) # cat /sys/block/loop0/loop/autoclear 1 # umount /mnt # echo $? 0 # cat /sys/block/loop0/loop/autoclear 1 strace -e ioctl mount -o loop -t iso9660 /mypath/my.iso /mnt ioctl(3, LOOP_GET_STATUS, 0xbfad0b00) = 0 ioctl(3, LOOP_GET_STATUS, 0xbfad0b00) = -1 ENXIO (No such device or address) ioctl(4, LOOP_SET_FD, 0x3) = 0 ioctl(4, LOOP_SET_STATUS64, 0xbfad2bb8) = 0 ioctl(4, LOOP_GET_STATUS64, 0xbfad29b8) = 0 mount: warning: /mnt seems to be mounted read-only. # uname -a Linux <FQHN> 3.2.2-1.fc16.i686.PAE #1 SMP Thu Jan 26 03:30:43 UTC 2012 i686 i686 i386 GNU/Linux # rpm -qf /bin/mount util-linux-2.20.1-2.2.fc16.i686 Additional information: The new mount is on loop1 according to: # cat /sys/block/loop1/loop/autoclear 1 and the system still reports: # cat /sys/block/loop0/loop/autoclear 1
Strange. Try also # strace -e umount umount /mnt # findmnt /mnt (or/and see /proc/mounts) ... is the <mountpoint> really umounted? maybe also check dmesg output. The autoclear flag means that after umount the loop device will be automatically detached by kernel if there is no another reference to the device. It seems that the device is still used or the autoclear stuff in kernel does not work as expected. The command umount(8) does not play any active role there if the autoclear flag is set.
# strace -e umount umount /mnt # echo $? 0 # findmnt /mnt # echo $? 1 findmnt / TARGET SOURCE FSTYPE OPTIONS / /dev/mapper/vg_daniel-lv_root ext4 rw,relatime,seclabel,user_xattr,acl, # cat /proc/mounts rootfs / rootfs rw 0 0 proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0 sysfs /sys sysfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0 devtmpfs /dev devtmpfs rw,seclabel,nosuid,relatime,size=2052496k,nr_inodes=204503,mode=755 0 0 devpts /dev/pts devpts rw,seclabel,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0 tmpfs /dev/shm tmpfs rw,seclabel,nosuid,nodev,relatime 0 0 /dev/mapper/vg_daniel-lv_root / ext4 rw,seclabel,relatime,user_xattr,acl,barrier=1,data=ordered 0 0 tmpfs /run tmpfs rw,seclabel,nosuid,nodev,relatime,mode=755 0 0 selinuxfs /sys/fs/selinux selinuxfs rw,relatime 0 0 tmpfs /sys/fs/cgroup tmpfs rw,seclabel,nosuid,nodev,noexec,relatime,mode=755 0 0 cgroup /sys/fs/cgroup/systemd cgroup rw,nosuid,nodev,noexec,relatime,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd 0 0 cgroup /sys/fs/cgroup/cpuset cgroup rw,nosuid,nodev,noexec,relatime,cpuset 0 0 cgroup /sys/fs/cgroup/cpu,cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpuacct,cpu 0 0 cgroup /sys/fs/cgroup/memory cgroup rw,nosuid,nodev,noexec,relatime,memory 0 0 cgroup /sys/fs/cgroup/devices cgroup rw,nosuid,nodev,noexec,relatime,devices 0 0 cgroup /sys/fs/cgroup/freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer 0 0 cgroup /sys/fs/cgroup/net_cls cgroup rw,nosuid,nodev,noexec,relatime,net_cls 0 0 cgroup /sys/fs/cgroup/blkio cgroup rw,nosuid,nodev,noexec,relatime,blkio 0 0 cgroup /sys/fs/cgroup/perf_event cgroup rw,nosuid,nodev,noexec,relatime,perf_event 0 0 systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=25,pgrp=1,timeout=300,minproto=5,maxproto=5,direct 0 0 securityfs /sys/kernel/security securityfs rw,relatime 0 0 configfs /sys/kernel/config configfs rw,relatime 0 0 debugfs /sys/kernel/debug debugfs rw,relatime 0 0 mqueue /dev/mqueue mqueue rw,seclabel,relatime 0 0 hugetlbfs /dev/hugepages hugetlbfs rw,seclabel,relatime 0 0 tmpfs /media tmpfs rw,rootcontext=system_u:object_r:mnt_t:s0,seclabel,nosuid,nodev,noexec,relatime,mode=755 0 0 sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0 binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0 /dev/mapper/sil_aibieiaeafdep1 /boot ext4 rw,seclabel,relatime,user_xattr,acl,barrier=1,data=ordered 0 0 /dev/mapper/vg_daniel-lv_home /home ext4 rw,seclabel,relatime,user_xattr,barrier=1,data=ordered 0 0 /dev/mapper/vg_daniel_2-video_0 /var/video ext4 rw,seclabel,relatime,user_xattr,acl,barrier=1,data=ordered 0 0 /dev/mapper/vg_daniel-lv_root /var/named/chroot/etc/named ext4 rw,seclabel,relatime,user_xattr,acl,barrier=1,data=ordered 0 0 /dev/mapper/vg_daniel-lv_root /var/named/chroot/etc/pki/dnssec-keys ext4 rw,seclabel,relatime,user_xattr,acl,barrier=1,data=ordered 0 0 /dev/mapper/vg_daniel-lv_root /var/named/chroot/usr/lib/bind ext4 rw,seclabel,relatime,user_xattr,acl,barrier=1,data=ordered 0 0
I can confirm this as well on my F16 box. Seems to happen when I "umount" the ISOs, instead of "umount -d". The problem is, I can't find a method to clear this aside from a reboot. No relevant output in dmesg. # mount -o loop /mnt/spacea/CD-images/SLES9/originals/SUSE91E_Disk6.iso /mnt/temp mount: could not find any free loop device # losetup -a /dev/loop0: [0802]:17956989 (/mnt/spacea/CD-images/SLES9/svc_pak/SLES-9 SP3 i386/SLES-9-SP-3-i386-RC4-CD1.iso) /dev/loop1: [0802]:17956992 (/mnt/spacea/CD-images/SLES9/originals/SUSE91E_Disk1.iso) /dev/loop2: [0802]:17956994 (/mnt/spacea/CD-images/SLES9/originals/SUSE91E_Disk2.iso) /dev/loop3: [0802]:17956998 (/mnt/spacea/CD-images/SLES9/originals/SUSE91E_Disk3.iso) /dev/loop4: [0802]:17957000 (/mnt/spacea/CD-images/SLES9/originals/SUSE91E_Disk4.iso) /dev/loop5: [0802]:17957002 (/mnt/spacea/CD-images/SLES9/originals/SUSE91E_Disk5.iso) /dev/loop6: [0802]:17957004 (/mnt/spacea/CD-images/SLES9/originals/SUSE91E_Disk6.iso) /dev/loop7: [0802]:17956989 (/mnt/spacea/CD-images/SLES9/svc_pak/SLES-9 SP3 i386/SLES-9-SP-3-i386-RC4-CD1.iso) # cat /sys/block/<loopN>/loop/autoclear <-- e.g. loop0 /sys/block/loop0/loop/autoclear:1 /sys/block/loop1/loop/autoclear:1 /sys/block/loop2/loop/autoclear:1 /sys/block/loop3/loop/autoclear:1 /sys/block/loop4/loop/autoclear:1 /sys/block/loop5/loop/autoclear:1 /sys/block/loop6/loop/autoclear:1 /sys/block/loop7/loop/autoclear:1 # umount /mnt/temp umount: /mnt/temp: not mounted # echo $? 1 # cat /sys/block/<loopN>/loop/autoclear /sys/block/loop0/loop/autoclear:1 /sys/block/loop1/loop/autoclear:1 /sys/block/loop2/loop/autoclear:1 /sys/block/loop3/loop/autoclear:1 /sys/block/loop4/loop/autoclear:1 /sys/block/loop5/loop/autoclear:1 /sys/block/loop6/loop/autoclear:1 /sys/block/loop7/loop/autoclear:1 # strace -e ioctl mount -o loop /mnt/spacea/CD-images/SLES9/originals/SUSE91E_Disk6.iso /mnt/temp ioctl(3, LOOP_GET_STATUS, {number=0, offset=0, flags=LO_FLAGS_AUTOCLEAR, name="/mnt/spacea/CD-images/SLES9/svc_pak/SLES-9 SP3 i386/SLES-9-SP-3", ...}) = 0 ioctl(3, LOOP_GET_STATUS, {number=1, offset=0, flags=LO_FLAGS_AUTOCLEAR, name="/mnt/spacea/CD-images/SLES9/originals/SUSE91E_Disk1.iso", ...}) = 0 ioctl(3, LOOP_GET_STATUS, {number=2, offset=0, flags=LO_FLAGS_AUTOCLEAR, name="/mnt/spacea/CD-images/SLES9/originals/SUSE91E_Disk2.iso", ...}) = 0 ioctl(3, LOOP_GET_STATUS, {number=3, offset=0, flags=LO_FLAGS_AUTOCLEAR, name="/mnt/spacea/CD-images/SLES9/originals/SUSE91E_Disk3.iso", ...}) = 0 ioctl(3, LOOP_GET_STATUS, {number=4, offset=0, flags=LO_FLAGS_AUTOCLEAR, name="/mnt/spacea/CD-images/SLES9/originals/SUSE91E_Disk4.iso", ...}) = 0 ioctl(3, LOOP_GET_STATUS, {number=5, offset=0, flags=LO_FLAGS_AUTOCLEAR, name="/mnt/spacea/CD-images/SLES9/originals/SUSE91E_Disk5.iso", ...}) = 0 ioctl(3, LOOP_GET_STATUS, {number=6, offset=0, flags=LO_FLAGS_AUTOCLEAR, name="/mnt/spacea/CD-images/SLES9/originals/SUSE91E_Disk6.iso", ...}) = 0 ioctl(3, LOOP_GET_STATUS, {number=7, offset=0, flags=LO_FLAGS_AUTOCLEAR, name="/mnt/spacea/CD-images/SLES9/svc_pak/SLES-9 SP3 i386/SLES-9-SP-3", ...}) = 0 mount: could not find any free loop device +++ exited with 2 +++ # uname -a Linux jantmanwork 3.3.8-1.fc16.x86_64 #1 SMP Mon Jun 4 20:49:02 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux # rpm -qf /bin/mount util-linux-2.20.1-2.3.fc16.x86_64 # strace -e umount umount /mnt/temp umount("/mnt/temp", 0) = -1 EINVAL (Invalid argument) umount: /mnt/temp: not mounted +++ exited with 1 +++ # findmnt /mnt/temp <no output> # cat /proc/mounts rootfs / rootfs rw 0 0 proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0 sysfs /sys sysfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0 devtmpfs /dev devtmpfs rw,seclabel,nosuid,relatime,size=4055816k,nr_inodes=1013954,mode=755 0 0 devpts /dev/pts devpts rw,seclabel,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0 tmpfs /dev/shm tmpfs rw,seclabel,nosuid,nodev,relatime 0 0 /dev/sda3 / ext4 rw,seclabel,relatime,user_xattr,barrier=1,data=ordered 0 0 tmpfs /run tmpfs rw,seclabel,nosuid,nodev,relatime,mode=755 0 0 selinuxfs /sys/fs/selinux selinuxfs rw,relatime 0 0 tmpfs /sys/fs/cgroup tmpfs rw,seclabel,nosuid,nodev,noexec,mode=755 0 0 cgroup /sys/fs/cgroup/systemd cgroup rw,nosuid,nodev,noexec,relatime,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd 0 0 cgroup /sys/fs/cgroup/cpuset cgroup rw,nosuid,nodev,noexec,relatime,cpuset 0 0 cgroup /sys/fs/cgroup/cpu,cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpuacct,cpu 0 0 cgroup /sys/fs/cgroup/memory cgroup rw,nosuid,nodev,noexec,relatime,memory 0 0 cgroup /sys/fs/cgroup/devices cgroup rw,nosuid,nodev,noexec,relatime,devices 0 0 cgroup /sys/fs/cgroup/freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer 0 0 cgroup /sys/fs/cgroup/net_cls cgroup rw,nosuid,nodev,noexec,relatime,net_cls 0 0 cgroup /sys/fs/cgroup/blkio cgroup rw,nosuid,nodev,noexec,relatime,blkio 0 0 cgroup /sys/fs/cgroup/perf_event cgroup rw,nosuid,nodev,noexec,relatime,perf_event 0 0 systemd-1 /proc/sys/fs/binfmt_misc autofs rw,relatime,fd=27,pgrp=1,timeout=300,minproto=5,maxproto=5,direct 0 0 mqueue /dev/mqueue mqueue rw,seclabel,relatime 0 0 debugfs /sys/kernel/debug debugfs rw,relatime 0 0 securityfs /sys/kernel/security securityfs rw,relatime 0 0 hugetlbfs /dev/hugepages hugetlbfs rw,seclabel,relatime 0 0 tmpfs /media tmpfs rw,rootcontext=system_u:object_r:mnt_t:s0,seclabel,nosuid,nodev,noexec,relatime,mode=755 0 0 configfs /sys/kernel/config configfs rw,relatime 0 0 binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,relatime 0 0 /dev/sda4 /var ext4 rw,seclabel,relatime,user_xattr,acl,barrier=1,data=ordered 0 0 sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0 /dev/sda1 /boot ext4 rw,seclabel,relatime,user_xattr,acl,barrier=1,data=ordered 0 0 /dev/sda2 /mnt/spacea ext4 rw,seclabel,relatime,user_xattr,acl,barrier=1,data=ordered 0 0 /dev/sdb1 /home ext4 rw,seclabel,relatime,user_xattr,acl,barrier=1,data=ordered 0 0 /dev/sdb2 /mnt/spaceb ext4 rw,seclabel,relatime,user_xattr,acl,barrier=1,data=ordered 0 0
Are you able to reproduce this problem with Fedora17/18 ?
I cannot reproduce in Fedora 17.