Thanks for posting that patch, Josef.
On Mon, Jul 15, 2013 at 6:59 PM, Josef Bacik <jba...@fusionio.com> wrote: > > Alex pointed out a problem and fix that exists in the drop one snapshot at > a > time patch. If we decide we need to exit for whatever reason (umount for > example) we will just exit the snapshot dropping without updating the drop > progress. So the next time we go to resume we will BUG_ON() because we > can't > find the extent we left off at because we never updated it. This patch > fixes > the problem. > > Cc: sta...@vger.kernel.org > Reported-by: Alex Lyakas <alex.bt...@zadarastorage.com> > Signed-off-by: Josef Bacik <jba...@fusionio.com> > --- > fs/btrfs/extent-tree.c | 14 ++++++++------ > 1 files changed, 8 insertions(+), 6 deletions(-) > > diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c > index bc00b24..8c204e1 100644 > --- a/fs/btrfs/extent-tree.c > +++ b/fs/btrfs/extent-tree.c > @@ -7584,11 +7584,6 @@ int btrfs_drop_snapshot(struct btrfs_root *root, > wc->reada_count = BTRFS_NODEPTRS_PER_BLOCK(root); > > while (1) { > - if (!for_reloc && btrfs_need_cleaner_sleep(root)) { > - pr_debug("btrfs: drop snapshot early exit\n"); > - err = -EAGAIN; > - goto out_end_trans; > - } > > ret = walk_down_tree(trans, root, path, wc); > if (ret < 0) { > @@ -7616,7 +7611,8 @@ int btrfs_drop_snapshot(struct btrfs_root *root, > } > > BUG_ON(wc->level == 0); > - if (btrfs_should_end_transaction(trans, tree_root)) { > + if (btrfs_should_end_transaction(trans, tree_root) || > + (!for_reloc && btrfs_need_cleaner_sleep(root))) { > ret = btrfs_update_root(trans, tree_root, > &root->root_key, > root_item); > @@ -7627,6 +7623,12 @@ int btrfs_drop_snapshot(struct btrfs_root *root, > } > > btrfs_end_transaction_throttle(trans, tree_root); > + if (!for_reloc && btrfs_need_cleaner_sleep(root)) > { > + pr_debug("btrfs: drop snapshot early > exit\n"); > + err = -EAGAIN; > + goto out_free; > + } > + > trans = btrfs_start_transaction(tree_root, 0); > if (IS_ERR(trans)) { > err = PTR_ERR(trans); > -- > 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