aboutsummaryrefslogtreecommitdiffstats
path: root/fs/direct-io.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/direct-io.c')
-rw-r--r--fs/direct-io.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/fs/direct-io.c b/fs/direct-io.c
index 476f1ecbd1f0..472037732daf 100644
--- a/fs/direct-io.c
+++ b/fs/direct-io.c
@@ -172,7 +172,7 @@ static inline int dio_refill_pages(struct dio *dio, struct dio_submit *sdio)
172 */ 172 */
173 if (dio->page_errors == 0) 173 if (dio->page_errors == 0)
174 dio->page_errors = ret; 174 dio->page_errors = ret;
175 page_cache_get(page); 175 get_page(page);
176 dio->pages[0] = page; 176 dio->pages[0] = page;
177 sdio->head = 0; 177 sdio->head = 0;
178 sdio->tail = 1; 178 sdio->tail = 1;
@@ -424,7 +424,7 @@ static inline void dio_bio_submit(struct dio *dio, struct dio_submit *sdio)
424static inline void dio_cleanup(struct dio *dio, struct dio_submit *sdio) 424static inline void dio_cleanup(struct dio *dio, struct dio_submit *sdio)
425{ 425{
426 while (sdio->head < sdio->tail) 426 while (sdio->head < sdio->tail)
427 page_cache_release(dio->pages[sdio->head++]); 427 put_page(dio->pages[sdio->head++]);
428} 428}
429 429
430/* 430/*
@@ -487,7 +487,7 @@ static int dio_bio_complete(struct dio *dio, struct bio *bio)
487 if (dio->rw == READ && !PageCompound(page) && 487 if (dio->rw == READ && !PageCompound(page) &&
488 dio->should_dirty) 488 dio->should_dirty)
489 set_page_dirty_lock(page); 489 set_page_dirty_lock(page);
490 page_cache_release(page); 490 put_page(page);
491 } 491 }
492 err = bio->bi_error; 492 err = bio->bi_error;
493 bio_put(bio); 493 bio_put(bio);
@@ -696,7 +696,7 @@ static inline int dio_bio_add_page(struct dio_submit *sdio)
696 */ 696 */
697 if ((sdio->cur_page_len + sdio->cur_page_offset) == PAGE_SIZE) 697 if ((sdio->cur_page_len + sdio->cur_page_offset) == PAGE_SIZE)
698 sdio->pages_in_io--; 698 sdio->pages_in_io--;
699 page_cache_get(sdio->cur_page); 699 get_page(sdio->cur_page);
700 sdio->final_block_in_bio = sdio->cur_page_block + 700 sdio->final_block_in_bio = sdio->cur_page_block +
701 (sdio->cur_page_len >> sdio->blkbits); 701 (sdio->cur_page_len >> sdio->blkbits);
702 ret = 0; 702 ret = 0;
@@ -810,13 +810,13 @@ submit_page_section(struct dio *dio, struct dio_submit *sdio, struct page *page,
810 */ 810 */
811 if (sdio->cur_page) { 811 if (sdio->cur_page) {
812 ret = dio_send_cur_page(dio, sdio, map_bh); 812 ret = dio_send_cur_page(dio, sdio, map_bh);
813 page_cache_release(sdio->cur_page); 813 put_page(sdio->cur_page);
814 sdio->cur_page = NULL; 814 sdio->cur_page = NULL;
815 if (ret) 815 if (ret)
816 return ret; 816 return ret;
817 } 817 }
818 818
819 page_cache_get(page); /* It is in dio */ 819 get_page(page); /* It is in dio */
820 sdio->cur_page = page; 820 sdio->cur_page = page;
821 sdio->cur_page_offset = offset; 821 sdio->cur_page_offset = offset;
822 sdio->cur_page_len = len; 822 sdio->cur_page_len = len;
@@ -830,7 +830,7 @@ out:
830 if (sdio->boundary) { 830 if (sdio->boundary) {
831 ret = dio_send_cur_page(dio, sdio, map_bh); 831 ret = dio_send_cur_page(dio, sdio, map_bh);
832 dio_bio_submit(dio, sdio); 832 dio_bio_submit(dio, sdio);
833 page_cache_release(sdio->cur_page); 833 put_page(sdio->cur_page);
834 sdio->cur_page = NULL; 834 sdio->cur_page = NULL;
835 } 835 }
836 return ret; 836 return ret;
@@ -947,7 +947,7 @@ static int do_direct_IO(struct dio *dio, struct dio_submit *sdio,
947 947
948 ret = get_more_blocks(dio, sdio, map_bh); 948 ret = get_more_blocks(dio, sdio, map_bh);
949 if (ret) { 949 if (ret) {
950 page_cache_release(page); 950 put_page(page);
951 goto out; 951 goto out;
952 } 952 }
953 if (!buffer_mapped(map_bh)) 953 if (!buffer_mapped(map_bh))
@@ -988,7 +988,7 @@ do_holes:
988 988
989 /* AKPM: eargh, -ENOTBLK is a hack */ 989 /* AKPM: eargh, -ENOTBLK is a hack */
990 if (dio->rw & WRITE) { 990 if (dio->rw & WRITE) {
991 page_cache_release(page); 991 put_page(page);
992 return -ENOTBLK; 992 return -ENOTBLK;
993 } 993 }
994 994
@@ -1001,7 +1001,7 @@ do_holes:
1001 if (sdio->block_in_file >= 1001 if (sdio->block_in_file >=
1002 i_size_aligned >> blkbits) { 1002 i_size_aligned >> blkbits) {
1003 /* We hit eof */ 1003 /* We hit eof */
1004 page_cache_release(page); 1004 put_page(page);
1005 goto out; 1005 goto out;
1006 } 1006 }
1007 zero_user(page, from, 1 << blkbits); 1007 zero_user(page, from, 1 << blkbits);
@@ -1041,7 +1041,7 @@ do_holes:
1041 sdio->next_block_for_io, 1041 sdio->next_block_for_io,
1042 map_bh); 1042 map_bh);
1043 if (ret) { 1043 if (ret) {
1044 page_cache_release(page); 1044 put_page(page);
1045 goto out; 1045 goto out;
1046 } 1046 }
1047 sdio->next_block_for_io += this_chunk_blocks; 1047 sdio->next_block_for_io += this_chunk_blocks;
@@ -1057,7 +1057,7 @@ next_block:
1057 } 1057 }
1058 1058
1059 /* Drop the ref which was taken in get_user_pages() */ 1059 /* Drop the ref which was taken in get_user_pages() */
1060 page_cache_release(page); 1060 put_page(page);
1061 } 1061 }
1062out: 1062out:
1063 return ret; 1063 return ret;
@@ -1281,7 +1281,7 @@ do_blockdev_direct_IO(struct kiocb *iocb, struct inode *inode,
1281 ret2 = dio_send_cur_page(dio, &sdio, &map_bh); 1281 ret2 = dio_send_cur_page(dio, &sdio, &map_bh);
1282 if (retval == 0) 1282 if (retval == 0)
1283 retval = ret2; 1283 retval = ret2;
1284 page_cache_release(sdio.cur_page); 1284 put_page(sdio.cur_page);
1285 sdio.cur_page = NULL; 1285 sdio.cur_page = NULL;
1286 } 1286 }
1287 if (sdio.bio) 1287 if (sdio.bio)