Bug 787339 - mount: could not find any free loop device
Summary: mount: could not find any free loop device
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: util-linux
Version: 16
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Karel Zak
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2012-02-04 05:32 UTC by John Griffiths
Modified: 2012-10-29 15:23 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2012-10-29 15:23:16 UTC
Type: ---


Attachments (Terms of Use)

Description John Griffiths 2012-02-04 05:32:18 UTC
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

Comment 1 Karel Zak 2012-02-06 10:12:51 UTC
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.

Comment 2 John Griffiths 2012-02-06 15:56:02 UTC
# 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

Comment 3 Karel Zak 2012-02-06 17:40:22 UTC
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.

Comment 4 John Griffiths 2012-02-06 18:48:42 UTC
# 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

Comment 5 Jason Antman 2012-09-07 20:24:52 UTC
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

Comment 6 Karel Zak 2012-10-24 10:01:16 UTC
Are you able to reproduce this problem with Fedora17/18 ?

Comment 7 John Griffiths 2012-10-24 14:49:12 UTC
I cannot reproduce in Fedora 17.


Note You need to log in before you can comment on or make changes to this bug.