Merge branch 'for-4.8/core' of git://git.kernel.dk/linux-block
Pull core block updates from Jens Axboe: - the big change is the cleanup from Mike Christie, cleaning up our uses of command types and modified flags. This is what will throw some merge conflicts - regression fix for the above for btrfs, from Vincent - following up to the above, better packing of struct request from Christoph - a 2038 fix for blktrace from Arnd - a few trivial/spelling fixes from Bart Van Assche - a front merge check fix from Damien, which could cause issues on SMR drives - Atari partition fix from Gabriel - convert cfq to highres timers, since jiffies isn't granular enough for some devices these days. From Jan and Jeff - CFQ priority boost fix idle classes, from me - cleanup series from Ming, improving our bio/bvec iteration - a direct issue fix for blk-mq from Omar - fix for plug merging not involving the IO scheduler, like we do for other types of merges. From Tahsin - expose DAX type internally and through sysfs. From Toshi and Yigal * 'for-4.8/core' of git://git.kernel.dk/linux-block: (76 commits) block: Fix front merge check block: do not merge requests without consulting with io scheduler block: Fix spelling in a source code comment block: expose QUEUE_FLAG_DAX in sysfs block: add QUEUE_FLAG_DAX for devices to advertise their DAX support Btrfs: fix comparison in __btrfs_map_block() block: atari: Return early for unsupported sector size Doc: block: Fix a typo in queue-sysfs.txt cfq-iosched: Charge at least 1 jiffie instead of 1 ns cfq-iosched: Fix regression in bonnie++ rewrite performance cfq-iosched: Convert slice_resid from u64 to s64 block: Convert fifo_time from ulong to u64 blktrace: avoid using timespec block/blk-cgroup.c: Declare local symbols static block/bio-integrity.c: Add #include "blk.h" block/partition-generic.c: Remove a set-but-not-used variable block: bio: kill BIO_MAX_SIZE cfq-iosched: temporarily boost queue priority for idle classes block: drbd: avoid to use BIO_MAX_SIZE block: bio: remove BIO_MAX_SECTORS ...
This commit is contained in:
@@ -438,7 +438,8 @@ xfs_submit_ioend(
|
||||
|
||||
ioend->io_bio->bi_private = ioend;
|
||||
ioend->io_bio->bi_end_io = xfs_end_bio;
|
||||
|
||||
bio_set_op_attrs(ioend->io_bio, REQ_OP_WRITE,
|
||||
(wbc->sync_mode == WB_SYNC_ALL) ? WRITE_SYNC : 0);
|
||||
/*
|
||||
* If we are failing the IO now, just mark the ioend with an
|
||||
* error and finish it. This will run IO completion immediately
|
||||
@@ -451,8 +452,7 @@ xfs_submit_ioend(
|
||||
return status;
|
||||
}
|
||||
|
||||
submit_bio(wbc->sync_mode == WB_SYNC_ALL ? WRITE_SYNC : WRITE,
|
||||
ioend->io_bio);
|
||||
submit_bio(ioend->io_bio);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -510,8 +510,9 @@ xfs_chain_bio(
|
||||
|
||||
bio_chain(ioend->io_bio, new);
|
||||
bio_get(ioend->io_bio); /* for xfs_destroy_ioend */
|
||||
submit_bio(wbc->sync_mode == WB_SYNC_ALL ? WRITE_SYNC : WRITE,
|
||||
ioend->io_bio);
|
||||
bio_set_op_attrs(ioend->io_bio, REQ_OP_WRITE,
|
||||
(wbc->sync_mode == WB_SYNC_ALL) ? WRITE_SYNC : 0);
|
||||
submit_bio(ioend->io_bio);
|
||||
ioend->io_bio = new;
|
||||
}
|
||||
|
||||
|
@@ -1127,7 +1127,8 @@ xfs_buf_ioapply_map(
|
||||
int map,
|
||||
int *buf_offset,
|
||||
int *count,
|
||||
int rw)
|
||||
int op,
|
||||
int op_flags)
|
||||
{
|
||||
int page_index;
|
||||
int total_nr_pages = bp->b_page_count;
|
||||
@@ -1157,16 +1158,14 @@ xfs_buf_ioapply_map(
|
||||
|
||||
next_chunk:
|
||||
atomic_inc(&bp->b_io_remaining);
|
||||
nr_pages = BIO_MAX_SECTORS >> (PAGE_SHIFT - BBSHIFT);
|
||||
if (nr_pages > total_nr_pages)
|
||||
nr_pages = total_nr_pages;
|
||||
nr_pages = min(total_nr_pages, BIO_MAX_PAGES);
|
||||
|
||||
bio = bio_alloc(GFP_NOIO, nr_pages);
|
||||
bio->bi_bdev = bp->b_target->bt_bdev;
|
||||
bio->bi_iter.bi_sector = sector;
|
||||
bio->bi_end_io = xfs_buf_bio_end_io;
|
||||
bio->bi_private = bp;
|
||||
|
||||
bio_set_op_attrs(bio, op, op_flags);
|
||||
|
||||
for (; size && nr_pages; nr_pages--, page_index++) {
|
||||
int rbytes, nbytes = PAGE_SIZE - offset;
|
||||
@@ -1190,7 +1189,7 @@ next_chunk:
|
||||
flush_kernel_vmap_range(bp->b_addr,
|
||||
xfs_buf_vmap_len(bp));
|
||||
}
|
||||
submit_bio(rw, bio);
|
||||
submit_bio(bio);
|
||||
if (size)
|
||||
goto next_chunk;
|
||||
} else {
|
||||
@@ -1210,7 +1209,8 @@ _xfs_buf_ioapply(
|
||||
struct xfs_buf *bp)
|
||||
{
|
||||
struct blk_plug plug;
|
||||
int rw;
|
||||
int op;
|
||||
int op_flags = 0;
|
||||
int offset;
|
||||
int size;
|
||||
int i;
|
||||
@@ -1229,14 +1229,13 @@ _xfs_buf_ioapply(
|
||||
bp->b_ioend_wq = bp->b_target->bt_mount->m_buf_workqueue;
|
||||
|
||||
if (bp->b_flags & XBF_WRITE) {
|
||||
op = REQ_OP_WRITE;
|
||||
if (bp->b_flags & XBF_SYNCIO)
|
||||
rw = WRITE_SYNC;
|
||||
else
|
||||
rw = WRITE;
|
||||
op_flags = WRITE_SYNC;
|
||||
if (bp->b_flags & XBF_FUA)
|
||||
rw |= REQ_FUA;
|
||||
op_flags |= REQ_FUA;
|
||||
if (bp->b_flags & XBF_FLUSH)
|
||||
rw |= REQ_FLUSH;
|
||||
op_flags |= REQ_PREFLUSH;
|
||||
|
||||
/*
|
||||
* Run the write verifier callback function if it exists. If
|
||||
@@ -1266,13 +1265,14 @@ _xfs_buf_ioapply(
|
||||
}
|
||||
}
|
||||
} else if (bp->b_flags & XBF_READ_AHEAD) {
|
||||
rw = READA;
|
||||
op = REQ_OP_READ;
|
||||
op_flags = REQ_RAHEAD;
|
||||
} else {
|
||||
rw = READ;
|
||||
op = REQ_OP_READ;
|
||||
}
|
||||
|
||||
/* we only use the buffer cache for meta-data */
|
||||
rw |= REQ_META;
|
||||
op_flags |= REQ_META;
|
||||
|
||||
/*
|
||||
* Walk all the vectors issuing IO on them. Set up the initial offset
|
||||
@@ -1284,7 +1284,7 @@ _xfs_buf_ioapply(
|
||||
size = BBTOB(bp->b_io_length);
|
||||
blk_start_plug(&plug);
|
||||
for (i = 0; i < bp->b_map_count; i++) {
|
||||
xfs_buf_ioapply_map(bp, i, &offset, &size, rw);
|
||||
xfs_buf_ioapply_map(bp, i, &offset, &size, op, op_flags);
|
||||
if (bp->b_error)
|
||||
break;
|
||||
if (size <= 0)
|
||||
|
Reference in New Issue
Block a user