xfs
[Top] [All Lists]

Re: xfsdump/xfsrestore trash hardlinks

To: Linux XFS Mailing List <linux-xfs@xxxxxxxxxxx>
Subject: Re: xfsdump/xfsrestore trash hardlinks
From: "Bernhard R. Erdmann" <be@xxxxxxxxxxx>
Date: Sun, 11 Nov 2001 17:30:23 +0100
References: <3BEC19A2.A59C9659@berdmann.de> <3BED196E.A6E54BED@berdmann.de>
Sender: owner-linux-xfs@xxxxxxxxxxx
I'm still investigating this hard link story...

Now I've got a wonderful reproducible behaviour: each incremental dump
with an odd level trashes four of eleven links and each incremental dump
with an even level restores the missing four links.

The filesystem gets rsync'ed (-aH) to an MRTG (http://www.mrtg.org/)
subdirectory tree. Some PNGs (mrtg-{l,m,r,ti}.png) have a link count of
11. In addition, there are eight inodes with a link counter of five and
21 inodes with a link counter of two.

Counting the links in the restored filesystem after level 0:
# cat hl-count.test2.0
files with link counter = 1 :     624
files with link counter = 2 :      42
files with link counter = 3 :       0
files with link counter = 4 :       0
files with link counter = 5 :      40
files with link counter = 6 :       0
files with link counter = 7 :       0
files with link counter = 8 :       0
files with link counter = 9 :       0
files with link counter = 10 :       0
files with link counter = 11 :      44
files with link counter = 12 :       0
files with link counter = 13 :       0

after having level 1 applied:
# cat hl-count.test2.1
files with link counter = 1 :     636
files with link counter = 2 :      18
files with link counter = 3 :       0
files with link counter = 4 :       0
files with link counter = 5 :      40
files with link counter = 6 :       0
files with link counter = 7 :      28
files with link counter = 8 :       0
files with link counter = 9 :       0
files with link counter = 10 :       0
files with link counter = 11 :       0
files with link counter = 12 :       0
files with link counter = 13 :       0

level 2:
# cat hl-count.test2.2
files with link counter = 1 :     615
files with link counter = 2 :      32
files with link counter = 3 :       0
files with link counter = 4 :       0
files with link counter = 5 :      40
files with link counter = 6 :       0
files with link counter = 7 :       0
files with link counter = 8 :       0
files with link counter = 9 :       0
files with link counter = 10 :       0
files with link counter = 11 :      44
files with link counter = 12 :       0
files with link counter = 13 :       0

level 3:
# cat hl-count.test2.3
files with link counter = 1 :     636
files with link counter = 2 :      18
files with link counter = 3 :       0
files with link counter = 4 :       0
files with link counter = 5 :      40
files with link counter = 6 :       0
files with link counter = 7 :      28
files with link counter = 8 :       0
files with link counter = 9 :       0
files with link counter = 10 :       0
files with link counter = 11 :       0
files with link counter = 12 :       0
files with link counter = 13 :       0

level 4:
# cat hl-count.test2.4
files with link counter = 1 :     629
files with link counter = 2 :      32
files with link counter = 3 :       0
files with link counter = 4 :       0
files with link counter = 5 :      40
files with link counter = 6 :       0
files with link counter = 7 :       0
files with link counter = 8 :       0
files with link counter = 9 :       0
files with link counter = 10 :       0
files with link counter = 11 :      44
files with link counter = 12 :       0
files with link counter = 13 :       0


I'll concentrate on the file mrtg/apollo/mrtg-l.png (inode no. 786583).
Some output from xfsrestore -r -v 4 in the different levels:

