On Fri, Feb 22, 2013 at 01:34:26AM -0500, Marios Titas wrote:
> A few weeks ago I reported a similar bug [1]. It has to do with file
> renaming. Do you think that it is related? This patch doesn't seem to
> help.

Yes, they're related, and I sent you a patch in [1] thread, could you check it?

thanks,
liubo

> 
> [1] http://www.mail-archive.com/linux-btrfs@vger.kernel.org/msg21640.html
> 
> On Thu, Feb 21, 2013 at 3:34 PM, Josef Bacik <jba...@fusionio.com> wrote:
> > A user reported hitting the BUG_ON() in btrfs_finished_ordered_io() where 
> > we had
> > csums on a NOCOW extent.  This can happen if we have NODATACOW set but not
> > NODATASUM set, which can happen in two cases, either we mount with -o 
> > nodatacow
> > and then write into preallocated space, or chattr +C a directory and move a 
> > file
> > into that directory.  This patch fixes up those two cases and now we should
> > uniformly have NODATACOW and NODATASUM set always.  Thanks,
> >
> > Signed-off-by: Josef Bacik <jba...@fusionio.com>
> > ---
> >  fs/btrfs/inode.c |    6 ++++--
> >  1 files changed, 4 insertions(+), 2 deletions(-)
> >
> > diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
> > index 40d49da..5d7ceb5 100644
> > --- a/fs/btrfs/inode.c
> > +++ b/fs/btrfs/inode.c
> > @@ -5574,7 +5574,8 @@ static struct inode *btrfs_new_inode(struct 
> > btrfs_trans_handle *trans,
> >                 if (btrfs_test_opt(root, NODATASUM))
> >                         BTRFS_I(inode)->flags |= BTRFS_INODE_NODATASUM;
> >                 if (btrfs_test_opt(root, NODATACOW))
> > -                       BTRFS_I(inode)->flags |= BTRFS_INODE_NODATACOW;
> > +                       BTRFS_I(inode)->flags |= BTRFS_INODE_NODATACOW |
> > +                               BTRFS_INODE_NODATASUM;
> >         }
> >
> >         insert_inode_hash(inode);
> > @@ -8069,7 +8070,8 @@ static void fixup_inode_flags(struct inode *dir, 
> > struct inode *inode)
> >         struct btrfs_inode *b_inode = BTRFS_I(inode);
> >
> >         if (b_dir->flags & BTRFS_INODE_NODATACOW)
> > -               b_inode->flags |= BTRFS_INODE_NODATACOW;
> > +               b_inode->flags |= BTRFS_INODE_NODATACOW |
> > +                       BTRFS_INODE_NODATASUM;
> >         else
> >                 b_inode->flags &= ~BTRFS_INODE_NODATACOW;
> >
> > --
> > 1.7.7.6
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> > the body of a message to majord...@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majord...@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to