lightnvm: generalize rrpc ppa calculations
[cascardo/linux.git] / drivers / lightnvm / rrpc.h
index ef13ac7..0577c4d 100644 (file)
@@ -104,7 +104,7 @@ struct rrpc {
        struct rrpc_lun *luns;
 
        /* calculated values */
-       unsigned long long nr_pages;
+       unsigned long long nr_sects;
        unsigned long total_blocks;
 
        /* Write strategy variables. Move these into each for structure for each
@@ -156,6 +156,15 @@ struct rrpc_rev_addr {
        u64 addr;
 };
 
+static inline struct rrpc_block *rrpc_get_rblk(struct rrpc_lun *rlun,
+                                                               int blk_id)
+{
+       struct rrpc *rrpc = rlun->rrpc;
+       int lun_blk = blk_id % rrpc->dev->blks_per_lun;
+
+       return &rlun->blocks[lun_blk];
+}
+
 static inline sector_t rrpc_get_laddr(struct bio *bio)
 {
        return bio->bi_iter.bi_sector / NR_PHY_IN_LOG;
@@ -205,7 +214,7 @@ static inline int rrpc_lock_laddr(struct rrpc *rrpc, sector_t laddr,
                                 unsigned pages,
                                 struct rrpc_inflight_rq *r)
 {
-       BUG_ON((laddr + pages) > rrpc->nr_pages);
+       BUG_ON((laddr + pages) > rrpc->nr_sects);
 
        return __rrpc_lock_laddr(rrpc, laddr, pages, r);
 }
@@ -242,7 +251,7 @@ static inline void rrpc_unlock_rq(struct rrpc *rrpc, struct nvm_rq *rqd)
        struct rrpc_inflight_rq *r = rrpc_get_inflight_rq(rqd);
        uint8_t pages = rqd->nr_pages;
 
-       BUG_ON((r->l_start + pages) > rrpc->nr_pages);
+       BUG_ON((r->l_start + pages) > rrpc->nr_sects);
 
        rrpc_unlock_laddr(rrpc, r);
 }