losetup ne trouve pas le premier périphérique de boucle inutilisé et ne répertorie pas les périphériques occupés

2
$ sudo losetup -f ~/vhost/.test_04

était suspendu (assis pendant une heure sans trouver la prochaine boucle disponible.) J'ai donc vérifié à la main

$ sudo losetup -f
/dev/loop1

Cela semblait fonctionner comme prévu, alors j'ai vérifié la disponibilité avec

$ sudo losetup -nl
/dev/loop8         0      0         1  0 ~/vhosts/.test_02 0
/dev/loop2         0      0         1  0 ~/vhosts/.test_03 0
/dev/loop0         0      0         1  0 ~/vhosts/.test_00 0 
/dev/loop3         0      0         0  0 ~/vhosts/.test_01 0

Bien, loop1 semble inoccupé

$ sudo losetup /dev/loop1 ~/vhost/.test_04
losetup: ~/vhost/.test_04: failed to set up loop device: Device or resource busy

J'ai vérifié avec

$ for i in $(seq 0 14);do sudo losetup -nl /dev/loop$i; done 
/dev/loop0         0      0         1  0 ~/vhosts/.test_00 0
/dev/loop1         0      0         1  0 ~/vhosts/.test_01 0
/dev/loop2         0      0         1  0 ~/vhosts/.test_02 0
/dev/loop3         0      0         0  0 ~/vhosts/.test_03 0
/dev/loop4                          0  0             0
/dev/loop5                          0  0             0
/dev/loop6                          0  0             0
/dev/loop7                          0  0             0
/dev/loop8         0      0         1  0 ~/vhosts/.test_01 0
/dev/loop9         0      0         1  0 ~/vhosts/.test_01 0
/dev/loop10         0      0         1  0 ~/vhosts/.test_01 0
/dev/loop11         0      0         1  0 ~/vhosts/.test_01 0
/dev/loop12         0      0         1  0 ~/vhosts/.test_01 0
/dev/loop13         0      0         1  0 ~/vhosts/.test_01 0
losetup: /dev/loop14: failed to use device: No such device
$ ls -la /vhosts/.test_01
-rw------- 1 x x 2097152 Oct 17 21:31 ~/vhosts/.test_01

$ sudo cryptsetup status /dev/mapper/vda_01
/dev/mapper/vda_01 is active and is in use.
  type:    PLAIN
  cipher:  aes-xts-plain64
  keysize: 256 bits
  device:  /dev/loop8
  loop:    ~/vhosts/.test_01
  offset:  0 sectors
  size:    <good> sectors
  mode:    read/write

$ uname -a
Linux desktop 4.12.0-1-amd64 #1 SMP Debian 4.12.6-1 (2017-08-12) x86_64 GNU/Linux
$ sudo losetup --version
losetup from util-linux 2.30.2

Est-ce un bug dans losetup ou dans le noyau linux?

losetup -f Trouver le premier périphérique de boucle inutilisé et imprimer son nom

ne semble pas fonctionner comme prévu dans la documentation.

$ sudo lsof|grep loop
loop2      3208             root  cwd       DIR                8,6         4096          2 /
loop2      3208             root  rtd       DIR                8,6         4096          2 /
loop2      3208             root  txt   unknown                                            /proc/3208/exe
loop8      6958             root  cwd       DIR                8,6         4096          2 /
loop8      6958             root  rtd       DIR                8,6         4096          2 /
loop8      6958             root  txt   unknown                                            /proc/6958/exe
loop3     19520             root  cwd       DIR                8,6         4096          2 /
loop3     19520             root  rtd       DIR                8,6         4096          2 /
loop3     19520             root  txt   unknown                                            /proc/19520/exe
loop0     19605             root  cwd       DIR                8,6         4096          2 /
loop0     19605             root  rtd       DIR                8,6         4096          2 /
loop0     19605             root  txt   unknown                                            /proc/19605/exe
Alexx Roche
la source
Rien de drôle dans syslog? Le fichier ~ / vhost / .test_04 lui-même a-t-il été occupé, pas perdu?
Xen2050
J'ai vérifié lsof et .test_04 ne s'affiche pas. syslog n'a pas d'entrée pour losetup; kern.log et messages a:losetup invoked oom-killer: gfp_mask=0x14280ca(GFP_HIGHUSER_MOVABLE|__GFP_ZERO), nodemask=(null), order=0, oom_score_adj=0
Alexx Roche