diff options
Diffstat (limited to 'fs/btrfs/ordered-data.c')
-rw-r--r-- | fs/btrfs/ordered-data.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/fs/btrfs/ordered-data.c b/fs/btrfs/ordered-data.c index c2b4a9c4ddb6..0d87795fdd8f 100644 --- a/fs/btrfs/ordered-data.c +++ b/fs/btrfs/ordered-data.c | |||
@@ -336,7 +336,7 @@ void btrfs_wait_ordered_range(struct inode *inode, u64 start, u64 len) | |||
336 | orig_end = start + len - 1; | 336 | orig_end = start + len - 1; |
337 | wait_end = orig_end; | 337 | wait_end = orig_end; |
338 | } | 338 | } |
339 | 339 | again: | |
340 | /* start IO across the range first to instantiate any delalloc | 340 | /* start IO across the range first to instantiate any delalloc |
341 | * extents | 341 | * extents |
342 | */ | 342 | */ |
@@ -369,6 +369,14 @@ void btrfs_wait_ordered_range(struct inode *inode, u64 start, u64 len) | |||
369 | break; | 369 | break; |
370 | end--; | 370 | end--; |
371 | } | 371 | } |
372 | if (test_range_bit(&BTRFS_I(inode)->io_tree, start, orig_end, | ||
373 | EXTENT_ORDERED | EXTENT_DELALLOC, 0)) { | ||
374 | printk("inode %lu still ordered or delalloc after wait " | ||
375 | "%llu %llu\n", inode->i_ino, | ||
376 | (unsigned long long)start, | ||
377 | (unsigned long long)orig_end); | ||
378 | goto again; | ||
379 | } | ||
372 | } | 380 | } |
373 | 381 | ||
374 | /* | 382 | /* |
@@ -545,7 +553,6 @@ int btrfs_find_ordered_sum(struct inode *inode, u64 offset, u32 *sum) | |||
545 | sector_sums = &ordered_sum->sums; | 553 | sector_sums = &ordered_sum->sums; |
546 | for (i = 0; i < num_sectors; i++) { | 554 | for (i = 0; i < num_sectors; i++) { |
547 | if (sector_sums[i].offset == offset) { | 555 | if (sector_sums[i].offset == offset) { |
548 | printk("find ordered sum inode %lu offset %Lu\n", inode->i_ino, offset); | ||
549 | *sum = sector_sums[i].sum; | 556 | *sum = sector_sums[i].sum; |
550 | ret = 0; | 557 | ret = 0; |
551 | goto out; | 558 | goto out; |