Message ID | 20190227060552.3841-1-wqu@suse.com (mailing list archive) |
---|---|
Headers | show |
Series | btrfs-progs: check: Use fs/subvol trees to fix extent tree, not vice versa | expand |
From: Lu Fengqi <lufq.fnst@cn.fujitsu.com> The missing extent will lead to the existence of the gap between adjacent extents. The fsck should can detect the gap correctly and repair by punch a hole. Signed-off-by: Lu Fengqi <lufq.fnst@cn.fujitsu.com> --- .../.lowmem_repairable | 0 .../038-missing-one-file-extent/default_case.img | Bin 0 -> 3072 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/fsck-tests/038-missing-one-file-extent/.lowmem_repairable create mode 100644 tests/fsck-tests/038-missing-one-file-extent/default_case.img diff --git a/tests/fsck-tests/038-missing-one-file-extent/.lowmem_repairable b/tests/fsck-tests/038-missing-one-file-extent/.lowmem_repairable new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/tests/fsck-tests/038-missing-one-file-extent/default_case.img b/tests/fsck-tests/038-missing-one-file-extent/default_case.img new file mode 100644 index 0000000000000000000000000000000000000000..7cc2cd403977a805a58c61f007d517f24412800c GIT binary patch literal 3072 zcmeH{i!<Bl8pqKRLc?y;hF+rDQnDI!b>kMH-NSCzC9O-$A};5kw5V%@DiYed7p<*T zBCb_x>r!!xoRp>As<<aENgC8$98|M}{EnJ4d#0T^f54gPGw(d__j%vvo%z0>dFM^_ zeGodS=|-3OPwd~FrT50J;D21S!0y&kQVM&yZ!a5s?6Mf%(*qwjzr+^;UkLm^5{Mcb z=ZD!ANGr<=Cz{?bgfa@di095{Dd%#|>FbkzSEH`2+QBXTnXB!`ZXAbcT!BcZ8Kos^ zAM%uOxQ?}K@|M1b*Ose0ngIO<LjF1{(DQp*JT>7^&<Uj}S@uwb@K%dpGho?nsy;{Y z&pZRVd7ZTB5%i>#VKUmwGrnwDPXAS6`2~d}mb_iGjrNbwVs$iAV_MJiLB$=}5>IFv z>9Ri9im7d}52u!uU;RuA*+v|@A?qZOI>MK>1rih=-)ty1IMv*HJ)YB%@wx!iHx2ru zVDDgptW-h_?q1Z`@;K(&3k%im)!FTRCg;f|Inb8yu+XcA9<^L8>Khow-FyDFC;^gG zOwJ+OT{;7@rp79iArF~CkGX{pp^9c4vsD}>80t+E?+RPRbW+8i_X2*nD`tBEv-J1Q zE9F)8^}KYb>_wOZ6C|e&%(H8I6H4p=5e@i$uj@;~5j(!H$!^z$%*%VOh2HE)yva zd8FPL-eFz-0lz#m=>K>!e#yr$5N>bm{3aiAk#e~^cCh(ebBn~)b|sg5`9qbD`}gh} zE?D<cElXk^u<jVeb1BHFkXgI$=RspodUFyB16r888|hdHY-eZtsEUm{e-{MT{_bI) zW1xTe;kg^`#NTb@zczd5&+&qh|4509)l9T_d_u!p1AGOXh#al#XwAlY4rypB-@fxA z5%R$r@z_l!*b;HQNQJ0k(s@$Ve}>6p6Dh>mf)GEPo96tw@shabCWYu*m?z?LU#}4D z>1~rwv4T7r2KdL;+nks)n4dSg!u-tPih`(tQA%k@-O5lNLA1R&G|I)q(EzbuhcH^y zlptKhz7%DY;Ni*wiy-?`-}R;wzKdoyp0RRvn=`x>01{1;U;$hzB!XNTl|dC6XHObS z{O!GoNRC>j(Fg>-r086cF1p0L-C)pv;4``xRMXN0y!O+HQ)LC4%dP}$^#EMn6hGR$ zBVkTDp%j0khkX0=)mk-sWR^ha%3aQ%Ym>zC{Rmwj)~nc=ZdKfQ2gFGhvH?w=UVzT@ zYX-4j%*_>F_^r%KsK&aEWSv%EqoziEDZzxB5kaF_PgXB&0B;ty03#MvxLCYB%wkC5 z-nrCC-o77M|0UB<%TEhAY!C1t3+BSloc45Bc$s<t9s^7KM^%!z_8KR^V;F9CYxK%_ ze5Hip<PLbSW(osJ_2v;@QM!CIa)ZHM!N`YTYQ*!95VOSAn#MxAEfU|m&xU+)RVMB# zh){8H10+^tI<`GQk7AQf;Zv*|z|1Lwhlu^x>cSq)DQBx1Dl+qGRc%Bd>%V{IM!(f1 zAI=y@k3_2D-R7P(aRieO9G9@w5X_^Vh!o8vNZD5bVd*N2WOJL1IK`c@W-GXMxT<#K z%K&ly4w~J$)3GB?rTIU*LDH-HR_h%I3&G)%I-CTz@lkVvF_aUl-4Vd--bsCSNHl>A z=gU2HSpk^kJonFh!~-;C0=-@Mdj9Oj6Z5hyK#1b9oB?%E>Q4uBm$&bJqt&KnjUI>3 zE|${dEDooc<;sP;B3ZfFdpemmoqA7Ny1SfNZViPw$aljP1Qv6$qgZ|;*$T;tT<b1b z2|uzzBS%nak(QAe9;otJRfL?#{JvaBL8@-lMuOodUcf04sInD*x)meu4NbUp7^YW5 zEC#ak*Yj~9Mw!dyM|9DRQ>ZnL9J<j}%qiB%JUb26X)Q~|MfYc8WBkP#Fv9Z9v%<=x z{{Fw!r-$bhu5;>Q53&dG@glD(z+AUFdR``IE>`u9t8s2M#)!VLoz*qn(^<APzbG;4 z2^|N1<rrl%=&14RzE~DFl41Yr;4R9w2vEBJWWrT(ZMBuV6A~I;iqIPdP*sb-6sDy1 zWP2_nd6eE}RyZ=#jZWtnp?1Z-Pi`gkPg3)7XWLDfQnc6f$Di{l_ytzAYn6a#m9Fad zY)Do2#4%6c?+h0m?6A;3YN+E|yKr2-MwcTO4bsXVUsb|rT~w*vj`LBD;f1L#1~YqS zPFoG)&rbLR4pDqs0)z4QQ?Bh_Np}sjf$*ZDYADq^zAb^tJ_}(wJBI3dt#b|oI;qn_ z+Dp66%hUzf=4>%F)Z}L)g!)hY2a``!^Pvk>axI@a{;S%yJf|cuX~L_EDg#&9=npHi cM@=@SQR^9<Z{oH*YHS^F;J<pmi2oA!H;vM1aR2}S literal 0 HcmV?d00001
From: Su Yue <suy.fnst@cn.fujitsu.com> Lowmem can repair after commit 'btrfs-progs: lowmem: move nbytes check before isize check', so add the beacon file. Signed-off-by: Su Yue <suy.fnst@cn.fujitsu.com> --- tests/fsck-tests/001-bad-file-extent-bytenr/.lowmem_repairable | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/fsck-tests/001-bad-file-extent-bytenr/.lowmem_repairable diff --git a/tests/fsck-tests/001-bad-file-extent-bytenr/.lowmem_repairable b/tests/fsck-tests/001-bad-file-extent-bytenr/.lowmem_repairable new file mode 100644 index 000000000000..e69de29bb2d1
Gentle ping? Any comment on this? Thanks, Qu On 2019/2/27 下午2:05, Qu Wenruo wrote: > This patchset can be fetched from github: > https://github.com/adam900710/btrfs-progs/tree/file_extents_fixes > > This is based on v4.20.2 tag. > > Originally for fsck-tests/001-bad-file-extent-bytenr we're going to fix > it by resetting the corrupted file extent, using the disk bytenr from > data backref. > > However in real world, extent tree is the most fragile one while fs tree > is more reliable. > This means fixing using extent tree can sometimes be more dangerous, and > causing extra corruption from repair. > > Further more, that test case is a big blockage for any later > modification on file extent repair code. > > So the goal of this patchset is to change the repair behavior from > rebuilding file extents using data backref, to dropping invalid file > extents and modify extent tree. > > Despite above change, we have some small bug fixes for: > - False alert for file extents gap > - Bad data backref -> file extent search in repair mode > > The patchset is mostly from Fujitsu guys (Lu, Su Yue, Su Yanjun). > My work here is: > - Solve rebase conflicts > Mostly with DIR_ITEM hash mismatch patchset > > - Commit message/comment update > Make them a little more reader friendly > > - Reorder the patchset > Make small fixes first. > > Changelog: > v1.1: > - Rebase to v4.20.2 > - Run self tests for misc/mkfs/fsck group. > The only problem is from misc/035, due to we have reverted the fix. > It's not a regression so the patchset should still be good. > > Lu Fengqi (2): > btrfs-progs: lowmem: fix false alert about the existence of gaps in > the check_file_extent > btrfs-progs: tests: add case for inode lose one file extent > > Qu Wenruo (1): > btrfs-progs: Update backup roots when writing super blocks > > Su Yanjun (4): > btrfs-progs: Revert "btrfs-progs: Add repair and report function for > orphan file extent." > btrfs-progs: Revert "btrfs-progs: Record orphan data extent ref to > corresponding root." > btrfs-progs: check: fix wrong @offset used in find_possible_backrefs() > btrfs-progs: check: Delete file extent item with unaligned disk bytenr > > Su Yue (7): > btrfs-progs: lowmem: add argument path to punch_extent_hole() > btrfs-progs: lowmem: move nbytes check before isize check > btrfs-progs: lowmem: fix false alert if extent item has been repaired > btrfs-progs: lowmem: check unaligned disk_bytenr for extent_data > btrfs-progs: lowmem: rename delete_extent_tree_item() to delete_item() > btrfs-progs: lowmem: delete unaligned bytes extent data under repair > btrfs-progs: fsck-test: enable lowmem repair for case 001 > > check/main.c | 584 +++++++++++------- > check/mode-lowmem.c | 293 +++++---- > check/mode-original.h | 30 +- > ctree.h | 10 +- > disk-io.c | 80 ++- > .../.lowmem_repairable | 0 > .../.lowmem_repairable | 0 > .../default_case.img | Bin 0 -> 3072 bytes > 8 files changed, 621 insertions(+), 376 deletions(-) > create mode 100644 tests/fsck-tests/001-bad-file-extent-bytenr/.lowmem_repairable > create mode 100644 tests/fsck-tests/038-missing-one-file-extent/.lowmem_repairable > create mode 100644 tests/fsck-tests/038-missing-one-file-extent/default_case.img >