|
@@ -672,12 +672,6 @@ static inline int dio_send_cur_page(struct dio *dio, struct dio_submit *sdio,
|
|
|
if (sdio->final_block_in_bio != sdio->cur_page_block ||
|
|
|
cur_offset != bio_next_offset)
|
|
|
dio_bio_submit(dio, sdio);
|
|
|
- /*
|
|
|
- * Submit now if the underlying fs is about to perform a
|
|
|
- * metadata read
|
|
|
- */
|
|
|
- else if (sdio->boundary)
|
|
|
- dio_bio_submit(dio, sdio);
|
|
|
}
|
|
|
|
|
|
if (sdio->bio == NULL) {
|
|
@@ -737,16 +731,6 @@ submit_page_section(struct dio *dio, struct dio_submit *sdio, struct page *page,
|
|
|
sdio->cur_page_block +
|
|
|
(sdio->cur_page_len >> sdio->blkbits) == blocknr) {
|
|
|
sdio->cur_page_len += len;
|
|
|
-
|
|
|
- /*
|
|
|
- * If sdio->boundary then we want to schedule the IO now to
|
|
|
- * avoid metadata seeks.
|
|
|
- */
|
|
|
- if (sdio->boundary) {
|
|
|
- ret = dio_send_cur_page(dio, sdio, map_bh);
|
|
|
- page_cache_release(sdio->cur_page);
|
|
|
- sdio->cur_page = NULL;
|
|
|
- }
|
|
|
goto out;
|
|
|
}
|
|
|
|
|
@@ -758,7 +742,7 @@ submit_page_section(struct dio *dio, struct dio_submit *sdio, struct page *page,
|
|
|
page_cache_release(sdio->cur_page);
|
|
|
sdio->cur_page = NULL;
|
|
|
if (ret)
|
|
|
- goto out;
|
|
|
+ return ret;
|
|
|
}
|
|
|
|
|
|
page_cache_get(page); /* It is in dio */
|
|
@@ -768,6 +752,16 @@ submit_page_section(struct dio *dio, struct dio_submit *sdio, struct page *page,
|
|
|
sdio->cur_page_block = blocknr;
|
|
|
sdio->cur_page_fs_offset = sdio->block_in_file << sdio->blkbits;
|
|
|
out:
|
|
|
+ /*
|
|
|
+ * If sdio->boundary then we want to schedule the IO now to
|
|
|
+ * avoid metadata seeks.
|
|
|
+ */
|
|
|
+ if (sdio->boundary) {
|
|
|
+ ret = dio_send_cur_page(dio, sdio, map_bh);
|
|
|
+ dio_bio_submit(dio, sdio);
|
|
|
+ page_cache_release(sdio->cur_page);
|
|
|
+ sdio->cur_page = NULL;
|
|
|
+ }
|
|
|
return ret;
|
|
|
}
|
|
|
|