[PATCH v6 0/3] ubi: Add block interface
Ezequiel Garcia
ezequiel.garcia at free-electrons.com
Mon Feb 17 05:48:31 EST 2014
On Mon, Feb 17, 2014 at 12:19:52PM +0200, Artem Bityutskiy wrote:
> Thanks!
>
> On Sun, 2014-02-16 at 17:03 -0300, Ezequiel Garcia wrote:
> > The main target of this patch is supporting lighter, read-only
> > filesystem,
> > by putting a squashfs on top of ubiblock. And since squashfs already
> > provides
> > a file cache (which is even configurable), a first uncached
> > implementation
> > it's good enough for now.
>
> Doesn't Linux provide a fake inode for _every_ block device, and uses
> page-cache to cache pages?
>
> There is even entire special-purpose file-system for managing these fake
> block device inodes, see fs/block_dev.c
>
> static struct file_system_type bd_type = {
> .name = "bdev",
> .mount = bd_mount,
> .kill_sb = kill_anon_super,
> };
>
> I am really not sure which other cache do we need. The only thing coming
> to my mind is about emulating a HW disk cache in software. But I would
> not go that far without a really good reason.
>
If we ever re-add the write support, it would be natural to implement it
using a 1-LEB cache. Block sectors are much much smaller than LEB's
(around three orders of magnitude), so we would want to read an entire
LEB into a 1-LEB buffer, update the buffer, and then write it back.
In this scheme, it's almost straightforward to keep this buffer around
as a cache, and only write-back to disk when the new read/write requests
asks for a different LEB.
IIRC, this is the main reason why we had the 1-LEB cache.
Does it sound sane?
--
Ezequiel García, Free Electrons
Embedded Linux, Kernel and Android Engineering
http://free-electrons.com
More information about the linux-mtd
mailing list