Re: [RFC][PATCH] fstests: regression test for xfs leftover CoW extent error

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Sep 4, 2017 at 12:04 AM, Darrick J. Wong
<darrick.wong@xxxxxxxxxx> wrote:
> On Sun, Sep 03, 2017 at 08:21:33PM +0200, Christoph Hellwig wrote:
>> > So basically there are two bugs here -- the fcollapse/finsert code needs
>> > to shift the CoW fork extents down and up;
>>
>> Or make sure that we don't have any extents in the COW fork?
>
> It's a big hammer approach, but yes that'd work.
>
> We're already forcing all the dirty pages out anyway so I guess it's no
> big deal.
>
>> > diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c
>> > index 9207d61..ae3b18f 100644
>> > --- a/fs/xfs/xfs_inode.c
>> > +++ b/fs/xfs/xfs_inode.c
>> > @@ -1625,7 +1625,7 @@ xfs_itruncate_extents(
>> >         /*
>> >          * Clear the reflink flag if we truncated everything.
>> >          */
>> > -       if (ip->i_d.di_nblocks == 0 && xfs_is_reflink_inode(ip)) {
>> > +       if (ip->i_d.di_nblocks == 0 && ip->i_cnextents == 0 && xfs_is_reflink_inode(ip)) {
>>
>> Btw, it seems like we should generally clear the reflink flag and
>> tag if ip->i_cnextents is zero and not even bother looking at di_nblocks.
>
> We can't -- imagine shortening to 8k a reflinked 12k file that hasn't been
> written to.  It has no cow extents, but we cannot drop the reflink flag.
>

This change fixes the reported error.
I will re-post the test once there is a commit that explains the problem,
unless one of you guys wants to re-post the test and make it less brain dead
that's also fine with me.

Thanks,
Amir.
--
To unsubscribe from this list: send the line "unsubscribe linux-xfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [XFS Filesystem Development (older mail)]     [Linux Filesystem Development]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux RAID]     [Linux SCSI]


  Powered by Linux