lightnvm: refactor phys addrs type to u64

For cases where CONFIG_LBDAF is not set. The struct ppa_addr exceeds its
type on 32 bit architectures. ppa_addr requires a 64bit integer to hold
the generic ppa format. We therefore refactor it to u64 and
replaces the sector_t usages with u64 for physical addresses.

Signed-off-by: Matias Bjørling <[email protected]>
Signed-off-by: Jens Axboe <[email protected]>
This commit is contained in:
Matias Bjørling 2015-11-02 17:12:27 +01:00 • committed by Jens Axboe
commit b7ceb7d500
3 changed files with 25 additions and 26 deletions

View file

@ -116,15 +116,14 @@ static int block_is_full(struct rrpc *rrpc, struct rrpc_block *rblk)
return (rblk->next_page == rrpc->dev->pgs_per_blk);
}
static sector_t block_to_addr(struct rrpc *rrpc, struct rrpc_block *rblk)
static u64 block_to_addr(struct rrpc *rrpc, struct rrpc_block *rblk)
{
struct nvm_block *blk = rblk->parent;
return blk->id * rrpc->dev->pgs_per_blk;
}
static struct ppa_addr rrpc_ppa_to_gaddr(struct nvm_dev *dev,
sector_t addr)
static struct ppa_addr rrpc_ppa_to_gaddr(struct nvm_dev *dev, u64 addr)
{
struct ppa_addr paddr;
@ -231,7 +230,7 @@ static int rrpc_move_valid_pages(struct rrpc *rrpc, struct rrpc_block *rblk)
struct page *page;
int slot;
int nr_pgs_per_blk = rrpc->dev->pgs_per_blk;
sector_t phys_addr;
u64 phys_addr;
DECLARE_COMPLETION_ONSTACK(wait);
if (bitmap_full(rblk->invalid_pages, nr_pgs_per_blk))
@ -464,7 +463,7 @@ static struct rrpc_lun *rrpc_get_lun_rr(struct rrpc *rrpc, int is_gc)
}
static struct rrpc_addr *rrpc_update_map(struct rrpc *rrpc, sector_t laddr,
struct rrpc_block *rblk, sector_t paddr)
struct rrpc_block *rblk, u64 paddr)
{
struct rrpc_addr *gp;
struct rrpc_rev_addr *rev;
@ -486,9 +485,9 @@ static struct rrpc_addr *rrpc_update_map(struct rrpc *rrpc, sector_t laddr,
return gp;
}
static sector_t rrpc_alloc_addr(struct rrpc *rrpc, struct rrpc_block *rblk)
static u64 rrpc_alloc_addr(struct rrpc *rrpc, struct rrpc_block *rblk)
{
sector_t addr = ADDR_EMPTY;
u64 addr = ADDR_EMPTY;
spin_lock(&rblk->lock);
if (block_is_full(rrpc, rblk))
@ -516,7 +515,7 @@ static struct rrpc_addr *rrpc_map_page(struct rrpc *rrpc, sector_t laddr,
struct rrpc_lun *rlun;
struct rrpc_block *rblk;
struct nvm_lun *lun;
sector_t paddr;
u64 paddr;
rlun = rrpc_get_lun_rr(rrpc, is_gc);
lun = rlun->parent;
@ -1144,7 +1143,7 @@ static void rrpc_block_map_update(struct rrpc *rrpc, struct rrpc_block *rblk)
struct nvm_dev *dev = rrpc->dev;
int offset;
struct rrpc_addr *laddr;
sector_t paddr, pladdr;
u64 paddr, pladdr;
for (offset = 0; offset < dev->pgs_per_blk; offset++) {
paddr = block_to_addr(rrpc, rblk) + offset;

View file

@ -86,7 +86,7 @@ struct rrpc {
struct nvm_dev *dev;
struct gendisk *disk;
sector_t poffset; /* physical page offset */
u64 poffset; /* physical page offset */
int lun_offset;
int nr_luns;
@ -136,13 +136,13 @@ struct rrpc_block_gc {
/* Logical to physical mapping */
struct rrpc_addr {
sector_t addr;
u64 addr;
struct rrpc_block *rblk;
};
/* Physical to logical mapping */
struct rrpc_rev_addr {
sector_t addr;
u64 addr;
};
static inline sector_t rrpc_get_laddr(struct bio *bio)