X-Git-Url: http://git.cascardo.info/?a=blobdiff_plain;f=fs%2Fdirect-io.c;h=7ab90f5081eebc4ab8b0de88bef8d0b6310ed113;hb=7cc45e98e539ad98d8af57e4126aaac3e6b8f341;hp=cfb816dc6d9f65b73fdba6d0fadbe15041bf96ad;hpb=c032862fba51a3ca504752d3a25186b324c5ce83;p=cascardo%2Flinux.git diff --git a/fs/direct-io.c b/fs/direct-io.c index cfb816dc6d9f..7ab90f5081ee 100644 --- a/fs/direct-io.c +++ b/fs/direct-io.c @@ -37,6 +37,7 @@ #include #include #include +#include /* * How many user pages to map in one call to get_user_pages(). This determines @@ -441,8 +442,8 @@ static struct bio *dio_await_one(struct dio *dio) static int dio_bio_complete(struct dio *dio, struct bio *bio) { const int uptodate = test_bit(BIO_UPTODATE, &bio->bi_flags); - struct bio_vec *bvec = bio->bi_io_vec; - int page_no; + struct bio_vec *bvec; + unsigned i; if (!uptodate) dio->io_error = -EIO; @@ -450,8 +451,8 @@ static int dio_bio_complete(struct dio *dio, struct bio *bio) if (dio->is_async && dio->rw == READ) { bio_check_pages_dirty(bio); /* transfers ownership */ } else { - for (page_no = 0; page_no < bio->bi_vcnt; page_no++) { - struct page *page = bvec[page_no].bv_page; + bio_for_each_segment_all(bvec, bio, i) { + struct page *page = bvec->bv_page; if (dio->rw == READ && !PageCompound(page)) set_page_dirty_lock(page);