level 0:
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: adding (new)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: adding (link)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: adding (link)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: adding (link)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: adding (link)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: adding (link)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: adding (link)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: adding (link)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: adding (link)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: adding (link)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: adding (link)
/sbin/xfsrestore: restoring mrtg/ente/mrtg-l.png (786583 1)
/sbin/xfsrestore: restoring regular file ino 786583 mrtg/ente/mrtg-l.png
/sbin/xfsrestore: truncating mrtg/ente/mrtg-l.png from 0 to 538
/sbin/xfsrestore: link mrtg/ente/mrtg-l.png to mrtg/squid/mrtg-l.png
(786583 1)
/sbin/xfsrestore: linking mrtg/ente/mrtg-l.png to mrtg/squid/mrtg-l.png
/sbin/xfsrestore: link mrtg/ente/mrtg-l.png to mrtg/i12/mrtg-l.png
(786583 1)
/sbin/xfsrestore: linking mrtg/ente/mrtg-l.png to mrtg/i12/mrtg-l.png
/sbin/xfsrestore: link mrtg/ente/mrtg-l.png to mrtg/james/mrtg-l.png
(786583 1)
/sbin/xfsrestore: linking mrtg/ente/mrtg-l.png to mrtg/james/mrtg-l.png
/sbin/xfsrestore: link mrtg/ente/mrtg-l.png to mrtg/kpnqwest/mrtg-l.png
(786583 1)
/sbin/xfsrestore: linking mrtg/ente/mrtg-l.png to
mrtg/kpnqwest/mrtg-l.png
/sbin/xfsrestore: link mrtg/ente/mrtg-l.png to
mrtg/kpnqwest/194.122.243.116/mrtg-l.png (786583 1)
/sbin/xfsrestore: linking mrtg/ente/mrtg-l.png to
mrtg/kpnqwest/194.122.243.116/mrtg-l.png
/sbin/xfsrestore: link mrtg/ente/mrtg-l.png to
mrtg/kpnqwest/194.122.243.205/mrtg-l.png (786583 1)
/sbin/xfsrestore: linking mrtg/ente/mrtg-l.png to
mrtg/kpnqwest/194.122.243.205/mrtg-l.png
/sbin/xfsrestore: link mrtg/ente/mrtg-l.png to
mrtg/139.4.65.66/mrtg-l.png (786583 1)
/sbin/xfsrestore: linking mrtg/ente/mrtg-l.png to
mrtg/139.4.65.66/mrtg-l.png
/sbin/xfsrestore: link mrtg/ente/mrtg-l.png to
mrtg/kpnqwest/194.122.243.206/mrtg-l.png (786583 1)
/sbin/xfsrestore: linking mrtg/ente/mrtg-l.png to
mrtg/kpnqwest/194.122.243.206/mrtg-l.png
/sbin/xfsrestore: link mrtg/ente/mrtg-l.png to mrtg/apollo/mrtg-l.png
(786583 1)/sbin/xfsrestore: linking mrtg/ente/mrtg-l.png to
mrtg/apollo/mrtg-l.png
/sbin/xfsrestore: link mrtg/ente/mrtg-l.png to
mrtg/kpnqwest/194.122.243.98/mrtg-l.png (786583 1)
/sbin/xfsrestore: linking mrtg/ente/mrtg-l.png to
mrtg/kpnqwest/194.122.243.98/mrtg-l.png

level 1:
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: retaining (nondir)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: retaining (nondir)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: retaining (nondir)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: retaining (nondir)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: retaining (nondir)
/sbin/xfsrestore: unlink mrtg/squid/mrtg-l.png
/sbin/xfsrestore: unlink mrtg/james/mrtg-l.png
/sbin/xfsrestore: unlink mrtg/i12/mrtg-l.png
/sbin/xfsrestore: unlink mrtg/apollo/mrtg-l.png
/sbin/xfsrestore: processing hardlinks to 786583 1
/sbin/xfsrestore: skipping node 1000001f: real and ref
/sbin/xfsrestore: node 1000001f will be link src
/sbin/xfsrestore: skipping node 1000015e: real and ref
/sbin/xfsrestore: skipping node 10000175: real and ref
/sbin/xfsrestore: skipping node 100001a6: real and ref
/sbin/xfsrestore: skipping node 100001ee: real and ref
/sbin/xfsrestore: skipping node 10000208: real and ref
/sbin/xfsrestore: skipping node 100002c6: real and ref

