diff options
author | Andrew Morton <akpm@osdl.org> | 2005-05-05 19:16:02 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-05-05 19:36:44 -0400 |
commit | d17d7fa44dbe1f12031773e27eda9e939024a037 (patch) | |
tree | 4b2a8ebb60907a5cde4dd02b737851525a24a588 /fs/mpage.c | |
parent | ecffdde68ebefa1aa24411a91b12ae649f71f71c (diff) |
[PATCH] revert ext3-writepages-support-for-writeback-mode
This had a fatal lock ranking bug: we do journal_start outside
mpage_writepages()'s lock_page().
Revert the whole thing, think again.
Credit-to: Jan Kara <jack@suse.cz>
For identifying the bug.
Cc: Badari Pulavarty <pbadari@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/mpage.c')
-rw-r--r-- | fs/mpage.c | 12 |
1 files changed, 1 insertions, 11 deletions
diff --git a/fs/mpage.c b/fs/mpage.c index 32c7c8fcfce7..68db5256a727 100644 --- a/fs/mpage.c +++ b/fs/mpage.c | |||
@@ -627,15 +627,6 @@ int | |||
627 | mpage_writepages(struct address_space *mapping, | 627 | mpage_writepages(struct address_space *mapping, |
628 | struct writeback_control *wbc, get_block_t get_block) | 628 | struct writeback_control *wbc, get_block_t get_block) |
629 | { | 629 | { |
630 | return __mpage_writepages(mapping, wbc, get_block, | ||
631 | mapping->a_ops->writepage); | ||
632 | } | ||
633 | |||
634 | int | ||
635 | __mpage_writepages(struct address_space *mapping, | ||
636 | struct writeback_control *wbc, get_block_t get_block, | ||
637 | writepage_t writepage_fn) | ||
638 | { | ||
639 | struct backing_dev_info *bdi = mapping->backing_dev_info; | 630 | struct backing_dev_info *bdi = mapping->backing_dev_info; |
640 | struct bio *bio = NULL; | 631 | struct bio *bio = NULL; |
641 | sector_t last_block_in_bio = 0; | 632 | sector_t last_block_in_bio = 0; |
@@ -725,7 +716,7 @@ retry: | |||
725 | } else { | 716 | } else { |
726 | bio = __mpage_writepage(bio, page, get_block, | 717 | bio = __mpage_writepage(bio, page, get_block, |
727 | &last_block_in_bio, &ret, wbc, | 718 | &last_block_in_bio, &ret, wbc, |
728 | writepage_fn); | 719 | page->mapping->a_ops->writepage); |
729 | } | 720 | } |
730 | if (unlikely(ret == WRITEPAGE_ACTIVATE)) | 721 | if (unlikely(ret == WRITEPAGE_ACTIVATE)) |
731 | unlock_page(page); | 722 | unlock_page(page); |
@@ -755,7 +746,6 @@ retry: | |||
755 | return ret; | 746 | return ret; |
756 | } | 747 | } |
757 | EXPORT_SYMBOL(mpage_writepages); | 748 | EXPORT_SYMBOL(mpage_writepages); |
758 | EXPORT_SYMBOL(__mpage_writepages); | ||
759 | 749 | ||
760 | int mpage_writepage(struct page *page, get_block_t get_block, | 750 | int mpage_writepage(struct page *page, get_block_t get_block, |
761 | struct writeback_control *wbc) | 751 | struct writeback_control *wbc) |