diff options
Diffstat (limited to 'fs/ext4/extents_status.c')
-rw-r--r-- | fs/ext4/extents_status.c | 28 |
1 files changed, 13 insertions, 15 deletions
diff --git a/fs/ext4/extents_status.c b/fs/ext4/extents_status.c index 3981ff783950..0a014a7194b2 100644 --- a/fs/ext4/extents_status.c +++ b/fs/ext4/extents_status.c | |||
@@ -184,7 +184,7 @@ static void ext4_es_print_tree(struct inode *inode) | |||
184 | while (node) { | 184 | while (node) { |
185 | struct extent_status *es; | 185 | struct extent_status *es; |
186 | es = rb_entry(node, struct extent_status, rb_node); | 186 | es = rb_entry(node, struct extent_status, rb_node); |
187 | printk(KERN_DEBUG " [%u/%u) %llu %llx", | 187 | printk(KERN_DEBUG " [%u/%u) %llu %x", |
188 | es->es_lblk, es->es_len, | 188 | es->es_lblk, es->es_len, |
189 | ext4_es_pblock(es), ext4_es_status(es)); | 189 | ext4_es_pblock(es), ext4_es_status(es)); |
190 | node = rb_next(node); | 190 | node = rb_next(node); |
@@ -445,8 +445,8 @@ static void ext4_es_insert_extent_ext_check(struct inode *inode, | |||
445 | pr_warn("ES insert assertion failed for " | 445 | pr_warn("ES insert assertion failed for " |
446 | "inode: %lu we can find an extent " | 446 | "inode: %lu we can find an extent " |
447 | "at block [%d/%d/%llu/%c], but we " | 447 | "at block [%d/%d/%llu/%c], but we " |
448 | "want to add an delayed/hole extent " | 448 | "want to add a delayed/hole extent " |
449 | "[%d/%d/%llu/%llx]\n", | 449 | "[%d/%d/%llu/%x]\n", |
450 | inode->i_ino, ee_block, ee_len, | 450 | inode->i_ino, ee_block, ee_len, |
451 | ee_start, ee_status ? 'u' : 'w', | 451 | ee_start, ee_status ? 'u' : 'w', |
452 | es->es_lblk, es->es_len, | 452 | es->es_lblk, es->es_len, |
@@ -486,8 +486,8 @@ static void ext4_es_insert_extent_ext_check(struct inode *inode, | |||
486 | if (!ext4_es_is_delayed(es) && !ext4_es_is_hole(es)) { | 486 | if (!ext4_es_is_delayed(es) && !ext4_es_is_hole(es)) { |
487 | pr_warn("ES insert assertion failed for inode: %lu " | 487 | pr_warn("ES insert assertion failed for inode: %lu " |
488 | "can't find an extent at block %d but we want " | 488 | "can't find an extent at block %d but we want " |
489 | "to add an written/unwritten extent " | 489 | "to add a written/unwritten extent " |
490 | "[%d/%d/%llu/%llx]\n", inode->i_ino, | 490 | "[%d/%d/%llu/%x]\n", inode->i_ino, |
491 | es->es_lblk, es->es_lblk, es->es_len, | 491 | es->es_lblk, es->es_lblk, es->es_len, |
492 | ext4_es_pblock(es), ext4_es_status(es)); | 492 | ext4_es_pblock(es), ext4_es_status(es)); |
493 | } | 493 | } |
@@ -524,7 +524,7 @@ static void ext4_es_insert_extent_ind_check(struct inode *inode, | |||
524 | */ | 524 | */ |
525 | pr_warn("ES insert assertion failed for inode: %lu " | 525 | pr_warn("ES insert assertion failed for inode: %lu " |
526 | "We can find blocks but we want to add a " | 526 | "We can find blocks but we want to add a " |
527 | "delayed/hole extent [%d/%d/%llu/%llx]\n", | 527 | "delayed/hole extent [%d/%d/%llu/%x]\n", |
528 | inode->i_ino, es->es_lblk, es->es_len, | 528 | inode->i_ino, es->es_lblk, es->es_len, |
529 | ext4_es_pblock(es), ext4_es_status(es)); | 529 | ext4_es_pblock(es), ext4_es_status(es)); |
530 | return; | 530 | return; |
@@ -554,7 +554,7 @@ static void ext4_es_insert_extent_ind_check(struct inode *inode, | |||
554 | if (ext4_es_is_written(es)) { | 554 | if (ext4_es_is_written(es)) { |
555 | pr_warn("ES insert assertion failed for inode: %lu " | 555 | pr_warn("ES insert assertion failed for inode: %lu " |
556 | "We can't find the block but we want to add " | 556 | "We can't find the block but we want to add " |
557 | "an written extent [%d/%d/%llu/%llx]\n", | 557 | "a written extent [%d/%d/%llu/%x]\n", |
558 | inode->i_ino, es->es_lblk, es->es_len, | 558 | inode->i_ino, es->es_lblk, es->es_len, |
559 | ext4_es_pblock(es), ext4_es_status(es)); | 559 | ext4_es_pblock(es), ext4_es_status(es)); |
560 | return; | 560 | return; |
@@ -658,8 +658,7 @@ int ext4_es_insert_extent(struct inode *inode, ext4_lblk_t lblk, | |||
658 | 658 | ||
659 | newes.es_lblk = lblk; | 659 | newes.es_lblk = lblk; |
660 | newes.es_len = len; | 660 | newes.es_len = len; |
661 | ext4_es_store_pblock(&newes, pblk); | 661 | ext4_es_store_pblock_status(&newes, pblk, status); |
662 | ext4_es_store_status(&newes, status); | ||
663 | trace_ext4_es_insert_extent(inode, &newes); | 662 | trace_ext4_es_insert_extent(inode, &newes); |
664 | 663 | ||
665 | ext4_es_insert_extent_check(inode, &newes); | 664 | ext4_es_insert_extent_check(inode, &newes); |
@@ -699,8 +698,7 @@ void ext4_es_cache_extent(struct inode *inode, ext4_lblk_t lblk, | |||
699 | 698 | ||
700 | newes.es_lblk = lblk; | 699 | newes.es_lblk = lblk; |
701 | newes.es_len = len; | 700 | newes.es_len = len; |
702 | ext4_es_store_pblock(&newes, pblk); | 701 | ext4_es_store_pblock_status(&newes, pblk, status); |
703 | ext4_es_store_status(&newes, status); | ||
704 | trace_ext4_es_cache_extent(inode, &newes); | 702 | trace_ext4_es_cache_extent(inode, &newes); |
705 | 703 | ||
706 | if (!len) | 704 | if (!len) |
@@ -812,13 +810,13 @@ retry: | |||
812 | 810 | ||
813 | newes.es_lblk = end + 1; | 811 | newes.es_lblk = end + 1; |
814 | newes.es_len = len2; | 812 | newes.es_len = len2; |
813 | block = 0x7FDEADBEEF; | ||
815 | if (ext4_es_is_written(&orig_es) || | 814 | if (ext4_es_is_written(&orig_es) || |
816 | ext4_es_is_unwritten(&orig_es)) { | 815 | ext4_es_is_unwritten(&orig_es)) |
817 | block = ext4_es_pblock(&orig_es) + | 816 | block = ext4_es_pblock(&orig_es) + |
818 | orig_es.es_len - len2; | 817 | orig_es.es_len - len2; |
819 | ext4_es_store_pblock(&newes, block); | 818 | ext4_es_store_pblock_status(&newes, block, |
820 | } | 819 | ext4_es_status(&orig_es)); |
821 | ext4_es_store_status(&newes, ext4_es_status(&orig_es)); | ||
822 | err = __es_insert_extent(inode, &newes); | 820 | err = __es_insert_extent(inode, &newes); |
823 | if (err) { | 821 | if (err) { |
824 | es->es_lblk = orig_es.es_lblk; | 822 | es->es_lblk = orig_es.es_lblk; |