* [PATCH] lightnvm: do not assume sequential lun alloc.
@ 2016-04-29 14:46 Javier González
2016-05-02 8:22 ` Matias Bjørling
0 siblings, 1 reply; 2+ messages in thread
From: Javier González @ 2016-04-29 14:46 UTC (permalink / raw)
To: mb; +Cc: linux-kernel, linux-block, Javier González
When doing GC, rrpc calculates the physical LUN to which the rrpc block
belongs too. This calculation is based on the assumption that LUNs are
assigned sequentially to the LUN list. Use the reference to the LUN
instead. This saves us the calculation and allows us to align LUNs in a
different manner to, for example, take advantage of devide parallelism.
Signed-off-by: Javier González <javier@cnexlabs.com>
---
drivers/lightnvm/rrpc.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/lightnvm/rrpc.c b/drivers/lightnvm/rrpc.c
index ffcfee6..48862ead 100644
--- a/drivers/lightnvm/rrpc.c
+++ b/drivers/lightnvm/rrpc.c
@@ -405,9 +405,8 @@ static void rrpc_block_gc(struct work_struct *work)
ws_gc);
struct rrpc *rrpc = gcb->rrpc;
struct rrpc_block *rblk = gcb->rblk;
+ struct rrpc_lun *rlun = rblk->rlun;
struct nvm_dev *dev = rrpc->dev;
- struct nvm_lun *lun = rblk->parent->lun;
- struct rrpc_lun *rlun = &rrpc->luns[lun->id - rrpc->lun_offset];
mempool_free(gcb, rrpc->gcb_pool);
pr_debug("nvm: block '%lu' being reclaimed\n", rblk->parent->id);
@@ -508,9 +507,9 @@ static void rrpc_gc_queue(struct work_struct *work)
ws_gc);
struct rrpc *rrpc = gcb->rrpc;
struct rrpc_block *rblk = gcb->rblk;
+ struct rrpc_lun *rlun = rblk->rlun;
struct nvm_lun *lun = rblk->parent->lun;
struct nvm_block *blk = rblk->parent;
- struct rrpc_lun *rlun = &rrpc->luns[lun->id - rrpc->lun_offset];
spin_lock(&rlun->lock);
list_add_tail(&rblk->prio, &rlun->prio_list);
--
2.5.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] lightnvm: do not assume sequential lun alloc.
2016-04-29 14:46 [PATCH] lightnvm: do not assume sequential lun alloc Javier González
@ 2016-05-02 8:22 ` Matias Bjørling
0 siblings, 0 replies; 2+ messages in thread
From: Matias Bjørling @ 2016-05-02 8:22 UTC (permalink / raw)
To: Javier González; +Cc: linux-kernel, linux-block, Javier González
On 04/29/2016 04:46 PM, Javier González wrote:
> When doing GC, rrpc calculates the physical LUN to which the rrpc block
> belongs too. This calculation is based on the assumption that LUNs are
> assigned sequentially to the LUN list. Use the reference to the LUN
> instead. This saves us the calculation and allows us to align LUNs in a
> different manner to, for example, take advantage of devide parallelism.
>
> Signed-off-by: Javier González <javier@cnexlabs.com>
> ---
> drivers/lightnvm/rrpc.c | 5 ++---
> 1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/lightnvm/rrpc.c b/drivers/lightnvm/rrpc.c
> index ffcfee6..48862ead 100644
> --- a/drivers/lightnvm/rrpc.c
> +++ b/drivers/lightnvm/rrpc.c
> @@ -405,9 +405,8 @@ static void rrpc_block_gc(struct work_struct *work)
> ws_gc);
> struct rrpc *rrpc = gcb->rrpc;
> struct rrpc_block *rblk = gcb->rblk;
> + struct rrpc_lun *rlun = rblk->rlun;
> struct nvm_dev *dev = rrpc->dev;
> - struct nvm_lun *lun = rblk->parent->lun;
> - struct rrpc_lun *rlun = &rrpc->luns[lun->id - rrpc->lun_offset];
>
> mempool_free(gcb, rrpc->gcb_pool);
> pr_debug("nvm: block '%lu' being reclaimed\n", rblk->parent->id);
> @@ -508,9 +507,9 @@ static void rrpc_gc_queue(struct work_struct *work)
> ws_gc);
> struct rrpc *rrpc = gcb->rrpc;
> struct rrpc_block *rblk = gcb->rblk;
> + struct rrpc_lun *rlun = rblk->rlun;
> struct nvm_lun *lun = rblk->parent->lun;
> struct nvm_block *blk = rblk->parent;
> - struct rrpc_lun *rlun = &rrpc->luns[lun->id - rrpc->lun_offset];
>
> spin_lock(&rlun->lock);
> list_add_tail(&rblk->prio, &rlun->prio_list);
>
Thanks Javier. Applied for 4.7.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2016-05-02 8:22 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-04-29 14:46 [PATCH] lightnvm: do not assume sequential lun alloc Javier González
2016-05-02 8:22 ` Matias Bjørling
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox