[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.