[I had first posted onto the Forum about this issue] Two months ago, - next to a call to |`||delete-old-libs`| or `install world`, I don't really know - my box that is following FreeBSD-11 Stable ran into a weird situation. A set of files, especially `/lib/libjail.so.1` are in both states `existing` and `not existing`: I means: david:~>cp ~david/libjail.so.1 /lib cp: /lib/libjail.so.1: File exists But: david:~>ls /lib/libjail.so.1 ls: /lib/libjail.so.1: No such file or directory david:~>find /lib -name "libjail.so.1" -print /lib/libjail.so.1 david:~>find /lib -name "libjail.so.1" -ls find: /lib/libjail.so.1: No such file or directory With deeper investigation, the file is in fact mapped to an `inode`: root at dmarec:~ # ls -di /lib 13 /lib root at dmarec:~ # zdb -dddd zroot/ 13 | grep libjail.so.1 libjail.so.1 = 10552574 (type: Regular File) Which fails with `zdb` on: root at dmarec:~ # zdb -dddd zroot/ 10552574 Dataset zroot [ZPL], ID 21, cr_txg 1, 114G, 2570002 objects, rootbp DVA[0]=<0:b97d6ea00:200> DVA[1]=<0:1c212b0400:200> [L0 DMU objset] fletcher4 lz4 LE contiguous unique double size=800L/200P birth=3852240L/3852240P fill=2570002 cksum=17b78fb7e4:7c87a526a07:16251edfaae60:2ce0c5734ccf2f Object lvl iblk dblk dsize lsize %full type zdb: dmu_bonus_hold(10552574) failed, errno 2 `stat (2)` returns ENOENT when checking for the file: david:~>truss stat -L /lib/libjail.so.1 ... stat("/lib/libjail.so.1",0x7fffffffe7e8) ERR#2 'No such file or directory' david:~>truss stat -L /lib/libjail.so.1 A pass with `zfs scrub` didn't help. Any clue is welcome. What's that `dmu_bonus_hold` stands for ? -- David Marec https://lapinbilly.eu
On Sat, Dec 17, 2016 at 9:01 PM, David Marec <david.marec at davenulle.org> wrote:> > david:~>ls /lib/libjail.so.1 > ls: /lib/libjail.so.1: No such file or directory > david:~>find /lib -name "libjail.so.1" -print > /lib/libjail.so.1 > david:~>find /lib -name "libjail.so.1" -ls > find: /lib/libjail.so.1: No such file or directory >You have a directory entry pointing at a freed inode (or zfs equivalent). -- brandon s allbery kf8nh sine nomine associates allbery.b at gmail.com ballbery at sinenomine.net unix, openafs, kerberos, infrastructure, xmonad http://sinenomine.net
On Sat, Dec 17, 2016 at 3:01 PM, David Marec <david.marec at davenulle.org> wrote:> [I had first posted onto the Forum about this issue] > > Two months ago, > > - next to a call to |`||delete-old-libs`| or `install world`, I don't > really know - > > my box that is following FreeBSD-11 Stable ran into a weird situation. > > A set of files, especially `/lib/libjail.so.1` are in both states > `existing` and `not existing`: > > I means: > > david:~>cp ~david/libjail.so.1 /lib > cp: /lib/libjail.so.1: File exists > > But: > > david:~>ls /lib/libjail.so.1 > ls: /lib/libjail.so.1: No such file or directory > david:~>find /lib -name "libjail.so.1" -print > /lib/libjail.so.1 > david:~>find /lib -name "libjail.so.1" -ls > find: /lib/libjail.so.1: No such file or directory > > With deeper investigation, the file is in fact mapped to an `inode`: > > root at dmarec:~ # ls -di /lib > 13 /lib > root at dmarec:~ # zdb -dddd zroot/ 13 | grep libjail.so.1 > libjail.so.1 = 10552574 (type: Regular File) > > Which fails with `zdb` on: > > root at dmarec:~ # zdb -dddd zroot/ 10552574 > Dataset zroot [ZPL], ID 21, cr_txg 1, 114G, 2570002 objects, rootbp > DVA[0]=<0:b97d6ea00:200> DVA[1]=<0:1c212b0400:200> [L0 DMU objset] > fletcher4 lz4 LE contiguous unique double size=800L/200P > birth=3852240L/3852240P fill=2570002 > cksum=17b78fb7e4:7c87a526a07:16251edfaae60:2ce0c5734ccf2f > > Object lvl iblk dblk dsize lsize %full type > zdb: dmu_bonus_hold(10552574) failed, errno 2 > > > `stat (2)` returns ENOENT when checking for the file: > david:~>truss stat -L /lib/libjail.so.1 > ... > stat("/lib/libjail.so.1",0x7fffffffe7e8) ERR#2 'No such > file or > directory' david:~>truss stat -L /lib/libjail.so.1 > > A pass with `zfs scrub` didn't help. > > Any clue is welcome. What's that `dmu_bonus_hold` stands for ? >I am unable to understand what your intent is here. If you wish to delete it, you can do: find . -inum 10552574 -exec rm {} \; -- Adam
Hi, On 18.12.2016 02:01, David Marec wrote:> > A pass with `zfs scrub` didn't help. > > Any clue is welcome. What's that `dmu_bonus_hold` stands for ? >Just out of the curiosity - is it on a redundant pool and does the 'zpool status' report any error ? Eugene.