Since there is no loop, we don't have to jump
to catch discard bio endio.

Signed-off-by: Kirill Tkhai <[email protected]>
---
 drivers/md/dm-ploop-map.c |   34 +++++++---------------------------
 drivers/md/dm-ploop.h     |    1 -
 2 files changed, 7 insertions(+), 28 deletions(-)

diff --git a/drivers/md/dm-ploop-map.c b/drivers/md/dm-ploop-map.c
index 967122e050f1..ca4a3a154578 100644
--- a/drivers/md/dm-ploop-map.c
+++ b/drivers/md/dm-ploop-map.c
@@ -514,31 +514,21 @@ static void handle_discard_pio(struct ploop *ploop, 
struct pio *pio,
                return;
        }
 
-       pio->action = PLOOP_END_IO_DISCARD_BIO;
        add_cluster_lk(ploop, pio, cluster);
-
-       read_lock_irq(&ploop->bat_rwlock);
-       inc_nr_inflight(ploop, pio);
-       read_unlock_irq(&ploop->bat_rwlock);
        atomic_inc(&ploop->nr_discard_bios);
 
        remap_to_cluster(ploop, pio, dst_cluster);
 
        pos = to_bytes(pio->bi_iter.bi_sector);
        ret = punch_hole(top_delta(ploop)->file, pos, pio->bi_iter.bi_size);
-       if (ret)
+       if (ret) {
                pio->bi_status = errno_to_blk_status(ret);
-       pio_endio(pio);
-}
-
-static int ploop_discard_pio_end(struct ploop *ploop, struct pio *pio)
-{
-       dec_nr_inflight(ploop, pio);
-       if (pio->bi_status == BLK_STS_OK)
-               queue_discard_index_wb(ploop, pio);
-       else
                pio->action = PLOOP_END_IO_DISCARD_INDEX_BIO;
-       return DM_ENDIO_INCOMPLETE;
+               pio_endio(pio);
+               return;
+       }
+
+       queue_discard_index_wb(ploop, pio);
 }
 
 static int ploop_discard_index_pio_end(struct ploop *ploop, struct pio *pio)
@@ -1516,15 +1506,8 @@ static void process_discard_pios(struct ploop *ploop, 
struct list_head *pios,
 {
        struct pio *pio;
 
-       while ((pio = pio_list_pop(pios)) != NULL) {
-
-               if (WARN_ON_ONCE(pio->action != PLOOP_END_IO_DISCARD_BIO)) {
-                       pio->bi_status = BLK_STS_IOERR;
-                       pio_endio(pio);
-                       continue;
-               }
+       while ((pio = pio_list_pop(pios)) != NULL)
                process_one_discard_pio(ploop, pio, piwb);
-       }
 }
 
 /* Remove from tree bio and endio bio chain */
@@ -1781,9 +1764,6 @@ static int ploop_endio(struct ploop *ploop, struct pio 
*pio)
        if (pio->action == PLOOP_END_IO_DATA_BIO)
                ret = ploop_data_pio_end(pio);
 
-       if (pio->action == PLOOP_END_IO_DISCARD_BIO)
-               ret = ploop_discard_pio_end(ploop, pio);
-
        if (pio->action == PLOOP_END_IO_DISCARD_INDEX_BIO)
                ret = ploop_discard_index_pio_end(ploop, pio);
 
diff --git a/drivers/md/dm-ploop.h b/drivers/md/dm-ploop.h
index 7579af22a43e..59f706ac8af5 100644
--- a/drivers/md/dm-ploop.h
+++ b/drivers/md/dm-ploop.h
@@ -258,7 +258,6 @@ struct pio {
 
 #define PLOOP_END_IO_NONE              0
 #define PLOOP_END_IO_DATA_BIO          1
-#define PLOOP_END_IO_DISCARD_BIO       2
 #define PLOOP_END_IO_DISCARD_INDEX_BIO 3
        unsigned int action:2;
        /*


_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to