All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tanya Brokhman <tlinder@codeaurora.org>
To: Richard Weinberger <richard@nod.at>, dedekind1@gmail.com
Cc: linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 5/6] UBI: Split __wl_get_peb()
Date: Fri, 05 Dec 2014 19:41:57 +0200	[thread overview]
Message-ID: <5481EE65.1090705@codeaurora.org> (raw)
In-Reply-To: <1416835236-25185-6-git-send-email-richard@nod.at>

On 11/24/2014 3:20 PM, Richard Weinberger wrote:
> Make it two functions, wl_get_wle() and wl_get_peb().
> wl_get_peb() works exactly like __wl_get_peb() but wl_get_wle()
> does not call produce_free_peb().
> While refilling the fastmap user pool we cannot release ubi->wl_lock
> as produce_free_peb() does.
> Hence the fastmap logic uses now wl_get_wle().

hmmm... confused... I don't see fastmap code changed

>
> Signed-off-by: Richard Weinberger <richard@nod.at>
> ---
>   drivers/mtd/ubi/wl.c | 61 ++++++++++++++++++++++++++++++++--------------------
>   1 file changed, 38 insertions(+), 23 deletions(-)
>
> diff --git a/drivers/mtd/ubi/wl.c b/drivers/mtd/ubi/wl.c
> index 7730b97..f028b68 100644
> --- a/drivers/mtd/ubi/wl.c
> +++ b/drivers/mtd/ubi/wl.c
> @@ -499,13 +499,46 @@ out:
>   #endif
>
>   /**
> - * __wl_get_peb - get a physical eraseblock.
> + * wl_get_wle - get a mean wl entry to be used by wl_get_peb() or
> + * refill_wl_user_pool().
> + * @ubi: UBI device description object
> + *
> + * This function returns a a wear leveling entry in case of success and

If you upload a new version, you have a double "a" here: "returns a a 
wear leveling"

> + * NULL in case of failure.
> + */
> +static struct ubi_wl_entry *wl_get_wle(struct ubi_device *ubi)
> +{
> +	struct ubi_wl_entry *e;
> +
> +	e = find_mean_wl_entry(ubi, &ubi->free);
> +	if (!e) {
> +		ubi_err(ubi, "no free eraseblocks");
> +		return NULL;
> +	}
> +
> +	self_check_in_wl_tree(ubi, e, &ubi->free);
> +
> +	/*
> +	 * Move the physical eraseblock to the protection queue where it will
> +	 * be protected from being moved for some time.
> +	 */

I don't think this comment is valid anymore....

> +	rb_erase(&e->u.rb, &ubi->free);
> +	ubi->free_count--;
> +	dbg_wl("PEB %d EC %d", e->pnum, e->ec);
> +
> +	return e;
> +}
> +
> +/**
> + * wl_get_peb - get a physical eraseblock.
>    * @ubi: UBI device description object
>    *
>    * This function returns a physical eraseblock in case of success and a
>    * negative error code in case of failure.
> + * It is the low level component of ubi_wl_get_peb() in the non-fastmap
> + * case.
>    */
> -static int __wl_get_peb(struct ubi_device *ubi)
> +static int wl_get_peb(struct ubi_device *ubi)
>   {
>   	int err;
>   	struct ubi_wl_entry *e;
> @@ -524,27 +557,9 @@ retry:
>   		goto retry;
>   	}
>
> -	e = find_mean_wl_entry(ubi, &ubi->free);
> -	if (!e) {
> -		ubi_err(ubi, "no free eraseblocks");
> -		return -ENOSPC;
> -	}
> -
> -	self_check_in_wl_tree(ubi, e, &ubi->free);
> -
> -	/*
> -	 * Move the physical eraseblock to the protection queue where it will
> -	 * be protected from being moved for some time.
> -	 */
> -	rb_erase(&e->u.rb, &ubi->free);
> -	ubi->free_count--;
> -	dbg_wl("PEB %d EC %d", e->pnum, e->ec);
> -#ifndef CONFIG_MTD_UBI_FASTMAP
> -	/* We have to enqueue e only if fastmap is disabled,
> -	 * is fastmap enabled prot_queue_add() will be called by
> -	 * ubi_wl_get_peb() after removing e from the pool. */
> +	e = wl_get_wle(ubi);
>   	prot_queue_add(ubi, e);
> -#endif
> +
>   	return e->pnum;
>   }
>
> @@ -704,7 +719,7 @@ int ubi_wl_get_peb(struct ubi_device *ubi)
>   	int peb, err;
>
>   	spin_lock(&ubi->wl_lock);
> -	peb = __wl_get_peb(ubi);
> +	peb = wl_get_peb(ubi);
>   	spin_unlock(&ubi->wl_lock);
>
>   	if (peb < 0)
>


Thanks,
Tanya Brokhman
-- 
Qualcomm Israel, on behalf of Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project

  reply	other threads:[~2014-12-05 17:42 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
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 [this message]
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=5481EE65.1090705@codeaurora.org \
    --to=tlinder@codeaurora.org \
    --cc=dedekind1@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mtd@lists.infradead.org \
    --cc=richard@nod.at \
    /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.