dm: reduce code duplication in __map_bio
authorMike Snitzer <snitzer@redhat.com>
Fri, 18 Feb 2022 04:40:14 +0000 (23:40 -0500)
committerMike Snitzer <snitzer@redhat.com>
Mon, 21 Feb 2022 20:36:25 +0000 (15:36 -0500)
Error path code (for handling DM_MAPIO_REQUEUE and DM_MAPIO_KILL) is
effectively identical.

Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Mikulas Patocka <mpatocka@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm.c

index c01bfa3..fb129fe 100644 (file)
@@ -1180,20 +1180,14 @@ static void __map_bio(struct bio *clone)
                submit_bio_noacct(clone);
                break;
        case DM_MAPIO_KILL:
-               if (unlikely(swap_bios_limit(ti, clone))) {
-                       struct mapped_device *md = io->md;
-                       up(&md->swap_bios_semaphore);
-               }
-               free_tio(clone);
-               dm_io_dec_pending(io, BLK_STS_IOERR);
-               break;
        case DM_MAPIO_REQUEUE:
-               if (unlikely(swap_bios_limit(ti, clone))) {
-                       struct mapped_device *md = io->md;
-                       up(&md->swap_bios_semaphore);
-               }
+               if (unlikely(swap_bios_limit(ti, clone)))
+                       up(&io->md->swap_bios_semaphore);
                free_tio(clone);
-               dm_io_dec_pending(io, BLK_STS_DM_REQUEUE);
+               if (r == DM_MAPIO_KILL)
+                       dm_io_dec_pending(io, BLK_STS_IOERR);
+               else
+                       dm_io_dec_pending(io, BLK_STS_DM_REQUEUE);
                break;
        default:
                DMWARN("unimplemented target map return value: %d", r);