public inbox for linux-mtd@lists.infradead.org
 help / color / mirror / Atom feed
From: Adrian Hunter <ext-adrian.hunter@nokia.com>
To: Brijesh Singh <brijesh.s.singh@gmail.com>
Cc: Amit Kumar Sharma <amitsharma.9@samsung.com>,
	"linux-mtd@lists.infradead.org" <linux-mtd@lists.infradead.org>,
	Corentin Chary <corentin.chary@gmail.com>
Subject: Re: Regarding UBI scalability
Date: Wed, 04 Feb 2009 11:29:32 +0200	[thread overview]
Message-ID: <49895FFC.4020600@nokia.com> (raw)
In-Reply-To: <6b5362aa0902030235t4175ec11re9b6335df558e6a@mail.gmail.com>

Brijesh Singh wrote:
> On Tue, Feb 3, 2009 at 5:14 AM, Corentin Chary <corentin.chary@gmail.com> wrote:
>> On Mon, Feb 2, 2009 at 12:18 PM, Adrian Hunter
>> <ext-adrian.hunter@nokia.com> wrote:
>>> Artem Bityutskiy wrote:
>>>> On Mon, 2009-02-02 at 13:07 +0200, Adrian Hunter wrote:
>>>>> I would suggest an intermediate step.  Create UBI2 which is
>>>>> similar to UBI but stores eraseblock information in one place,
>>>>> instead of at the beginning of each eraseblock.  Such an approach
>>>>> might be OK up to as much as 64GiB, and would probably perform
>>>>> better than a fully scalable version.
>>>>>
>>>>> Then look at creating UBI3, which is fully scalable.
>>>> Yes, I assume UBI2 should store mapping/erasure information in separate
>>>> tables, not in each eraseblock. So we should get rid of eraseblock
>>>> headers.
>>> Yes that is what I meant.  You could probably make do with as little as
>>> 12 bytes per eraseblock so a 64GiB flash with 512KiB eraseblock size
>>> would need 1536KiB table, which could be read in a second or two, so
>>> mount time is OK.
> 
> Adrian,to my understanding, this is minimum info needed per physical
> erase block...
> 
> Erase count                   -8 bytes
> Lnum                             -4 bytes
> Volume ID                      -4 byte(Can make it 1 byte for now as
> vol limit=128)
> Header CRC                   -4 bytes(Only for static volumes.)
> i.e. Minimum 20 bytes.  Is there any other way to make it 12?

8 bytes for erase counter is many more than needed i.e.
	SLC NAND 100,000 - 1,000,000 max. erase cycles
	MLC NAND 10000 - 10,000 max. erase cycles

Leave out the header CRC for dynamic volumes

Combine lnum and volume id.

Maybe go so far as to pack the information into bit fields
like LPT does. i.e. if the flash media only has a million
eraseblocks then only 20 bits are needed for lnum.  Maybe it
is MLC NAND, so say 15 bits for erase counter.  That leaves 5
bites for volume id, and fits into 5 bytes for dynmaic volumes.

> And how to update the table relatively efficiently?

Each update to UBI typically requires writing a whole NAND
page.  That page can be filled with unchanged information
from the first eraseblock of UBI information.  Hence after
enough updates the first eraseblock will end up containing
only out-of-date information and can then be unmapped.

Wash, rinse, repeat.

> 
>> Hi,
>> I was wondering how it is possible to get atomic operations using such tables ?
> May be keeping a commit block and journal will help.(*Like UBIFS design)
> 
> Thanks,
> Brijesh
> 

  parent reply	other threads:[~2009-02-04  9:16 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-01-30 12:45 Regarding UBI scalability BRIJESH SINGH
2009-02-02  9:31 ` Artem Bityutskiy
2009-02-02 10:17   ` Amit Kumar Sharma
2009-02-02 11:07     ` Adrian Hunter
2009-02-02 10:57       ` Artem Bityutskiy
2009-02-02 11:18         ` Adrian Hunter
2009-02-02 20:07           ` Jamie Lokier
2009-02-02 23:44           ` Corentin Chary
2009-02-03 10:35             ` Brijesh Singh
2009-02-03 10:48               ` Artem Bityutskiy
2009-02-03 11:27                 ` Enrico Scholz
2009-02-04  7:41                   ` Artem Bityutskiy
2009-02-04  9:29               ` Adrian Hunter [this message]
2009-02-05  9:37                 ` Brijesh Singh
2009-02-05 11:17                   ` Adrian Hunter
2009-02-11  7:50                     ` Brijesh Singh
2009-02-03 10:46             ` Artem Bityutskiy
2009-02-03 11:13               ` Corentin Chary
2009-02-03 11:51                 ` Brijesh Singh
2009-02-04  7:45                 ` Artem Bityutskiy
     [not found] <7824366.270131233573513030.JavaMail.weblogic@epml10>
2009-02-04  9:47 ` Adrian Hunter
2009-02-05  9:40   ` Brijesh Singh
2009-02-08  9:48     ` Corentin Chary
2009-02-08 10:31       ` Kyungmin Park
2009-02-09  8:46         ` Artem Bityutskiy

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=49895FFC.4020600@nokia.com \
    --to=ext-adrian.hunter@nokia.com \
    --cc=amitsharma.9@samsung.com \
    --cc=brijesh.s.singh@gmail.com \
    --cc=corentin.chary@gmail.com \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox