block: loop: don't handle REQ_FUA explicitly
authorMing Lei <ming.lei@canonical.com>
Wed, 31 Dec 2014 13:23:00 +0000 (13:23 +0000)
committerJens Axboe <axboe@fb.com>
Fri, 2 Jan 2015 22:07:49 +0000 (15:07 -0700)
block core handles REQ_FUA by its flush state machine, so
won't do it in loop explicitly.

Signed-off-by: Ming Lei <ming.lei@canonical.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
drivers/block/loop.c

index 018af27..185a86d 100644 (file)
@@ -459,23 +459,15 @@ 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 (rq->cmd_flags & REQ_FLUSH)
                        ret = lo_req_flush(lo, rq);
-
-               if (rq->cmd_flags & REQ_DISCARD) {
+               else if (rq->cmd_flags & REQ_DISCARD)
                        ret = lo_discard(lo, rq, pos);
-                       goto out;
-               }
-
-               ret = lo_send(lo, rq, pos);
-
-               if ((rq->cmd_flags & REQ_FUA) && !ret)
-                       ret = lo_req_flush(lo, rq);
+               else
+                       ret = lo_send(lo, rq, pos);
        } else
                ret = lo_receive(lo, rq, lo->lo_blocksize, pos);
 
-out:
        return ret;
 }