[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