level 2:
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: retaining (nondir)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: adding (link)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: adding (link)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: adding (link)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: adding (link)
/sbin/xfsrestore: link nondir mrtg/ente/mrtg-l.png to
mrtg/apollo/mrtg-l.png
/sbin/xfsrestore: link nondir mrtg/ente/mrtg-l.png to
mrtg/james/mrtg-l.png
/sbin/xfsrestore: link nondir mrtg/ente/mrtg-l.png to
mrtg/i12/mrtg-l.png
/sbin/xfsrestore: link nondir mrtg/ente/mrtg-l.png to
mrtg/squid/mrtg-l.png
/sbin/xfsrestore: processing hardlinks to 786583 1
/sbin/xfsrestore: skipping node 1000001f: real and ref
/sbin/xfsrestore: node 1000001f will be link src
/sbin/xfsrestore: skipping node 1000015e: real and ref
/sbin/xfsrestore: skipping node 10000175: real and ref
/sbin/xfsrestore: skipping node 100001a6: real and ref
/sbin/xfsrestore: skipping node 100001ee: real and ref
/sbin/xfsrestore: skipping node 10000208: real and ref
/sbin/xfsrestore: skipping node 100002c6: real and ref
/sbin/xfsrestore: making node 10000229 dst: not real, refed, sel
/sbin/xfsrestore: making node 1000004c dst: not real, refed, sel
/sbin/xfsrestore: making node 100000e3 dst: not real, refed, sel
/sbin/xfsrestore: making node 1000022f dst: not real, refed, sel
/sbin/xfsrestore: link nondir mrtg/ente/mrtg-l.png to
mrtg/apollo/mrtg-l.png
/sbin/xfsrestore: link nondir mrtg/ente/mrtg-l.png to
mrtg/james/mrtg-l.png
/sbin/xfsrestore: link nondir mrtg/ente/mrtg-l.png to
mrtg/i12/mrtg-l.png
/sbin/xfsrestore: link nondir mrtg/ente/mrtg-l.png to
mrtg/squid/mrtg-l.png

level 3:
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: retaining (nondir)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: retaining (nondir)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: retaining (nondir)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: retaining (nondir)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: retaining (nondir)
/sbin/xfsrestore: unlink mrtg/squid/mrtg-l.png
/sbin/xfsrestore: unlink mrtg/james/mrtg-l.png
/sbin/xfsrestore: unlink mrtg/i12/mrtg-l.png
/sbin/xfsrestore: unlink mrtg/apollo/mrtg-l.png
/sbin/xfsrestore: processing hardlinks to 786583 1
/sbin/xfsrestore: skipping node 1000001f: real and ref
/sbin/xfsrestore: node 1000001f will be link src
/sbin/xfsrestore: skipping node 1000015e: real and ref
/sbin/xfsrestore: skipping node 10000175: real and ref
/sbin/xfsrestore: skipping node 100001a6: real and ref
/sbin/xfsrestore: skipping node 100001ee: real and ref
/sbin/xfsrestore: skipping node 10000208: real and ref
/sbin/xfsrestore: skipping node 100002c6: real and ref

level 4:
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: retaining (nondir)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: adding (link)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: adding (link)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: adding (link)
/sbin/xfsrestore: dirent mrtg-l.png 786583 1: adding (link)
/sbin/xfsrestore: link nondir mrtg/ente/mrtg-l.png to
mrtg/apollo/mrtg-l.png
/sbin/xfsrestore: link nondir mrtg/ente/mrtg-l.png to
mrtg/james/mrtg-l.png
/sbin/xfsrestore: link nondir mrtg/ente/mrtg-l.png to
mrtg/i12/mrtg-l.png
/sbin/xfsrestore: link nondir mrtg/ente/mrtg-l.png to
mrtg/squid/mrtg-l.png
/sbin/xfsrestore: processing hardlinks to 786583 1
/sbin/xfsrestore: skipping node 1000001f: real and ref
/sbin/xfsrestore: node 1000001f will be link src
/sbin/xfsrestore: skipping node 1000015e: real and ref
/sbin/xfsrestore: skipping node 10000175: real and ref
/sbin/xfsrestore: skipping node 100001a6: real and ref
/sbin/xfsrestore: skipping node 100001ee: real and ref
/sbin/xfsrestore: skipping node 10000208: real and ref
/sbin/xfsrestore: skipping node 100002c6: real and ref
/sbin/xfsrestore: making node 100000b5 dst: not real, refed, sel
/sbin/xfsrestore: making node 10000129 dst: not real, refed, sel
/sbin/xfsrestore: making node 1000011d dst: not real, refed, sel
/sbin/xfsrestore: making node 10000036 dst: not real, refed, sel
/sbin/xfsrestore: link nondir mrtg/ente/mrtg-l.png to
mrtg/apollo/mrtg-l.png
/sbin/xfsrestore: link nondir mrtg/ente/mrtg-l.png to
mrtg/james/mrtg-l.png
/sbin/xfsrestore: link nondir mrtg/ente/mrtg-l.png to
mrtg/i12/mrtg-l.png
/sbin/xfsrestore: link nondir mrtg/ente/mrtg-l.png to
mrtg/squid/mrtg-l.png


<Prev in Thread] Current Thread [Next in Thread>