lkml.org 
[lkml]   [2016]   [Jan]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 15/25] lightnvm: move rq->error to nvm_rq->error
    Date
    Instead of passing request error into the LightNVM modules, incorporate
    it into the nvm_rq.

    Signed-off-by: Matias Bjørling <m@bjorling.me>
    ---
    drivers/lightnvm/core.c | 3 ++-
    drivers/lightnvm/gennvm.c | 6 +++---
    drivers/lightnvm/rrpc.c | 2 +-
    include/linux/lightnvm.h | 4 +++-
    4 files changed, 9 insertions(+), 6 deletions(-)

    diff --git a/drivers/lightnvm/core.c b/drivers/lightnvm/core.c
    index cd674af..dad84dd 100644
    --- a/drivers/lightnvm/core.c
    +++ b/drivers/lightnvm/core.c
    @@ -291,7 +291,8 @@ EXPORT_SYMBOL(nvm_erase_ppa);

    void nvm_end_io(struct nvm_rq *rqd, int error)
    {
    - rqd->end_io(rqd, error);
    + rqd->error = error;
    + rqd->end_io(rqd);
    }
    EXPORT_SYMBOL(nvm_end_io);

    diff --git a/drivers/lightnvm/gennvm.c b/drivers/lightnvm/gennvm.c
    index 262da6d..4c15846 100644
    --- a/drivers/lightnvm/gennvm.c
    +++ b/drivers/lightnvm/gennvm.c
    @@ -363,11 +363,11 @@ static void gennvm_mark_blk_bad(struct nvm_dev *dev, struct nvm_rq *rqd)
    gennvm_blk_set_type(dev, &rqd->ppa_addr, 2);
    }

    -static void gennvm_end_io(struct nvm_rq *rqd, int error)
    +static void gennvm_end_io(struct nvm_rq *rqd)
    {
    struct nvm_tgt_instance *ins = rqd->ins;

    - switch (error) {
    + switch (rqd->error) {
    case NVM_RSP_SUCCESS:
    case NVM_RSP_ERR_EMPTYPAGE:
    break;
    @@ -375,7 +375,7 @@ static void gennvm_end_io(struct nvm_rq *rqd, int error)
    gennvm_mark_blk_bad(rqd->dev, rqd);
    }

    - ins->tt->end_io(rqd, error);
    + ins->tt->end_io(rqd);
    }

    static int gennvm_submit_io(struct nvm_dev *dev, struct nvm_rq *rqd)
    diff --git a/drivers/lightnvm/rrpc.c b/drivers/lightnvm/rrpc.c
    index ec7aacf..9a5d940 100644
    --- a/drivers/lightnvm/rrpc.c
    +++ b/drivers/lightnvm/rrpc.c
    @@ -658,7 +658,7 @@ static void rrpc_end_io_write(struct rrpc *rrpc, struct rrpc_rq *rrqd,
    }
    }

    -static void rrpc_end_io(struct nvm_rq *rqd, int error)
    +static void rrpc_end_io(struct nvm_rq *rqd)
    {
    struct rrpc *rrpc = container_of(rqd->ins, struct rrpc, instance);
    struct rrpc_rq *rrqd = nvm_rq_to_pdu(rqd);
    diff --git a/include/linux/lightnvm.h b/include/linux/lightnvm.h
    index a83298f..9acc71a 100644
    --- a/include/linux/lightnvm.h
    +++ b/include/linux/lightnvm.h
    @@ -149,7 +149,7 @@ struct ppa_addr {
    };

    struct nvm_rq;
    -typedef void (nvm_end_io_fn)(struct nvm_rq *, int);
    +typedef void (nvm_end_io_fn)(struct nvm_rq *);

    struct nvm_rq {
    struct nvm_tgt_instance *ins;
    @@ -173,6 +173,8 @@ struct nvm_rq {
    uint8_t opcode;
    uint16_t nr_pages;
    uint16_t flags;
    +
    + int error;
    };

    static inline struct nvm_rq *nvm_rq_from_pdu(void *pdu)
    --
    2.1.4
    \
     
     \ /
      Last update: 2016-01-12 08:21    [W:2.493 / U:0.464 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site