xfs
[Top] [All Lists]

Re: [Bisected] Corruption of root fs during git bisect of drm system han

To: Markus Trippelsdorf <markus@xxxxxxxxxxxxxxx>
Subject: Re: [Bisected] Corruption of root fs during git bisect of drm system hang
From: Mark Tinguely <tinguely@xxxxxxx>
Date: Fri, 19 Jul 2013 16:11:28 -0500
Cc: Dave Chinner <david@xxxxxxxxxxxxx>, Ben Myers <bpm@xxxxxxx>, Stan Hoeppner <stan@xxxxxxxxxxxxxxxxx>, xfs@xxxxxxxxxxx
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <20130719122235.GA360@x4>
References: <20130713090523.GA362@x4> <20130712070721.GA359@x4> <20130715022841.GH5228@dastard> <20130715064734.GA361@x4> <20130719122235.GA360@x4>
User-agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:9.0) Gecko/20120122 Thunderbird/9.0
On 07/19/13 07:22, Markus Trippelsdorf wrote:

I've bisected this issue to the following commit:

  commit cca9f93a52d2ead50b5da59ca83d5f469ee4be5f
  Author: Dave Chinner<dchinner@xxxxxxxxxx>
  Date:   Thu Jun 27 16:04:49 2013 +1000

      xfs: don't do IO when creating an new inode

Reverting this commit on top of the Linus tree "solves" all problems for
me. IOW I no longer loose my KDE and LibreOffice config files during a
crash. Log recovery now works fine and xfs_repair shows no issues.

So users of 3.11.0-rc1 beware. Only run this version if you have
up-to-date backups handy.


I reviewed the above patch and liked it but, I think I recreated the above mentioned problem with a simple script:

cp /root/.bash_history /root/.lesshst /root/.pwclientrc /root/.viminfo /root/.bash_profile /root/.lesshst.YCJCDz /root/.quiltrc /somexfsdir
sync
echo 'c' > /proc/sysrq-trigger
.... reboot, remount ...
cd /somexfsdir

# ls -la
ls: cannot access .bash_history: No such file or directory
ls: cannot access .lesshst: No such file or directory
ls: cannot access .pwclientrc: No such file or directory
ls: cannot access .viminfo: No such file or directory
ls: cannot access .bash_profile: No such file or directory
ls: cannot access .lesshst.YCJCDz: No such file or directory
ls: cannot access .quiltrc: No such file or directory
total 4
drwxr-xr-x  2 root root  131 Jul 19 15:32 .
drwxr-xr-x 28 root root 4096 Jul 19 15:35 ..
??????????  ? ?    ?       ?            ? .bash_history
??????????  ? ?    ?       ?            ? .bash_profile
??????????  ? ?    ?       ?            ? .lesshst
??????????  ? ?    ?       ?            ? .lesshst.YCJCDz
??????????  ? ?    ?       ?            ? .pwclientrc
??????????  ? ?    ?       ?            ? .quiltrc
??????????  ? ?    ?       ?            ? .viminfo

# cat .bash_history
cat: .bash_history: No such file or directory

xfs_db> inode 131
xfs_db> p
core.magic = 0x494e
core.mode = 0
core.version = 2
core.format = 2 (extents)
core.nlinkv2 = 0
core.onlink = 0
core.projid_lo = 0
core.projid_hi = 0
core.uid = 0
core.gid = 0
core.flushiter = 1
core.atime.sec = Fri Jul 19 15:26:13 2013
core.atime.nsec = 990813003
core.mtime.sec = Fri Jul 19 15:26:13 2013
core.mtime.nsec = 990813003
core.ctime.sec = Fri Jul 19 15:30:34 2013
core.ctime.nsec = 822788719
core.size = 0
core.nblocks = 0
core.extsize = 0
core.nextents = 0
core.naextents = 0
core.forkoff = 0
core.aformat = 2 (extents)
core.dmevmask = 0
core.dmstate = 0
core.newrtbm = 0
core.prealloc = 0
core.realtime = 0
core.immutable = 0
core.append = 0
core.sync = 0
core.noatime = 0
core.nodump = 0
core.rtinherit = 0
core.projinherit = 0
core.nosymlinks = 0
core.extsz = 0
core.extszinherit = 0
core.nodefrag = 0
core.filestream = 0
core.gen = 3707503345
next_unlinked = null
u = (empty)

revert the above commit and the problem goes away.
Output:
The files are small files that I could find on the test box:
-rw-------  1 root root 28158 Jul 19 15:47 .bash_history
-rw-r--r--  1 root root    43 Jul 19 15:47 .bash_profile
-rw-------  1 root root  1046 Jul 19 15:47 .lesshst
-rw-------  1 root root   919 Jul 19 15:47 .lesshst.YCJCDz
-rw-r--r--  1 root root   344 Jul 19 15:47 .pwclientrc
-rw-r--r--  1 root root  2502 Jul 19 15:47 .quiltrc
-rw-------  1 root root 21895 Jul 19 15:47 .viminfo

And they diff the same as the originals.
core.magic = 0x494e
core.mode = 0100600
core.version = 2
core.format = 2 (extents)
core.nlinkv2 = 1
core.onlink = 0
core.projid_lo = 0
core.projid_hi = 0
core.uid = 0
core.gid = 0
core.flushiter = 1
core.atime.sec = Fri Jul 19 15:56:04 2013
core.atime.nsec = 954825196
core.mtime.sec = Fri Jul 19 15:47:18 2013
core.mtime.nsec = 366686434
core.ctime.sec = Fri Jul 19 15:47:18 2013
core.ctime.nsec = 366686434
core.size = 28158
core.nblocks = 7
core.extsize = 0
core.nextents = 1
core.naextents = 0
core.forkoff = 0
core.aformat = 2 (extents)
core.dmevmask = 0
core.dmstate = 0
core.newrtbm = 0
core.prealloc = 0
core.realtime = 0
core.immutable = 0
core.append = 0
core.sync = 0
core.noatime = 0
core.nodump = 0
core.rtinherit = 0
core.projinherit = 0
core.nosymlinks = 0
core.extsz = 0
core.extszinherit = 0
core.nodefrag = 0
core.filestream = 0
core.gen = 0
next_unlinked = null
u.bmx[0] = [startoff,startblock,blockcount,extentflag] 0:[0,12,7,0]

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