Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a8ebb056 authored by Mike Christie's avatar Mike Christie Committed by Jens Axboe
Browse files

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: default avatarMike Christie <mchristi@redhat.com>
Reviewed-by: default avatarHannes Reinecke <hare@suse.com>
Signed-off-by: default avatarJens Axboe <axboe@fb.com>
parent dfec8a14
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -2115,7 +2115,7 @@ blk_qc_t submit_bio(struct bio *bio)
		else
			count = bio_sectors(bio);

		if (bio->bi_rw & WRITE) {
		if (op_is_write(bio_op(bio))) {
			count_vm_events(PGPGOUT, count);
		} else {
			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];
			printk(KERN_DEBUG "%s(%d): %s block %Lu on %s (%u sectors)\n",
			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,
				bdevname(bio->bi_bdev, b),
				count);
+1 −1
Original line number Diff line number Diff line
@@ -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 (rq->cmd_flags & REQ_WRITE)
		if (op_is_write(req_op(rq)))
			memset(q->dma_drain_buffer, 0, q->dma_drain_size);

		sg_unmark_end(sg);
+1 −1
Original line number Diff line number Diff line
@@ -1190,7 +1190,7 @@ static int atapi_drain_needed(struct request *rq)
	if (likely(rq->cmd_type != REQ_TYPE_BLOCK_PC))
		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 atapi_cmd_type(rq->cmd[0]) == ATAPI_MISC;
+3 −3
Original line number Diff line number Diff line
@@ -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)
{
	if (bytes < 0 || (cmd->rq->cmd_flags & REQ_WRITE))
	if (bytes < 0 || op_is_write(req_op(cmd->rq)))
		return;

	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;

	if (rq->cmd_flags & REQ_WRITE) {
	if (op_is_write(req_op(rq))) {
		if (rq->cmd_flags & REQ_FLUSH)
			ret = lo_req_flush(lo, rq);
		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)
{
	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;
	int ret = 0;

+1 −1
Original line number Diff line number Diff line
@@ -462,7 +462,7 @@ static void process_page(unsigned long data)
				le32_to_cpu(desc->local_addr)>>9,
				le32_to_cpu(desc->transfer_size));
			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 ==
				card->init_size) {
			card->init_size += le32_to_cpu(desc->transfer_size) >> 9;
Loading