From: Arnd Bergmann <arnd.bergmann@linaro.org>
To: Saugata Das <saugata.das@linaro.org>
Cc: "Ted Ts'o" <tytso@mit.edu>,
Artem Bityutskiy <dedekind1@gmail.com>,
Saugata Das <saugata.das@stericsson.com>,
linux-ext4@vger.kernel.org, linux-fsdevel@vger.kernel.org,
linux-mmc@vger.kernel.org, patches@linaro.org, venkat@linaro.org
Subject: Re: [PATCH 2/3] ext4: Context support
Date: Tue, 12 Jun 2012 13:29:25 +0000 [thread overview]
Message-ID: <201206121329.25953.arnd.bergmann@linaro.org> (raw)
In-Reply-To: <CAKLKtzeo1x+0Kxd0+29yqvXh4FBiS+p=T7b1-BWb6HXH5e1hhQ@mail.gmail.com>
On Tuesday 12 June 2012, Saugata Das wrote:
> On 11 June 2012 17:57, Ted Ts'o <tytso@mit.edu> wrote:
> > On Mon, Jun 11, 2012 at 02:41:31PM +0300, Artem Bityutskiy wrote:
> > The proof-of-concept patches seem to use the inode number as a way of
> > trying to group related writes, but what about at a larger level than
> > that? For example, if we install a RPM or deb package where all of
> > the files will likely be replaced together, should that be given the
> > same context?
>
> In this patch, context is used at file level based on inode number.
> So, in the above example, multiple contexts will be used for the
> directory, file updates during RPM installation.
>
> >
> > How likely does it have to be that related blocks written under the
> > same context must be deleted at the same time for this concept to be
> > helpful?
>
> There is no restriction that related blocks within the MMC context
> needs to be deleted together
I don't think that is correct. The most obvious implementation in eMMC
hardware for this would be to group all data from one context to be
written into the same erase block, in order to reduce the amount
of garbage collection that needs to happen at erase time. AFAICT,
the main interest here is, as Ted is guessing correctly, to make sure
that all data which gets written into one context has roughly the
same life time before it gets erased or overwritten.
> > If we have a context where it is the context assumption does
> > not hold (example: a database where you have a random access
> > read/write pattern with blocks updated in place) how harm will it be
> > to the device format if those blocks are written under the same
> > context?
> >
>
> MMC context allows the data blocks to be overwritten or randomly accessed
That is of course the defined behavior of a block device that does
not change with the use of contexts. To get the best performance,
a random-write database file would always reside in a context by itself
and not get mixed with long-lived write-once data. If we have a way
in the file system to tell whether a file is written linearly or randomly
(e.g. by looking at the O_APPEND or O_CREAT flag), it might make sense
to split the context space accordingly.
> > The next set of questions we need to ask is how generalizable is this
> > concept to devices that might be more sophisticated than simple eMMC
> > devices. If we're going to expose something all the way out to the
> > file system layer, it would be nice if it worked on more than just
> > low-end flash devices, but also on more sophisticated devices as well.
> >
>
> This context mechanism will be used on both UFS and MMC devices. If
> there are some alternate suggestions on what can be used as context
> from file system perspective, then please suggest.
One suggestion that has been made before was to base the context on
the process ID rather than the inode number, but that has many other
problems, e.g. when the same file gets written by multiple processes.
Arnd
next prev parent reply other threads:[~2012-06-12 13:29 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-11 10:46 [PATCH 1/3] block: Context support Saugata Das
2012-06-11 10:46 ` [PATCH 2/3] ext4: " Saugata Das
2012-06-11 11:41 ` Artem Bityutskiy
2012-06-11 12:27 ` Ted Ts'o
2012-06-12 12:21 ` Saugata Das
2012-06-12 12:32 ` Ted Ts'o
2012-06-12 13:29 ` Arnd Bergmann [this message]
2012-06-12 14:26 ` Saugata Das
2012-06-12 14:55 ` Arnd Bergmann
2012-06-12 18:19 ` Ted Ts'o
2012-06-12 20:07 ` Arnd Bergmann
2012-06-12 20:41 ` Ted Ts'o
2012-06-13 19:44 ` Arnd Bergmann
2012-06-13 20:00 ` Ted Ts'o
2012-06-13 20:43 ` Arnd Bergmann
2012-06-14 2:07 ` Ted Ts'o
2012-06-14 16:14 ` Nicolas Pitre
2012-06-14 16:24 ` Artem Bityutskiy
2012-06-14 17:05 ` Ted Ts'o
2012-06-14 19:08 ` Nicolas Pitre
2012-06-15 9:19 ` Arnd Bergmann
2012-06-15 21:30 ` Ted Ts'o
2012-06-16 6:49 ` Arnd Bergmann
2012-06-14 21:55 ` Arnd Bergmann
2012-06-15 5:18 ` Andreas Dilger
2012-06-15 9:25 ` Arnd Bergmann
2012-06-15 9:40 ` Andreas Dilger
2012-06-15 10:54 ` Arnd Bergmann
2012-06-15 22:04 ` Ted Ts'o
2012-06-15 22:25 ` Andreas Dilger
2012-06-16 7:14 ` Arnd Bergmann
2012-06-16 7:28 ` Arnd Bergmann
2012-06-16 7:26 ` Arnd Bergmann
2012-06-16 13:49 ` Ted Ts'o
2012-06-16 17:41 ` Arnd Bergmann
2012-06-18 17:42 ` Ted Ts'o
2012-06-19 15:17 ` Arnd Bergmann
2012-06-20 15:09 ` Luca Porzio (lporzio)
2012-06-20 15:46 ` Arnd Bergmann
2012-06-22 13:29 ` Artem Bityutskiy
2012-06-22 14:07 ` Luca Porzio (lporzio)
2012-06-11 10:46 ` [PATCH 3/3] mmc: " Saugata Das
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=201206121329.25953.arnd.bergmann@linaro.org \
--to=arnd.bergmann@linaro.org \
--cc=dedekind1@gmail.com \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-mmc@vger.kernel.org \
--cc=patches@linaro.org \
--cc=saugata.das@linaro.org \
--cc=saugata.das@stericsson.com \
--cc=tytso@mit.edu \
--cc=venkat@linaro.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;
as well as URLs for NNTP newsgroup(s).