|
@@ -1548,11 +1548,11 @@ EXPORT_SYMBOL(bio_copy_kern);
|
|
|
*/
|
|
|
void bio_set_pages_dirty(struct bio *bio)
|
|
|
{
|
|
|
- struct bio_vec *bvec = bio->bi_io_vec;
|
|
|
+ struct bio_vec *bvec;
|
|
|
int i;
|
|
|
|
|
|
- for (i = 0; i < bio->bi_vcnt; i++) {
|
|
|
- struct page *page = bvec[i].bv_page;
|
|
|
+ bio_for_each_segment_all(bvec, bio, i) {
|
|
|
+ struct page *page = bvec->bv_page;
|
|
|
|
|
|
if (page && !PageCompound(page))
|
|
|
set_page_dirty_lock(page);
|
|
@@ -1561,11 +1561,11 @@ void bio_set_pages_dirty(struct bio *bio)
|
|
|
|
|
|
static void bio_release_pages(struct bio *bio)
|
|
|
{
|
|
|
- struct bio_vec *bvec = bio->bi_io_vec;
|
|
|
+ struct bio_vec *bvec;
|
|
|
int i;
|
|
|
|
|
|
- for (i = 0; i < bio->bi_vcnt; i++) {
|
|
|
- struct page *page = bvec[i].bv_page;
|
|
|
+ bio_for_each_segment_all(bvec, bio, i) {
|
|
|
+ struct page *page = bvec->bv_page;
|
|
|
|
|
|
if (page)
|
|
|
put_page(page);
|
|
@@ -1614,16 +1614,16 @@ static void bio_dirty_fn(struct work_struct *work)
|
|
|
|
|
|
void bio_check_pages_dirty(struct bio *bio)
|
|
|
{
|
|
|
- struct bio_vec *bvec = bio->bi_io_vec;
|
|
|
+ struct bio_vec *bvec;
|
|
|
int nr_clean_pages = 0;
|
|
|
int i;
|
|
|
|
|
|
- for (i = 0; i < bio->bi_vcnt; i++) {
|
|
|
- struct page *page = bvec[i].bv_page;
|
|
|
+ bio_for_each_segment_all(bvec, bio, i) {
|
|
|
+ struct page *page = bvec->bv_page;
|
|
|
|
|
|
if (PageDirty(page) || PageCompound(page)) {
|
|
|
page_cache_release(page);
|
|
|
- bvec[i].bv_page = NULL;
|
|
|
+ bvec->bv_page = NULL;
|
|
|
} else {
|
|
|
nr_clean_pages++;
|
|
|
}
|