diff options
| author | Ingo Molnar <mingo@kernel.org> | 2017-11-07 10:51:10 +0100 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2017-11-07 10:51:10 +0100 |
| commit | 141d3b1daacd11bdbd6fa74c2b163093e10d17ee (patch) | |
| tree | 04c98496f16ad2fe34c0cf4f31fedf4fe558c017 /fs/mpage.c | |
| parent | c201c91799d687c0a6d8c3272950f51aad5ffebe (diff) | |
| parent | e4880bc5dfb1f02b152e62a894b5c6f3e995b3cf (diff) | |
Merge branch 'linus' into x86/apic, to resolve conflicts
Conflicts:
arch/x86/include/asm/x2apic.h
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'fs/mpage.c')
| -rw-r--r-- | fs/mpage.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/fs/mpage.c b/fs/mpage.c index 37bb77c1302c..b7e7f570733a 100644 --- a/fs/mpage.c +++ b/fs/mpage.c @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-2.0 /* * fs/mpage.c * @@ -468,6 +469,16 @@ static void clean_buffers(struct page *page, unsigned first_unmapped) try_to_free_buffers(page); } +/* + * For situations where we want to clean all buffers attached to a page. + * We don't need to calculate how many buffers are attached to the page, + * we just need to specify a number larger than the maximum number of buffers. + */ +void clean_page_buffers(struct page *page) +{ + clean_buffers(page, ~0U); +} + static int __mpage_writepage(struct page *page, struct writeback_control *wbc, void *data) { @@ -605,10 +616,8 @@ alloc_new: if (bio == NULL) { if (first_unmapped == blocks_per_page) { if (!bdev_write_page(bdev, blocks[0] << (blkbits - 9), - page, wbc)) { - clean_buffers(page, first_unmapped); + page, wbc)) goto out; - } } bio = mpage_alloc(bdev, blocks[0] << (blkbits - 9), BIO_MAX_PAGES, GFP_NOFS|__GFP_HIGH); |
