From: Richard Weinberger <richard@nod.at>
To: "Guido Martínez" <guido@vanguardiasur.com.ar>
Cc: linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org,
dedekind1@gmail.com
Subject: Re: [PATCH 2/6] UBI: Fastmap: Don't allocate new ubi_wl_entry objects
Date: Thu, 18 Dec 2014 02:21:53 +0100 [thread overview]
Message-ID: <54922C31.8070402@nod.at> (raw)
In-Reply-To: <20141218011807.GA6626@fox>
Guido,
Am 18.12.2014 um 02:18 schrieb Guido Martínez:
> Hi Richard,
>
> On Sun, Nov 30, 2014 at 12:35:36PM +0100, Richard Weinberger wrote:
>> There is no need to allocate new ones every time, we can reuse
>> the existing ones.
>> This makes the code cleaner and more easy to follow.
>>
>> Signed-off-by: Richard Weinberger <richard@nod.at>
>> ---
>> drivers/mtd/ubi/fastmap.c | 31 +++++--------------------------
>> drivers/mtd/ubi/wl.c | 11 +++++++----
>> 2 files changed, 12 insertions(+), 30 deletions(-)
>>
>> diff --git a/drivers/mtd/ubi/fastmap.c b/drivers/mtd/ubi/fastmap.c
>> index db3defd..9507702 100644
>> --- a/drivers/mtd/ubi/fastmap.c
>> +++ b/drivers/mtd/ubi/fastmap.c
>> @@ -1446,19 +1446,6 @@ int ubi_update_fastmap(struct ubi_device *ubi)
>> }
>>
>> new_fm->used_blocks = ubi->fm_size / ubi->leb_size;
>> -
>> - for (i = 0; i < new_fm->used_blocks; i++) {
>> - new_fm->e[i] = kmem_cache_alloc(ubi_wl_entry_slab, GFP_KERNEL);
>> - if (!new_fm->e[i]) {
>> - while (i--)
>> - kfree(new_fm->e[i]);
>> -
>> - kfree(new_fm);
>> - mutex_unlock(&ubi->fm_mutex);
>> - return -ENOMEM;
>> - }
>> - }
>> -
>> old_fm = ubi->fm;
>> ubi->fm = NULL;
>>
>> @@ -1494,12 +1481,9 @@ int ubi_update_fastmap(struct ubi_device *ubi)
>> ubi_err(ubi, "could not erase old fastmap PEB");
>> goto err;
>> }
>> -
>> - new_fm->e[i]->pnum = old_fm->e[i]->pnum;
>> - new_fm->e[i]->ec = old_fm->e[i]->ec;
>> + new_fm->e[i] = old_fm->e[i];
>> } else {
>> - new_fm->e[i]->pnum = tmp_e->pnum;
>> - new_fm->e[i]->ec = tmp_e->ec;
>> + new_fm->e[i] = tmp_e;
>>
>> if (old_fm)
>> ubi_wl_put_fm_peb(ubi, old_fm->e[i], i,
>> @@ -1524,16 +1508,13 @@ int ubi_update_fastmap(struct ubi_device *ubi)
>> i, 0);
>> goto err;
>> }
>> -
>> - new_fm->e[0]->pnum = old_fm->e[0]->pnum;
>> + new_fm->e[0] = old_fm->e[0];
>> new_fm->e[0]->ec = ret;
>> } else {
>> /* we've got a new anchor PEB, return the old one */
>> ubi_wl_put_fm_peb(ubi, old_fm->e[0], 0,
>> old_fm->to_be_tortured[0]);
>> -
>> - new_fm->e[0]->pnum = tmp_e->pnum;
>> - new_fm->e[0]->ec = tmp_e->ec;
>> + new_fm->e[0] = tmp_e;
>> }
>> } else {
>> if (!tmp_e) {
>> @@ -1546,9 +1527,7 @@ int ubi_update_fastmap(struct ubi_device *ubi)
>> ret = -ENOSPC;
>> goto err;
>> }
>> -
>> - new_fm->e[0]->pnum = tmp_e->pnum;
>> - new_fm->e[0]->ec = tmp_e->ec;
>> + new_fm->e[0] = tmp_e;
>> }
>>
>> down_write(&ubi->work_sem);
>> diff --git a/drivers/mtd/ubi/wl.c b/drivers/mtd/ubi/wl.c
>> index 47b215f..523d8a4 100644
>> --- a/drivers/mtd/ubi/wl.c
>> +++ b/drivers/mtd/ubi/wl.c
>> @@ -1014,9 +1014,6 @@ int ubi_wl_put_fm_peb(struct ubi_device *ubi, struct ubi_wl_entry *fm_e,
>> e = fm_e;
>> ubi_assert(e->ec >= 0);
>> ubi->lookuptbl[pnum] = e;
>> - } else {
>> - e->ec = fm_e->ec;
>> - kfree(fm_e);
>> }
>>
>> spin_unlock(&ubi->wl_lock);
>> @@ -2008,9 +2005,15 @@ int ubi_wl_init(struct ubi_device *ubi, struct ubi_attach_info *ai)
>>
>> dbg_wl("found %i PEBs", found_pebs);
>>
>> - if (ubi->fm)
>> + if (ubi->fm) {
>> ubi_assert(ubi->good_peb_count == \
>> found_pebs + ubi->fm->used_blocks);
>> +
>> + for (i = 0; i < ubi->fm->used_blocks; i++) {
>> + e = ubi->fm->e[i];
>> + ubi->lookuptbl[e->pnum] = e;
>> + }
>> + }
> Should this be in a separate patch? The commit log doesn't mention it.
Hmm, looks like a fragment from the memleak fix.
I've split up a lot of patches, maybe some hunks sneaked into other patches.
Anyway, will fixup!
Thanks a lot for reviewing!
//richard
WARNING: multiple messages have this Message-ID (diff)
From: Richard Weinberger <richard@nod.at>
To: "Guido Martínez" <guido@vanguardiasur.com.ar>
Cc: dedekind1@gmail.com, linux-mtd@lists.infradead.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/6] UBI: Fastmap: Don't allocate new ubi_wl_entry objects
Date: Thu, 18 Dec 2014 02:21:53 +0100 [thread overview]
Message-ID: <54922C31.8070402@nod.at> (raw)
In-Reply-To: <20141218011807.GA6626@fox>
Guido,
Am 18.12.2014 um 02:18 schrieb Guido Martínez:
> Hi Richard,
>
> On Sun, Nov 30, 2014 at 12:35:36PM +0100, Richard Weinberger wrote:
>> There is no need to allocate new ones every time, we can reuse
>> the existing ones.
>> This makes the code cleaner and more easy to follow.
>>
>> Signed-off-by: Richard Weinberger <richard@nod.at>
>> ---
>> drivers/mtd/ubi/fastmap.c | 31 +++++--------------------------
>> drivers/mtd/ubi/wl.c | 11 +++++++----
>> 2 files changed, 12 insertions(+), 30 deletions(-)
>>
>> diff --git a/drivers/mtd/ubi/fastmap.c b/drivers/mtd/ubi/fastmap.c
>> index db3defd..9507702 100644
>> --- a/drivers/mtd/ubi/fastmap.c
>> +++ b/drivers/mtd/ubi/fastmap.c
>> @@ -1446,19 +1446,6 @@ int ubi_update_fastmap(struct ubi_device *ubi)
>> }
>>
>> new_fm->used_blocks = ubi->fm_size / ubi->leb_size;
>> -
>> - for (i = 0; i < new_fm->used_blocks; i++) {
>> - new_fm->e[i] = kmem_cache_alloc(ubi_wl_entry_slab, GFP_KERNEL);
>> - if (!new_fm->e[i]) {
>> - while (i--)
>> - kfree(new_fm->e[i]);
>> -
>> - kfree(new_fm);
>> - mutex_unlock(&ubi->fm_mutex);
>> - return -ENOMEM;
>> - }
>> - }
>> -
>> old_fm = ubi->fm;
>> ubi->fm = NULL;
>>
>> @@ -1494,12 +1481,9 @@ int ubi_update_fastmap(struct ubi_device *ubi)
>> ubi_err(ubi, "could not erase old fastmap PEB");
>> goto err;
>> }
>> -
>> - new_fm->e[i]->pnum = old_fm->e[i]->pnum;
>> - new_fm->e[i]->ec = old_fm->e[i]->ec;
>> + new_fm->e[i] = old_fm->e[i];
>> } else {
>> - new_fm->e[i]->pnum = tmp_e->pnum;
>> - new_fm->e[i]->ec = tmp_e->ec;
>> + new_fm->e[i] = tmp_e;
>>
>> if (old_fm)
>> ubi_wl_put_fm_peb(ubi, old_fm->e[i], i,
>> @@ -1524,16 +1508,13 @@ int ubi_update_fastmap(struct ubi_device *ubi)
>> i, 0);
>> goto err;
>> }
>> -
>> - new_fm->e[0]->pnum = old_fm->e[0]->pnum;
>> + new_fm->e[0] = old_fm->e[0];
>> new_fm->e[0]->ec = ret;
>> } else {
>> /* we've got a new anchor PEB, return the old one */
>> ubi_wl_put_fm_peb(ubi, old_fm->e[0], 0,
>> old_fm->to_be_tortured[0]);
>> -
>> - new_fm->e[0]->pnum = tmp_e->pnum;
>> - new_fm->e[0]->ec = tmp_e->ec;
>> + new_fm->e[0] = tmp_e;
>> }
>> } else {
>> if (!tmp_e) {
>> @@ -1546,9 +1527,7 @@ int ubi_update_fastmap(struct ubi_device *ubi)
>> ret = -ENOSPC;
>> goto err;
>> }
>> -
>> - new_fm->e[0]->pnum = tmp_e->pnum;
>> - new_fm->e[0]->ec = tmp_e->ec;
>> + new_fm->e[0] = tmp_e;
>> }
>>
>> down_write(&ubi->work_sem);
>> diff --git a/drivers/mtd/ubi/wl.c b/drivers/mtd/ubi/wl.c
>> index 47b215f..523d8a4 100644
>> --- a/drivers/mtd/ubi/wl.c
>> +++ b/drivers/mtd/ubi/wl.c
>> @@ -1014,9 +1014,6 @@ int ubi_wl_put_fm_peb(struct ubi_device *ubi, struct ubi_wl_entry *fm_e,
>> e = fm_e;
>> ubi_assert(e->ec >= 0);
>> ubi->lookuptbl[pnum] = e;
>> - } else {
>> - e->ec = fm_e->ec;
>> - kfree(fm_e);
>> }
>>
>> spin_unlock(&ubi->wl_lock);
>> @@ -2008,9 +2005,15 @@ int ubi_wl_init(struct ubi_device *ubi, struct ubi_attach_info *ai)
>>
>> dbg_wl("found %i PEBs", found_pebs);
>>
>> - if (ubi->fm)
>> + if (ubi->fm) {
>> ubi_assert(ubi->good_peb_count == \
>> found_pebs + ubi->fm->used_blocks);
>> +
>> + for (i = 0; i < ubi->fm->used_blocks; i++) {
>> + e = ubi->fm->e[i];
>> + ubi->lookuptbl[e->pnum] = e;
>> + }
>> + }
> Should this be in a separate patch? The commit log doesn't mention it.
Hmm, looks like a fragment from the memleak fix.
I've split up a lot of patches, maybe some hunks sneaked into other patches.
Anyway, will fixup!
Thanks a lot for reviewing!
//richard
next prev parent reply other threads:[~2014-12-18 1:22 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-30 11:35 Fastmap update v2 (pile 2) Richard Weinberger
2014-11-30 11:35 ` [PATCH 1/6] UBI: Fastmap: Fix memory leaks while closing the WL sub-system Richard Weinberger
2014-11-30 11:35 ` Richard Weinberger
2014-12-07 8:13 ` Tanya Brokhman
2014-12-07 9:54 ` Richard Weinberger
2014-12-07 11:32 ` Tanya Brokhman
2014-12-07 11:34 ` Richard Weinberger
2014-12-07 13:26 ` Tanya Brokhman
2014-12-07 13:46 ` Richard Weinberger
2014-12-17 20:01 ` Guido Martínez
2014-12-17 20:01 ` Guido Martínez
2014-11-30 11:35 ` [PATCH 2/6] UBI: Fastmap: Don't allocate new ubi_wl_entry objects Richard Weinberger
2014-11-30 11:35 ` Richard Weinberger
2014-12-07 13:49 ` Tanya Brokhman
2014-12-08 8:36 ` Tanya Brokhman
2014-12-08 9:14 ` Richard Weinberger
2014-12-08 9:37 ` Tanya Brokhman
2014-12-08 9:39 ` Richard Weinberger
2014-12-18 1:18 ` Guido Martínez
2014-12-18 1:18 ` Guido Martínez
2014-12-18 1:21 ` Richard Weinberger [this message]
2014-12-18 1:21 ` Richard Weinberger
2014-11-30 11:35 ` [PATCH 3/6] UBI: Fastmap: Notify user in case of an ubi_update_fastmap() failure Richard Weinberger
2014-11-30 11:35 ` Richard Weinberger
2014-12-07 13:59 ` Tanya Brokhman
2014-12-07 14:22 ` Richard Weinberger
2014-12-08 6:58 ` Tanya Brokhman
2014-12-08 9:11 ` Richard Weinberger
2014-12-08 13:00 ` Tanya Brokhman
2014-12-08 13:07 ` Richard Weinberger
2014-12-08 13:20 ` Richard Weinberger
2014-11-30 11:35 ` [PATCH 4/6] UBI: Fastmap: Wrap fastmap specific function in a ifdef Richard Weinberger
2014-11-30 11:35 ` Richard Weinberger
2014-12-07 14:05 ` Tanya Brokhman
2014-11-30 11:35 ` [PATCH 5/6] UBI: Fastmap: Fix fastmap usage in ubi_volume_notify() Richard Weinberger
2014-11-30 11:35 ` Richard Weinberger
2014-12-07 14:06 ` Tanya Brokhman
2014-11-30 11:35 ` [PATCH 6/6] UBI: Fastmap: Fix memory leak while attaching Richard Weinberger
2014-11-30 11:35 ` Richard Weinberger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54922C31.8070402@nod.at \
--to=richard@nod.at \
--cc=dedekind1@gmail.com \
--cc=guido@vanguardiasur.com.ar \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.