return 0;
}
-int end_swap_bio_read(struct bio *bio, unsigned int bytes_done, int err)
+static int end_swap_bio_read(struct bio *bio, unsigned int bytes_done, int err)
{
const int uptodate = test_bit(BIO_UPTODATE, &bio->bi_flags);
struct page *page = bio->bi_io_vec[0].bv_page;
}
if (wbc->sync_mode == WB_SYNC_ALL)
rw |= (1 << BIO_RW_SYNC);
- count_vm_event(PSWPOUT);
+ inc_page_state(pswpout);
set_page_writeback(page);
unlock_page(page);
submit_bio(rw, bio);
ret = -ENOMEM;
goto out;
}
- count_vm_event(PSWPIN);
+ inc_page_state(pswpin);
submit_bio(READ, bio);
out:
return ret;
* We use end_swap_bio_read() even for writes, because it happens to do what
* we want.
*/
-int rw_swap_page_sync(int rw, swp_entry_t entry, struct page *page,
- struct bio **bio_chain)
+int rw_swap_page_sync(int rw, swp_entry_t entry, struct page *page)
{
struct bio *bio;
int ret = 0;
- int bio_rw;
lock_page(page);
goto out;
}
- bio_rw = rw;
- if (!bio_chain)
- bio_rw |= (1 << BIO_RW_SYNC);
- if (bio_chain)
- bio_get(bio);
- submit_bio(bio_rw, bio);
- if (bio_chain == NULL) {
- wait_on_page_locked(page);
-
- if (!PageUptodate(page) || PageError(page))
- ret = -EIO;
- }
- if (bio_chain) {
- bio->bi_private = *bio_chain;
- *bio_chain = bio;
- }
+ submit_bio(rw | (1 << BIO_RW_SYNC), bio);
+ wait_on_page_locked(page);
+
+ if (!PageUptodate(page) || PageError(page))
+ ret = -EIO;
out:
return ret;
}