[Devel] [PATCH 4/6] ploop: Remove now unused PLOOP_REQ_RELOC_S branches
Kirill Tkhai
ktkhai at virtuozzo.com
Tue Apr 30 13:03:45 MSK 2019
This flag is never set anymore, so the patch
kills all unused branches under it.
Signed-off-by: Kirill Tkhai <ktkhai at virtuozzo.com>
---
drivers/block/ploop/dev.c | 54 +++--------------------------------------
drivers/block/ploop/events.h | 1 -
drivers/block/ploop/io_kaio.c | 1 -
drivers/block/ploop/map.c | 28 ++-------------------
include/linux/ploop/ploop.h | 13 +---------
5 files changed, 8 insertions(+), 89 deletions(-)
diff --git a/drivers/block/ploop/dev.c b/drivers/block/ploop/dev.c
index eb9df4369488..333f02adcf5c 100644
--- a/drivers/block/ploop/dev.c
+++ b/drivers/block/ploop/dev.c
@@ -1291,7 +1291,6 @@ static void ploop_complete_request(struct ploop_request * preq)
WARN_ON(!preq->error && test_bit(PLOOP_REQ_ISSUE_FLUSH, &preq->state));
if (test_bit(PLOOP_REQ_RELOC_A, &preq->state) ||
- test_bit(PLOOP_REQ_RELOC_S, &preq->state) ||
test_bit(PLOOP_REQ_RELOC_N, &preq->state)) {
if (preq->error)
set_bit(PLOOP_S_ABORT, &plo->state);
@@ -1769,7 +1768,6 @@ static inline bool preq_is_special(struct ploop_request * preq)
return state & (PLOOP_REQ_MERGE_FL |
PLOOP_REQ_RELOC_A_FL |
- PLOOP_REQ_RELOC_S_FL |
PLOOP_REQ_RELOC_N_FL);
}
@@ -1867,8 +1865,7 @@ ploop_entry_request(struct ploop_request * preq)
preq->req_rw |= REQ_SYNC;
restart:
- if (test_bit(PLOOP_REQ_RELOC_A, &preq->state) ||
- test_bit(PLOOP_REQ_RELOC_S, &preq->state)) {
+ if (test_bit(PLOOP_REQ_RELOC_A, &preq->state)) {
err = ploop_entry_reloc_req(preq, &iblk);
if (err)
goto error;
@@ -2058,8 +2055,7 @@ ploop_entry_request(struct ploop_request * preq)
if (delta) {
if (delta == top_delta) {
/* Block exists in top delta. Good. */
- if (plo->maintenance_type == PLOOP_MNTN_GROW ||
- plo->maintenance_type == PLOOP_MNTN_RELOC) {
+ if (plo->maintenance_type == PLOOP_MNTN_GROW) {
spin_lock_irq(&plo->lock);
ploop_add_lockout(preq, 0);
spin_unlock_irq(&plo->lock);
@@ -2245,36 +2241,7 @@ static void ploop_req_state_process(struct ploop_request * preq)
ploop_entry_request(preq);
break;
- case PLOOP_E_RELOC_COMPLETE:
- BUG_ON (!test_bit(PLOOP_REQ_RELOC_S, &preq->state));
- if (!preq->error) {
- spin_lock_irq(&plo->lock);
- if (!list_empty(&preq->delay_list)) {
- struct ploop_request *pr;
- pr = list_entry(preq->delay_list.next,
- struct ploop_request, list);
- list_splice_init(&preq->delay_list,
- plo->ready_queue.prev);
- }
- spin_unlock_irq(&plo->lock);
- preq->req_cluster = ~0U;
- preq->src_iblock = ~0U; /* redundant */
- preq->dst_cluster = ~0U; /* redundant */
- preq->dst_iblock = ~0U; /* redundant */
- preq->eng_state = PLOOP_E_ENTRY;
- goto restart;
- }
- /* drop down to PLOOP_E_COMPLETE case ... */
case PLOOP_E_COMPLETE:
- if (unlikely(test_bit(PLOOP_REQ_RELOC_S, &preq->state) &&
- preq->error)) {
- printk("RELOC_S completed with err %d"
- " (%u %u %u %u %u)\n",
- preq->error, preq->req_cluster, preq->iblock,
- preq->src_iblock, preq->dst_cluster,
- preq->dst_iblock);
- }
-
if (!preq->error &&
test_bit(PLOOP_REQ_TRANS, &preq->state)) {
u32 iblk;
@@ -2396,21 +2363,8 @@ static void ploop_req_state_process(struct ploop_request * preq)
top_delta = ploop_top_delta(plo);
sbl.head = sbl.tail = preq->aux_bio;
- /* Relocated data write required sync before BAT update
- * this will happen inside index_update */
-
- if (test_bit(PLOOP_REQ_RELOC_S, &preq->state)) {
- preq->eng_state = PLOOP_E_DATA_WBI;
- plo->st.bio_out++;
- preq->iblock = preq->dst_iblock;
- top_delta->io.ops->submit(&top_delta->io, preq,
- preq->req_rw, &sbl,
- preq->iblock,
- cluster_size_in_sec(plo));
- } else {
- top_delta->ops->allocate(top_delta, preq, &sbl,
- cluster_size_in_sec(plo));
- }
+ top_delta->ops->allocate(top_delta, preq, &sbl,
+ cluster_size_in_sec(plo));
break;
}
case PLOOP_E_RELOC_NULLIFY:
diff --git a/drivers/block/ploop/events.h b/drivers/block/ploop/events.h
index 57f72e6b3b80..7e0b8e4ad9f7 100644
--- a/drivers/block/ploop/events.h
+++ b/drivers/block/ploop/events.h
@@ -42,7 +42,6 @@
{ 1 << PLOOP_REQ_TRANS, "T"}, \
{ 1 << PLOOP_REQ_MERGE, "M"}, \
{ 1 << PLOOP_REQ_RELOC_A, "RA"}, \
- { 1 << PLOOP_REQ_RELOC_S, "RS"}, \
{ 1 << PLOOP_REQ_RELOC_N, "RN"})
#define PREQ_FORMAT "preq=0x%p cluster=0x%x iblock=0x%x size=0x%x eng_state=0x%lx state=%s rw=%s"
diff --git a/drivers/block/ploop/io_kaio.c b/drivers/block/ploop/io_kaio.c
index daad912c3a91..940250e2a260 100644
--- a/drivers/block/ploop/io_kaio.c
+++ b/drivers/block/ploop/io_kaio.c
@@ -68,7 +68,6 @@ static void kaio_complete_io_state(struct ploop_request * preq)
int need_fua = !!(preq->req_rw & REQ_FUA);
unsigned long state = READ_ONCE(preq->state);
int reloc = !!(state & (PLOOP_REQ_RELOC_A_FL|
- PLOOP_REQ_RELOC_S_FL|
PLOOP_REQ_RELOC_N_FL));
if (preq->error || !(preq->req_rw & REQ_FUA) ||
diff --git a/drivers/block/ploop/map.c b/drivers/block/ploop/map.c
index e03df205b0ab..e2893ab78468 100644
--- a/drivers/block/ploop/map.c
+++ b/drivers/block/ploop/map.c
@@ -894,8 +894,6 @@ void ploop_index_update(struct ploop_request * preq)
map_index_t blk;
int old_level;
struct page * page;
- unsigned long state = READ_ONCE(preq->state);
- int do_fsync_if_delayed = 0;
/* No way back, we are going to initiate index write. */
@@ -948,13 +946,7 @@ void ploop_index_update(struct ploop_request * preq)
will do the FLUSH */
preq->req_rw &= ~REQ_FLUSH;
- /* Relocate requires consistent index update */
- if (state & (PLOOP_REQ_RELOC_A_FL|PLOOP_REQ_RELOC_S_FL)) {
- preq->req_index_update_rw |= (REQ_FLUSH | REQ_FUA);
- do_fsync_if_delayed = 1;
- }
-
- ploop_index_wb_proceed_or_delay(preq, do_fsync_if_delayed);
+ ploop_index_wb_proceed_or_delay(preq, 0);
return;
enomem:
@@ -1017,25 +1009,11 @@ static void map_wb_complete_post_process(struct ploop_map *map,
{
struct ploop_device *plo = map->plo;
- if (likely(err ||
- (!test_bit(PLOOP_REQ_RELOC_A, &preq->state) &&
- !test_bit(PLOOP_REQ_RELOC_S, &preq->state)))) {
-
+ if (likely(err || !test_bit(PLOOP_REQ_RELOC_A, &preq->state))) {
requeue_req(preq, PLOOP_E_COMPLETE);
return;
}
- if (test_bit(PLOOP_REQ_RELOC_S, &preq->state)) {
- spin_lock_irq(&plo->lock);
- del_lockout(preq);
- map_release(preq->map);
- preq->map = NULL;
- spin_unlock_irq(&plo->lock);
-
- requeue_req(preq, PLOOP_E_RELOC_COMPLETE);
- return;
- }
-
BUG_ON (!test_bit(PLOOP_REQ_RELOC_A, &preq->state));
BUG_ON (!preq->aux_bio);
@@ -1158,7 +1136,7 @@ static void map_wb_complete(struct map_node * m, int err)
state = READ_ONCE(preq->state);
/* Relocate requires consistent index update */
- if (state & (PLOOP_REQ_RELOC_A_FL|PLOOP_REQ_RELOC_S_FL)) {
+ if (state & PLOOP_REQ_RELOC_A_FL) {
rw |= (REQ_FLUSH | REQ_FUA);
do_fsync_if_delayed = 1;
}
diff --git a/include/linux/ploop/ploop.h b/include/linux/ploop/ploop.h
index 7066857e2b3b..8e17d0918e4a 100644
--- a/include/linux/ploop/ploop.h
+++ b/include/linux/ploop/ploop.h
@@ -486,7 +486,6 @@ enum
PLOOP_REQ_TRANS,
PLOOP_REQ_MERGE,
PLOOP_REQ_RELOC_A, /* 'A' stands for allocate() */
- PLOOP_REQ_RELOC_S, /* Obsolete: 'S' stands for submit() */
PLOOP_REQ_RELOC_N, /* 'N' stands for "nullify" */
PLOOP_REQ_RSYNC,
PLOOP_REQ_KAIO_FSYNC, /*force image fsync by KAIO module */
@@ -499,14 +498,12 @@ enum
#define PLOOP_REQ_MERGE_FL (1 << PLOOP_REQ_MERGE)
#define PLOOP_REQ_RELOC_A_FL (1 << PLOOP_REQ_RELOC_A)
-#define PLOOP_REQ_RELOC_S_FL (1 << PLOOP_REQ_RELOC_S) /* Obsolete */
#define PLOOP_REQ_RELOC_N_FL (1 << PLOOP_REQ_RELOC_N)
enum
{
PLOOP_E_ENTRY, /* Not yet processed */
PLOOP_E_COMPLETE, /* Complete. Maybe, with an error */
- PLOOP_E_RELOC_COMPLETE, /* Reloc complete. Maybe, with an error */
PLOOP_E_INDEX_READ, /* Reading an index page */
PLOOP_E_TRANS_INDEX_READ,/* Reading a trans index page */
PLOOP_E_DELTA_READ, /* Write request reads data from previos delta */
@@ -565,15 +562,7 @@ struct ploop_request
iblock_t iblock;
- /* relocation info */
- union {
- struct {
- iblock_t src_iblock;
- iblock_t dst_iblock;
- };
- unsigned long ppb_state;
- };
- cluster_t dst_cluster;
+ unsigned long ppb_state;
struct rb_node reloc_link;
/* State specific information */
More information about the Devel
mailing list