Browse Source

dm: use op_is_write 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 has dm use the op_is_write helper which will do the right
thing.

Signed-off-by: Mike Christie <mchristi@redhat.com>
Reviewed-by: Hannes Reinecke <hare@suse.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
Mike Christie 9 years ago
parent
commit
5111166693
2 changed files with 5 additions and 5 deletions
  1. 2 2
      drivers/md/dm-io.c
  2. 3 3
      drivers/md/dm-kcopyd.c

+ 2 - 2
drivers/md/dm-io.c

@@ -409,7 +409,7 @@ static int sync_io(struct dm_io_client *client, unsigned int num_regions,
 	struct io *io;
 	struct io *io;
 	struct sync_io sio;
 	struct sync_io sio;
 
 
-	if (num_regions > 1 && (rw & RW_MASK) != WRITE) {
+	if (num_regions > 1 && !op_is_write(rw)) {
 		WARN_ON(1);
 		WARN_ON(1);
 		return -EIO;
 		return -EIO;
 	}
 	}
@@ -442,7 +442,7 @@ static int async_io(struct dm_io_client *client, unsigned int num_regions,
 {
 {
 	struct io *io;
 	struct io *io;
 
 
-	if (num_regions > 1 && (rw & RW_MASK) != WRITE) {
+	if (num_regions > 1 && !op_is_write(rw)) {
 		WARN_ON(1);
 		WARN_ON(1);
 		fn(1, context);
 		fn(1, context);
 		return -EIO;
 		return -EIO;

+ 3 - 3
drivers/md/dm-kcopyd.c

@@ -465,7 +465,7 @@ static void complete_io(unsigned long error, void *context)
 	io_job_finish(kc->throttle);
 	io_job_finish(kc->throttle);
 
 
 	if (error) {
 	if (error) {
-		if (job->rw & WRITE)
+		if (op_is_write(job->rw))
 			job->write_err |= error;
 			job->write_err |= error;
 		else
 		else
 			job->read_err = 1;
 			job->read_err = 1;
@@ -477,7 +477,7 @@ static void complete_io(unsigned long error, void *context)
 		}
 		}
 	}
 	}
 
 
-	if (job->rw & WRITE)
+	if (op_is_write(job->rw))
 		push(&kc->complete_jobs, job);
 		push(&kc->complete_jobs, job);
 
 
 	else {
 	else {
@@ -550,7 +550,7 @@ static int process_jobs(struct list_head *jobs, struct dm_kcopyd_client *kc,
 
 
 		if (r < 0) {
 		if (r < 0) {
 			/* error this rogue job */
 			/* error this rogue job */
-			if (job->rw & WRITE)
+			if (op_is_write(job->rw))
 				job->write_err = (unsigned long) -1L;
 				job->write_err = (unsigned long) -1L;
 			else
 			else
 				job->read_err = 1;
 				job->read_err = 1;