mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-18 10:56:14 +00:00
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>
This commit is contained in:
parent
a8ebb056a8
commit
5111166693
@ -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;
|
||||||
|
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user