[XFS] Do not do delalloc conversion on pages beyond EOF ever, not just sometimes
SGI Modid: xfs-linux:xfs-kern:22376a Signed-off-by: Nathan Scott <nathans@sgi.com> Signed-off-by: Christoph Hellwig <hch@sgi.com>
This commit is contained in:
parent
18e0a926ad
commit
775bf6c99a
|
@ -726,7 +726,7 @@ xfs_page_state_convert(
|
||||||
pgoff_t end_index, last_index, tlast;
|
pgoff_t end_index, last_index, tlast;
|
||||||
int len, err, i, cnt = 0, uptodate = 1;
|
int len, err, i, cnt = 0, uptodate = 1;
|
||||||
int flags;
|
int flags;
|
||||||
int page_dirty, delalloc = 0;
|
int page_dirty;
|
||||||
|
|
||||||
/* wait for other IO threads? */
|
/* wait for other IO threads? */
|
||||||
flags = (startio && wbc->sync_mode != WB_SYNC_NONE) ? 0 : BMAPI_TRYLOCK;
|
flags = (startio && wbc->sync_mode != WB_SYNC_NONE) ? 0 : BMAPI_TRYLOCK;
|
||||||
|
@ -807,7 +807,6 @@ xfs_page_state_convert(
|
||||||
*/
|
*/
|
||||||
} else if (buffer_delay(bh)) {
|
} else if (buffer_delay(bh)) {
|
||||||
if (!iomp) {
|
if (!iomp) {
|
||||||
delalloc = 1;
|
|
||||||
err = xfs_map_blocks(inode, offset, len, &iomap,
|
err = xfs_map_blocks(inode, offset, len, &iomap,
|
||||||
BMAPI_ALLOCATE | flags);
|
BMAPI_ALLOCATE | flags);
|
||||||
if (err) {
|
if (err) {
|
||||||
|
@ -882,10 +881,9 @@ xfs_page_state_convert(
|
||||||
xfs_submit_page(page, wbc, bh_arr, cnt, 0, 1);
|
xfs_submit_page(page, wbc, bh_arr, cnt, 0, 1);
|
||||||
|
|
||||||
if (iomp) {
|
if (iomp) {
|
||||||
tlast = (iomp->iomap_offset + iomp->iomap_bsize - 1) >>
|
offset = (iomp->iomap_offset + iomp->iomap_bsize - 1) >>
|
||||||
PAGE_CACHE_SHIFT;
|
PAGE_CACHE_SHIFT;
|
||||||
if (delalloc && (tlast > last_index))
|
tlast = min_t(pgoff_t, offset, last_index);
|
||||||
tlast = last_index;
|
|
||||||
xfs_cluster_write(inode, page->index + 1, iomp, wbc,
|
xfs_cluster_write(inode, page->index + 1, iomp, wbc,
|
||||||
startio, unmapped, tlast);
|
startio, unmapped, tlast);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue