Loading fs/direct-io.c +7 −21 Original line number Diff line number Diff line Loading @@ -842,24 +842,6 @@ submit_page_section(struct dio *dio, struct dio_submit *sdio, struct page *page, 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 * the block for us, we need to fill-in the unused portion of the Loading Loading @@ -960,11 +942,15 @@ static int do_direct_IO(struct dio *dio, struct dio_submit *sdio, goto do_holes; sdio->blocks_available = map_bh->b_size >> sdio->blkbits; map_bh->b_size >> blkbits; sdio->next_block_for_io = map_bh->b_blocknr << sdio->blkfactor; if (buffer_new(map_bh)) clean_blockdev_aliases(dio, map_bh); if (buffer_new(map_bh)) { clean_bdev_aliases( map_bh->b_bdev, map_bh->b_blocknr, map_bh->b_size >> blkbits); } if (!sdio->blkfactor) goto do_holes; Loading Loading
fs/direct-io.c +7 −21 Original line number Diff line number Diff line Loading @@ -842,24 +842,6 @@ submit_page_section(struct dio *dio, struct dio_submit *sdio, struct page *page, 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 * the block for us, we need to fill-in the unused portion of the Loading Loading @@ -960,11 +942,15 @@ static int do_direct_IO(struct dio *dio, struct dio_submit *sdio, goto do_holes; sdio->blocks_available = map_bh->b_size >> sdio->blkbits; map_bh->b_size >> blkbits; sdio->next_block_for_io = map_bh->b_blocknr << sdio->blkfactor; if (buffer_new(map_bh)) clean_blockdev_aliases(dio, map_bh); if (buffer_new(map_bh)) { clean_bdev_aliases( map_bh->b_bdev, map_bh->b_blocknr, map_bh->b_size >> blkbits); } if (!sdio->blkfactor) goto do_holes; Loading