On 2018/10/5 下午6:58, Hans van Kranenburg wrote: > On 10/05/2018 09:51 AM, Qu Wenruo wrote: >> >> >> On 2018/10/5 上午5:24, Hans van Kranenburg wrote: >>> This patch set contains an additional fix for a newly exposed bug after >>> the previous attempt to fix a chunk allocator bug for new DUP chunks: >>> >>> https://lore.kernel.org/linux-btrfs/782f6000-30c0-0085-abd2-74ec5827c...@mendix.com/T/#m609ccb5d32998e8ba5cfa9901c1ab56a38a6f374 >> >> For that bug, did you succeeded in reproducing the bug? > > Yes, open the above link and scroll to "Steps to reproduce".
That's beyond device boundary one. Also reproduced here. And hand-crafted a super small image as test case for btrfs-progs. But I'm a little curious about the dev extent overlapping case. Have you got one? Thanks, Qu > > o/ > >> I'm adding dev extent overlap checking in btrfs_verify_dev_extents() and >> btrfs-progs. >> I think it could help to detect such problem. >> >> Thanks, >> Qu >> >>> >>> The DUP fix is "fix more DUP stripe size handling". I did that one >>> before starting to change more things so it can be applied to earlier >>> LTS kernels. >>> >>> Besides that patch, which is fixing the bug in a way that is least >>> intrusive, I added a bunch of other patches to help getting the chunk >>> allocator code in a state that is a bit less error-prone and >>> bug-attracting. >>> >>> When running this and trying the reproduction scenario, I can now see >>> that the created DUP device extent is 827326464 bytes long, which is >>> good. >>> >>> I wrote and tested this on top of linus 4.19-rc5. I still need to create >>> a list of related use cases and test more things to at least walk >>> through a bunch of obvious use cases to see if there's nothing exploding >>> too quickly with these changes. However, I'm quite confident about it, >>> so I'm sharing all of it already. >>> >>> Any feedback and review is appreciated. Be gentle and keep in mind that >>> I'm still very much in a learning stage regarding kernel development. >>> >>> The stable patches handling workflow is not 100% clear to me yet. I >>> guess I have to add a Fixes: in the DUP patch which points to the >>> previous commit 92e222df7b. >>> >>> Moo!, >>> Knorrie >>> >>> Hans van Kranenburg (6): >>> btrfs: alloc_chunk: do not refurbish num_bytes >>> btrfs: alloc_chunk: improve chunk size variable name >>> btrfs: alloc_chunk: fix more DUP stripe size handling >>> btrfs: fix ncopies raid_attr for RAID56 >>> btrfs: introduce nparity raid_attr >>> btrfs: alloc_chunk: rework chunk/stripe calculations >>> >>> fs/btrfs/volumes.c | 84 +++++++++++++++++++++++----------------------- >>> fs/btrfs/volumes.h | 4 ++- >>> 2 files changed, 45 insertions(+), 43 deletions(-) >>> >> > >
signature.asc
Description: OpenPGP digital signature