lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Mon, 2 Oct 2017 17:16:57 +0200
From:   Javier González <jg@...htnvm.io>
To:     Javier González <jg@...htnvm.io>
Cc:     Rakesh Pandit <rakesh@...era.com>,
        Matias Bjørling <mb@...htnvm.io>,
        linux-block@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH 2/6] lightnvm: pblk: reduce arguments in
 __pblk_rb_update_l2p

> On 2 Oct 2017, at 13.32, Javier González <jg@...htnvm.io> wrote:
> 
>> On 1 Oct 2017, at 15.23, Rakesh Pandit <rakesh@...era.com> wrote:
>> 
>> We already pass the structure pointer so no need to pass the member.
>> 
>> Signed-off-by: Rakesh Pandit <rakesh@...era.com>
>> ---
>> drivers/lightnvm/pblk-rb.c | 12 ++++++------
>> 1 file changed, 6 insertions(+), 6 deletions(-)
>> 
>> diff --git a/drivers/lightnvm/pblk-rb.c b/drivers/lightnvm/pblk-rb.c
>> index 05e6b2e..920ffac 100644
>> --- a/drivers/lightnvm/pblk-rb.c
>> +++ b/drivers/lightnvm/pblk-rb.c
>> @@ -201,9 +201,9 @@ unsigned int pblk_rb_read_commit(struct pblk_rb *rb, unsigned int nr_entries)
>> 	return subm;
>> }
>> 
>> -static int __pblk_rb_update_l2p(struct pblk_rb *rb, unsigned int *l2p_upd,
>> -				unsigned int to_update)
>> +static int __pblk_rb_update_l2p(struct pblk_rb *rb, unsigned int to_update)
>> {
>> +	unsigned int l2p_update = rb->l2p_update;
>> 	struct pblk *pblk = container_of(rb, struct pblk, rwb);
>> 	struct pblk_line *line;
>> 	struct pblk_rb_entry *entry;
>> @@ -213,7 +213,7 @@ static int __pblk_rb_update_l2p(struct pblk_rb *rb, unsigned int *l2p_upd,
>> 	int flags;
>> 
>> 	for (i = 0; i < to_update; i++) {
>> -		entry = &rb->entries[*l2p_upd];
>> +		entry = &rb->entries[l2p_update];
>> 		w_ctx = &entry->w_ctx;
>> 
>> 		flags = READ_ONCE(entry->w_ctx.flags);
>> @@ -230,7 +230,7 @@ static int __pblk_rb_update_l2p(struct pblk_rb *rb, unsigned int *l2p_upd,
>> 		line = &pblk->lines[pblk_tgt_ppa_to_line(w_ctx->ppa)];
>> 		kref_put(&line->ref, pblk_line_put);
>> 		clean_wctx(w_ctx);
>> -		*l2p_upd = (*l2p_upd + 1) & (rb->nr_entries - 1);
>> +		rb->l2p_update = (l2p_update + 1) & (rb->nr_entries - 1);

This is wrong. It should be rb->l2p_update when doing +1, otherwise you
are not using the updated l2p_update value. The result is the pipeline
stalling as the l2p pointer is left behind.

I'll fix it when picking it up.

Please test the patches before submitting.

Javier.

Download attachment "signature.asc" of type "application/pgp-signature" (834 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