@@ -510,14 +510,10 @@ static int lo_rw_aio(struct loop_device *lo, struct loop_cmd *cmd,
510
510
return 0 ;
511
511
}
512
512
513
-
514
- static inline int lo_rw_simple (struct loop_device * lo ,
515
- struct request * rq , loff_t pos , bool rw )
513
+ static int do_req_filebacked (struct loop_device * lo , struct request * rq )
516
514
{
517
515
struct loop_cmd * cmd = blk_mq_rq_to_pdu (rq );
518
-
519
- if (cmd -> use_aio )
520
- return lo_rw_aio (lo , cmd , pos , rw );
516
+ loff_t pos = ((loff_t ) blk_rq_pos (rq ) << 9 ) + lo -> lo_offset ;
521
517
522
518
/*
523
519
* lo_write_simple and lo_read_simple should have been covered
@@ -528,37 +524,30 @@ static inline int lo_rw_simple(struct loop_device *lo,
528
524
* of the req at one time. And direct read IO doesn't need to
529
525
* run flush_dcache_page().
530
526
*/
531
- if (rw == WRITE )
532
- return lo_write_simple (lo , rq , pos );
533
- else
534
- return lo_read_simple (lo , rq , pos );
535
- }
536
-
537
- static int do_req_filebacked (struct loop_device * lo , struct request * rq )
538
- {
539
- loff_t pos ;
540
- int ret ;
541
-
542
- pos = ((loff_t ) blk_rq_pos (rq ) << 9 ) + lo -> lo_offset ;
543
-
544
- if (op_is_write (req_op (rq ))) {
545
- if (req_op (rq ) == REQ_OP_FLUSH )
546
- ret = lo_req_flush (lo , rq );
547
- else if (req_op (rq ) == REQ_OP_DISCARD )
548
- ret = lo_discard (lo , rq , pos );
549
- else if (lo -> transfer )
550
- ret = lo_write_transfer (lo , rq , pos );
527
+ switch (req_op (rq )) {
528
+ case REQ_OP_FLUSH :
529
+ return lo_req_flush (lo , rq );
530
+ case REQ_OP_DISCARD :
531
+ return lo_discard (lo , rq , pos );
532
+ case REQ_OP_WRITE :
533
+ if (lo -> transfer )
534
+ return lo_write_transfer (lo , rq , pos );
535
+ else if (cmd -> use_aio )
536
+ return lo_rw_aio (lo , cmd , pos , WRITE );
551
537
else
552
- ret = lo_rw_simple (lo , rq , pos , WRITE );
553
-
554
- } else {
538
+ return lo_write_simple (lo , rq , pos );
539
+ case REQ_OP_READ :
555
540
if (lo -> transfer )
556
- ret = lo_read_transfer (lo , rq , pos );
541
+ return lo_read_transfer (lo , rq , pos );
542
+ else if (cmd -> use_aio )
543
+ return lo_rw_aio (lo , cmd , pos , READ );
557
544
else
558
- ret = lo_rw_simple (lo , rq , pos , READ );
545
+ return lo_read_simple (lo , rq , pos );
546
+ default :
547
+ WARN_ON_ONCE (1 );
548
+ return - EIO ;
549
+ break ;
559
550
}
560
-
561
- return ret ;
562
551
}
563
552
564
553
struct switch_request {
0 commit comments