[Devel] [PATCH RH8 53/61] ploop: Kill PLOOP_END_IO_DISCARD_BIO
Kirill Tkhai
ktkhai at virtuozzo.com
Fri May 14 18:59:20 MSK 2021
Since there is no loop, we don't have to jump
to catch discard bio endio.
Signed-off-by: Kirill Tkhai <ktkhai at virtuozzo.com>
---
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;
/*
More information about the Devel
mailing list