Whoops, the [PATCH] line should've specified more clearly: This only applies to linux-stable, 3.12.y. Sorry for any confusion. -Jeff On 12/2/16 10:21 PM, Jeff Mahoney wrote: > This reverts commit 644d10716875b24388680925d6c7502420987bfe. > > The original patch for mainline, 6f8960541b1 (Btrfs: don't delay > inode ref updates during log replay) lists 1d52c78afbb (Btrfs: try > not to ENOSPC on log replay) as the only pre-3.18 dependency, but it > also depends on 67de11769bd (Btrfs: introduce the delayed inode ref > deletion for the single link inode), which was introduced in 3.14 > and isn't in 3.12.y. > > The -stable commit added the check to btrfs_delayed_update_inode, > which may look similar to btrfs_delayed_delete_inode_ref, but it's > only superficial. The tops of both functions handle typical > delayed node boilerplate. The upshot is that the patch is harmless > since the caller already checks to see if we're doing log recovery, > so we're not breaking anything. It should be reverted because it > makes it appear as if this issue was fixed for users who did > backport 67de11769bd, when it is not. > > Signed-off-by: Jeff Mahoney > --- > fs/btrfs/delayed-inode.c | 8 -------- > 1 file changed, 8 deletions(-) > > diff --git a/fs/btrfs/delayed-inode.c b/fs/btrfs/delayed-inode.c > index 34f33e1..269ac79 100644 > --- a/fs/btrfs/delayed-inode.c > +++ b/fs/btrfs/delayed-inode.c > @@ -1805,14 +1805,6 @@ int btrfs_delayed_update_inode(struct btrfs_trans_handle *trans, > struct btrfs_delayed_node *delayed_node; > int ret = 0; > > - /* > - * we don't do delayed inode updates during log recovery because it > - * leads to enospc problems. This means we also can't do > - * delayed inode refs > - */ > - if (BTRFS_I(inode)->root->fs_info->log_root_recovering) > - return -EAGAIN; > - > delayed_node = btrfs_get_or_create_delayed_node(inode); > if (IS_ERR(delayed_node)) > return PTR_ERR(delayed_node); > -- Jeff Mahoney SUSE Labs