You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
block, drivers, cgroup: use op_is_write helper instead of checking for REQ_WRITE
We currently set REQ_WRITE/WRITE for all non READ IOs like discard, flush, writesame, etc. In the next patches where we no longer set up the op as a bitmap, we will not be able to detect a operation direction like writesame by testing if REQ_WRITE is set. This patch converts the drivers and cgroup to use the op_is_write helper. This should just cover the simple cases. I did dm, md and bcache in their own patches because they were more involved. Signed-off-by: Mike Christie <mchristi@redhat.com> Reviewed-by: Hannes Reinecke <hare@suse.com> Signed-off-by: Jens Axboe <axboe@fb.com>
This commit is contained in:
committed by
Jens Axboe
parent
dfec8a14fc
commit
a8ebb056a8
+2
-2
@@ -2115,7 +2115,7 @@ blk_qc_t submit_bio(struct bio *bio)
|
|||||||
else
|
else
|
||||||
count = bio_sectors(bio);
|
count = bio_sectors(bio);
|
||||||
|
|
||||||
if (bio->bi_rw & WRITE) {
|
if (op_is_write(bio_op(bio))) {
|
||||||
count_vm_events(PGPGOUT, count);
|
count_vm_events(PGPGOUT, count);
|
||||||
} else {
|
} else {
|
||||||
task_io_account_read(bio->bi_iter.bi_size);
|
task_io_account_read(bio->bi_iter.bi_size);
|
||||||
@@ -2126,7 +2126,7 @@ blk_qc_t submit_bio(struct bio *bio)
|
|||||||
char b[BDEVNAME_SIZE];
|
char b[BDEVNAME_SIZE];
|
||||||
printk(KERN_DEBUG "%s(%d): %s block %Lu on %s (%u sectors)\n",
|
printk(KERN_DEBUG "%s(%d): %s block %Lu on %s (%u sectors)\n",
|
||||||
current->comm, task_pid_nr(current),
|
current->comm, task_pid_nr(current),
|
||||||
(bio->bi_rw & WRITE) ? "WRITE" : "READ",
|
op_is_write(bio_op(bio)) ? "WRITE" : "READ",
|
||||||
(unsigned long long)bio->bi_iter.bi_sector,
|
(unsigned long long)bio->bi_iter.bi_sector,
|
||||||
bdevname(bio->bi_bdev, b),
|
bdevname(bio->bi_bdev, b),
|
||||||
count);
|
count);
|
||||||
|
|||||||
+1
-1
@@ -439,7 +439,7 @@ int blk_rq_map_sg(struct request_queue *q, struct request *rq,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (q->dma_drain_size && q->dma_drain_needed(rq)) {
|
if (q->dma_drain_size && q->dma_drain_needed(rq)) {
|
||||||
if (rq->cmd_flags & REQ_WRITE)
|
if (op_is_write(req_op(rq)))
|
||||||
memset(q->dma_drain_buffer, 0, q->dma_drain_size);
|
memset(q->dma_drain_buffer, 0, q->dma_drain_size);
|
||||||
|
|
||||||
sg_unmark_end(sg);
|
sg_unmark_end(sg);
|
||||||
|
|||||||
@@ -1190,7 +1190,7 @@ static int atapi_drain_needed(struct request *rq)
|
|||||||
if (likely(rq->cmd_type != REQ_TYPE_BLOCK_PC))
|
if (likely(rq->cmd_type != REQ_TYPE_BLOCK_PC))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (!blk_rq_bytes(rq) || (rq->cmd_flags & REQ_WRITE))
|
if (!blk_rq_bytes(rq) || op_is_write(req_op(rq)))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
return atapi_cmd_type(rq->cmd[0]) == ATAPI_MISC;
|
return atapi_cmd_type(rq->cmd[0]) == ATAPI_MISC;
|
||||||
|
|||||||
@@ -447,7 +447,7 @@ static int lo_req_flush(struct loop_device *lo, struct request *rq)
|
|||||||
|
|
||||||
static inline void handle_partial_read(struct loop_cmd *cmd, long bytes)
|
static inline void handle_partial_read(struct loop_cmd *cmd, long bytes)
|
||||||
{
|
{
|
||||||
if (bytes < 0 || (cmd->rq->cmd_flags & REQ_WRITE))
|
if (bytes < 0 || op_is_write(req_op(cmd->rq)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (unlikely(bytes < blk_rq_bytes(cmd->rq))) {
|
if (unlikely(bytes < blk_rq_bytes(cmd->rq))) {
|
||||||
@@ -541,7 +541,7 @@ static int do_req_filebacked(struct loop_device *lo, struct request *rq)
|
|||||||
|
|
||||||
pos = ((loff_t) blk_rq_pos(rq) << 9) + lo->lo_offset;
|
pos = ((loff_t) blk_rq_pos(rq) << 9) + lo->lo_offset;
|
||||||
|
|
||||||
if (rq->cmd_flags & REQ_WRITE) {
|
if (op_is_write(req_op(rq))) {
|
||||||
if (rq->cmd_flags & REQ_FLUSH)
|
if (rq->cmd_flags & REQ_FLUSH)
|
||||||
ret = lo_req_flush(lo, rq);
|
ret = lo_req_flush(lo, rq);
|
||||||
else if (rq->cmd_flags & REQ_DISCARD)
|
else if (rq->cmd_flags & REQ_DISCARD)
|
||||||
@@ -1672,7 +1672,7 @@ static int loop_queue_rq(struct blk_mq_hw_ctx *hctx,
|
|||||||
|
|
||||||
static void loop_handle_cmd(struct loop_cmd *cmd)
|
static void loop_handle_cmd(struct loop_cmd *cmd)
|
||||||
{
|
{
|
||||||
const bool write = cmd->rq->cmd_flags & REQ_WRITE;
|
const bool write = op_is_write(req_op(cmd->rq));
|
||||||
struct loop_device *lo = cmd->rq->q->queuedata;
|
struct loop_device *lo = cmd->rq->q->queuedata;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -462,7 +462,7 @@ static void process_page(unsigned long data)
|
|||||||
le32_to_cpu(desc->local_addr)>>9,
|
le32_to_cpu(desc->local_addr)>>9,
|
||||||
le32_to_cpu(desc->transfer_size));
|
le32_to_cpu(desc->transfer_size));
|
||||||
dump_dmastat(card, control);
|
dump_dmastat(card, control);
|
||||||
} else if ((bio->bi_rw & REQ_WRITE) &&
|
} else if (op_is_write(bio_op(bio)) &&
|
||||||
le32_to_cpu(desc->local_addr) >> 9 ==
|
le32_to_cpu(desc->local_addr) >> 9 ==
|
||||||
card->init_size) {
|
card->init_size) {
|
||||||
card->init_size += le32_to_cpu(desc->transfer_size) >> 9;
|
card->init_size += le32_to_cpu(desc->transfer_size) >> 9;
|
||||||
|
|||||||
@@ -824,7 +824,7 @@ void osd_req_write(struct osd_request *or,
|
|||||||
{
|
{
|
||||||
_osd_req_encode_common(or, OSD_ACT_WRITE, obj, offset, len);
|
_osd_req_encode_common(or, OSD_ACT_WRITE, obj, offset, len);
|
||||||
WARN_ON(or->out.bio || or->out.total_bytes);
|
WARN_ON(or->out.bio || or->out.total_bytes);
|
||||||
WARN_ON(0 == (bio->bi_rw & REQ_WRITE));
|
WARN_ON(!op_is_write(bio_op(bio)));
|
||||||
or->out.bio = bio;
|
or->out.bio = bio;
|
||||||
or->out.total_bytes = len;
|
or->out.total_bytes = len;
|
||||||
}
|
}
|
||||||
@@ -875,7 +875,7 @@ void osd_req_read(struct osd_request *or,
|
|||||||
{
|
{
|
||||||
_osd_req_encode_common(or, OSD_ACT_READ, obj, offset, len);
|
_osd_req_encode_common(or, OSD_ACT_READ, obj, offset, len);
|
||||||
WARN_ON(or->in.bio || or->in.total_bytes);
|
WARN_ON(or->in.bio || or->in.total_bytes);
|
||||||
WARN_ON(bio->bi_rw & REQ_WRITE);
|
WARN_ON(op_is_write(bio_op(bio)));
|
||||||
or->in.bio = bio;
|
or->in.bio = bio;
|
||||||
or->in.total_bytes = len;
|
or->in.total_bytes = len;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -601,7 +601,7 @@ static inline void blkg_rwstat_add(struct blkg_rwstat *rwstat,
|
|||||||
{
|
{
|
||||||
struct percpu_counter *cnt;
|
struct percpu_counter *cnt;
|
||||||
|
|
||||||
if (rw & REQ_WRITE)
|
if (op_is_write(rw))
|
||||||
cnt = &rwstat->cpu_cnt[BLKG_RWSTAT_WRITE];
|
cnt = &rwstat->cpu_cnt[BLKG_RWSTAT_WRITE];
|
||||||
else
|
else
|
||||||
cnt = &rwstat->cpu_cnt[BLKG_RWSTAT_READ];
|
cnt = &rwstat->cpu_cnt[BLKG_RWSTAT_READ];
|
||||||
|
|||||||
Reference in New Issue
Block a user