summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/scrub.c
diff options
context:
space:
mode:
authorJan Schmidt <list.btrfs@jan-o-sch.net>2012-03-23 12:32:28 -0400
committerJan Schmidt <list.btrfs@jan-o-sch.net>2012-03-27 08:51:21 -0400
commit7a3ae2f8c8c8432e65467b7fc84d5deab04061a0 (patch)
treee93c46eb8def633533fe80032872f71b36fc03b8 /fs/btrfs/scrub.c
parent103e976616fe9c2a3e40764c979fa1a592274da2 (diff)
Btrfs: fix regression in scrub path resolving
In commit 4692cf58 we introduced new backref walking code for btrfs. This assumes we're searching live roots, which requires a transaction context. While scrubbing, however, we must not join a transaction because this could deadlock with the commit path. Additionally, what scrub really wants to do is resolving a logical address in the commit root it's currently checking. This patch adds support for logical to path resolving on commit roots and makes scrub use that. Signed-off-by: Jan Schmidt <list.btrfs@jan-o-sch.net>
Diffstat (limited to 'fs/btrfs/scrub.c')
-rw-r--r--fs/btrfs/scrub.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/btrfs/scrub.c b/fs/btrfs/scrub.c
index abc0fbffa510..b9b84cdfc359 100644
--- a/fs/btrfs/scrub.c
+++ b/fs/btrfs/scrub.c
@@ -352,8 +352,8 @@ static void scrub_print_warning(const char *errstr, struct scrub_bio *sbio,
352 } while (ret != 1); 352 } while (ret != 1);
353 } else { 353 } else {
354 swarn.path = path; 354 swarn.path = path;
355 iterate_extent_inodes(fs_info, path, found_key.objectid, 355 iterate_extent_inodes(fs_info, found_key.objectid,
356 extent_item_pos, 356 extent_item_pos, 1,
357 scrub_print_warning_inode, &swarn); 357 scrub_print_warning_inode, &swarn);
358 } 358 }
359 359