From: Richard Weinberger <richard@nod.at>
To: Tanya Brokhman <tlinder@codeaurora.org>, dedekind1@gmail.com
Cc: linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 4/6] UBI: Fastmap: Fix races in ubi_wl_get_peb()
Date: Sun, 07 Dec 2014 10:45:15 +0100 [thread overview]
Message-ID: <548421AB.90303@nod.at> (raw)
In-Reply-To: <54840385.5040305@codeaurora.org>
Am 07.12.2014 um 08:36 schrieb Tanya Brokhman:
> On 12/5/2014 11:08 PM, Richard Weinberger wrote:
>
>>
>>>>>> spin_unlock(&ubi->wl_lock);
>>>>>> + if (retried) {
>>>>>> + ubi_err(ubi, "Unable to get a free PEB from user WL pool");
>>>>>> + ret = -ENOSPC;
>>>>>> + goto out;
>>>>>> + }
>>>>>> + retried = 1;
>>>>>
>>>>> Why did you decide to retry in this function? and why only 1 retry attempt? I'm not against it, trying to understand the logic.
>>>>
>>>> Because failing immediately with -ENOSPC is not nice.
>>>
>>> Why not? this is what was done before....
>>
>> The behavior from before was not good.
>> If we return here a -ENOSPC it is not because we ran out of free PEBs, it is because the pool contains
>> no free PEBs and needs refilling.
>> As between refilling the pool and requesting a fresh PEB from it another thread could "steal" all PEBs
>> we retry.
>>
>>> I think what I really bothers me in this case is that you don't sleep, you branch immediately to retry again, so the chances that there will be context switch and free pebs appear
>>> aren't that high.
>>> I'm used to functions using some sort of "retry" logic to sleep before retrying. Of course sleeping isn't a good idea here. That's why the "retry" bugs me a bit.
>>
>> You mean a cond_resched()?
>> This retry-logic is common pattern in UBI. For exmaple see ubi_wl_put_peb().
>
> you're right. didn't pay much attention to ubi_wl_put_peb() before. don't like it there either :)
> perhaps we can rethink this later for both cases.
If there is room for improvement I'm all open for an extra patch set all over UBI. :-)
Thanks,
//richard
next prev parent reply other threads:[~2014-12-07 9:45 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-24 13:20 Fastmap update v2 (pile 1) Richard Weinberger
2014-11-24 13:20 ` [PATCH 1/6] UBI: Fastmap: Care about the protection queue Richard Weinberger
2014-11-24 13:20 ` Richard Weinberger
2014-11-27 14:54 ` Artem Bityutskiy
2015-01-09 21:23 ` Ezequiel Garcia
2015-01-09 21:31 ` Richard Weinberger
2015-01-09 21:34 ` Ezequiel Garcia
2014-11-24 13:20 ` [PATCH 2/6] UBI: Fastmap: Ensure that only one fastmap work is scheduled Richard Weinberger
2014-11-24 13:20 ` Richard Weinberger
2014-11-27 15:27 ` Artem Bityutskiy
2014-11-27 16:13 ` Richard Weinberger
2014-11-27 16:35 ` Artem Bityutskiy
2014-11-27 16:39 ` Richard Weinberger
2014-11-27 16:49 ` Artem Bityutskiy
2014-12-04 16:14 ` Tanya Brokhman
2014-12-17 13:51 ` Guido Martínez
2014-12-17 13:51 ` Guido Martínez
2014-11-24 13:20 ` [PATCH 3/6] UBI: Fastmap: Ensure that all fastmap work is done upon WL shutdown Richard Weinberger
2014-11-24 13:20 ` Richard Weinberger
2014-11-27 15:38 ` Artem Bityutskiy
2014-11-27 16:08 ` Richard Weinberger
2014-11-27 16:29 ` Artem Bityutskiy
2014-11-27 16:35 ` Richard Weinberger
2014-11-27 16:47 ` Artem Bityutskiy
2014-11-28 9:53 ` Richard Weinberger
2014-12-04 16:44 ` Tanya Brokhman
2014-12-04 17:21 ` Richard Weinberger
2014-12-17 14:26 ` Guido Martínez
2014-12-17 14:26 ` Guido Martínez
2015-01-09 21:32 ` Ezequiel Garcia
2015-01-09 21:37 ` Richard Weinberger
2015-01-09 21:39 ` Ezequiel Garcia
2014-11-24 13:20 ` [PATCH 4/6] UBI: Fastmap: Fix races in ubi_wl_get_peb() Richard Weinberger
2014-11-24 13:20 ` Richard Weinberger
2014-12-05 13:09 ` Tanya Brokhman
2014-12-05 13:20 ` Richard Weinberger
2014-12-05 16:54 ` Tanya Brokhman
2014-12-05 21:08 ` Richard Weinberger
2014-12-07 7:36 ` Tanya Brokhman
2014-12-07 9:45 ` Richard Weinberger [this message]
2014-11-24 13:20 ` [PATCH 5/6] UBI: Split __wl_get_peb() Richard Weinberger
2014-11-24 13:20 ` Richard Weinberger
2014-12-05 17:41 ` Tanya Brokhman
2014-12-05 21:02 ` Richard Weinberger
2014-12-17 15:03 ` Guido Martínez
2014-12-17 15:03 ` Guido Martínez
2014-11-24 13:20 ` [PATCH 6/6] UBI: Fastmap: Make ubi_refill_pools() fair Richard Weinberger
2014-11-24 13:20 ` Richard Weinberger
2014-12-05 17:55 ` Tanya Brokhman
2014-12-05 20:56 ` Richard Weinberger
2014-12-07 7:55 ` Tanya Brokhman
2014-12-07 9:49 ` Richard Weinberger
2014-12-17 15:48 ` Guido Martínez
2014-12-17 15:48 ` Guido Martínez
2014-11-27 14:53 ` Fastmap update v2 (pile 1) Artem Bityutskiy
2014-11-27 14:59 ` Richard Weinberger
2014-12-10 8:21 ` Richard Weinberger
2014-12-10 8:21 ` Richard Weinberger
2015-01-05 10:37 ` Richard Weinberger
2015-01-05 10:37 ` Richard Weinberger
2015-01-09 21:38 ` Ezequiel Garcia
2015-01-09 21:55 ` Richard Weinberger
2015-01-09 22:09 ` Ezequiel Garcia
2015-01-09 22:20 ` Richard Weinberger
2015-03-29 10:46 ` Richard Weinberger
2015-03-29 10:46 ` 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=548421AB.90303@nod.at \
--to=richard@nod.at \
--cc=dedekind1@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
--cc=tlinder@codeaurora.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.