diff options
Diffstat (limited to 'mm')
-rw-r--r-- | mm/page_io.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/mm/page_io.c b/mm/page_io.c index 8e6bcf176cfb..8e0e5c0e7cdb 100644 --- a/mm/page_io.c +++ b/mm/page_io.c | |||
@@ -42,7 +42,7 @@ static struct bio *get_swap_bio(gfp_t gfp_flags, | |||
42 | return bio; | 42 | return bio; |
43 | } | 43 | } |
44 | 44 | ||
45 | static void end_swap_bio_write(struct bio *bio, int err) | 45 | void end_swap_bio_write(struct bio *bio, int err) |
46 | { | 46 | { |
47 | const int uptodate = test_bit(BIO_UPTODATE, &bio->bi_flags); | 47 | const int uptodate = test_bit(BIO_UPTODATE, &bio->bi_flags); |
48 | struct page *page = bio->bi_io_vec[0].bv_page; | 48 | struct page *page = bio->bi_io_vec[0].bv_page; |
@@ -197,12 +197,13 @@ int swap_writepage(struct page *page, struct writeback_control *wbc) | |||
197 | end_page_writeback(page); | 197 | end_page_writeback(page); |
198 | goto out; | 198 | goto out; |
199 | } | 199 | } |
200 | ret = __swap_writepage(page, wbc); | 200 | ret = __swap_writepage(page, wbc, end_swap_bio_write); |
201 | out: | 201 | out: |
202 | return ret; | 202 | return ret; |
203 | } | 203 | } |
204 | 204 | ||
205 | int __swap_writepage(struct page *page, struct writeback_control *wbc) | 205 | int __swap_writepage(struct page *page, struct writeback_control *wbc, |
206 | void (*end_write_func)(struct bio *, int)) | ||
206 | { | 207 | { |
207 | struct bio *bio; | 208 | struct bio *bio; |
208 | int ret = 0, rw = WRITE; | 209 | int ret = 0, rw = WRITE; |
@@ -234,7 +235,7 @@ int __swap_writepage(struct page *page, struct writeback_control *wbc) | |||
234 | return ret; | 235 | return ret; |
235 | } | 236 | } |
236 | 237 | ||
237 | bio = get_swap_bio(GFP_NOIO, page, end_swap_bio_write); | 238 | bio = get_swap_bio(GFP_NOIO, page, end_write_func); |
238 | if (bio == NULL) { | 239 | if (bio == NULL) { |
239 | set_page_dirty(page); | 240 | set_page_dirty(page); |
240 | unlock_page(page); | 241 | unlock_page(page); |