direct-io: Use clean_bdev_aliases() instead of handmade iteration
Use new provided function instead of an iteration through all allocated blocks. Signed-off-by: Jan Kara <jack@suse.cz> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
parent
29f3ad7d83
commit
f734c89cc9
|
@ -842,24 +842,6 @@ submit_page_section(struct dio *dio, struct dio_submit *sdio, struct page *page,
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Clean any dirty buffers in the blockdev mapping which alias newly-created
|
|
||||||
* file blocks. Only called for S_ISREG files - blockdevs do not set
|
|
||||||
* buffer_new
|
|
||||||
*/
|
|
||||||
static void clean_blockdev_aliases(struct dio *dio, struct buffer_head *map_bh)
|
|
||||||
{
|
|
||||||
unsigned i;
|
|
||||||
unsigned nblocks;
|
|
||||||
|
|
||||||
nblocks = map_bh->b_size >> dio->inode->i_blkbits;
|
|
||||||
|
|
||||||
for (i = 0; i < nblocks; i++) {
|
|
||||||
unmap_underlying_metadata(map_bh->b_bdev,
|
|
||||||
map_bh->b_blocknr + i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If we are not writing the entire block and get_block() allocated
|
* If we are not writing the entire block and get_block() allocated
|
||||||
* the block for us, we need to fill-in the unused portion of the
|
* the block for us, we need to fill-in the unused portion of the
|
||||||
|
@ -960,11 +942,15 @@ static int do_direct_IO(struct dio *dio, struct dio_submit *sdio,
|
||||||
goto do_holes;
|
goto do_holes;
|
||||||
|
|
||||||
sdio->blocks_available =
|
sdio->blocks_available =
|
||||||
map_bh->b_size >> sdio->blkbits;
|
map_bh->b_size >> blkbits;
|
||||||
sdio->next_block_for_io =
|
sdio->next_block_for_io =
|
||||||
map_bh->b_blocknr << sdio->blkfactor;
|
map_bh->b_blocknr << sdio->blkfactor;
|
||||||
if (buffer_new(map_bh))
|
if (buffer_new(map_bh)) {
|
||||||
clean_blockdev_aliases(dio, map_bh);
|
clean_bdev_aliases(
|
||||||
|
map_bh->b_bdev,
|
||||||
|
map_bh->b_blocknr,
|
||||||
|
map_bh->b_size >> blkbits);
|
||||||
|
}
|
||||||
|
|
||||||
if (!sdio->blkfactor)
|
if (!sdio->blkfactor)
|
||||||
goto do_holes;
|
goto do_holes;
|
||||||
|
|
Loading…
Reference in New Issue