mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Jörn Engel" <joern@wohnheim.fh-wedel.de>
To: Andi Kleen <ak@suse.de>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [RFC] LogFS
Date: Thu, 24 Aug 2006 17:54:34 +0200	[thread overview]
Message-ID: <20060824155434.GA31877@wohnheim.fh-wedel.de> (raw)
In-Reply-To: <p73wt8ydu1v.fsf@verdi.suse.de>

On Thu, 24 August 2006 17:37:00 +0200, Andi Kleen wrote:
> Jörn Engel <joern@wohnheim.fh-wedel.de> writes:
> 
> > For the last 16 month, I've been hacking on a small filesystem.  It
> > has progress far enough that it shouldn't be a total embarrassment to
> > show the code, but still needs quite a bit of work.
> > 
> > Anyhow, in case people are interested to have a look... comments are
> > very welcome.
> 
> ... some more description/rationale missing ...

Most people that are interested in this already know about it, but you
are absolutely right.

> Is it only intended for (small) flash like jffs2 or also for larger disks?

It is only intended for medium to large flash.  On disks with the
rotational latency, I would expect performance to be very poor.
Writes should be relatively good, reads absolutely horrible.


The missing rationale:

Linux needs a decent flash filesystem.  So far, jffs2 filled the gap,
but it is increasingly showing its age.  Both mount time and memory
consumption scale linearly with flash size, so there is a soft limit
of jffs2 usefulness somewhere between 128MiB and 4GiB, depending on
system design and whether the summary extension is used.

Then there is a hard limit at 4GiB, because jffs2 uses 32bit byte
offsets to locate data.

In the opinion of many people, including me, the only solution to fix
jffs2 is to completely redesign it from scratch.  Voila logfs.

The first idea of logfs was to store data in a tree, similar to ffs
style filesystems.  Flash behaves a little different to hard disks, so
free block bitmaps are a bad idea.  Instead, blocks are annotated with
the inode and fpos they belong to.  By walking the filesystem tree, it
is possible to decide whether a block is still used or free.

Updates are done by a wandering tree.  In-place updates is basically
verboten on flash.  Wandering trees cause quite a bit of overhead,
which will be reduced later.  -ENOTIME so far.

There is a small journal necessary for several purposes:
1. Store the root of the filesystem tree.  Inodes are stored in an
inode file.  The ifile's inode is stored in the journal.
2. Perform atomic directory operations (create, rename, ...).
3. Reduce the overhead of wandering trees.  Jffs2 has quite an
efficient layout wrt. write performance.  Pushing writes through a
jffs2-style journal before adding it to the tree will help a lot.

Jörn

-- 
Mundie uses a textbook tactic of manipulation: start with some
reasonable talk, and lead the audience to an unreasonable conclusion.
-- Bruce Perens

  reply	other threads:[~2006-08-24 15:54 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-08-24 13:44 Jörn Engel
2006-08-24 15:37 ` Andi Kleen
2006-08-24 15:54   ` Jörn Engel [this message]
2006-08-24 16:37     ` Jan Engelhardt
2006-08-25  4:51     ` Andrew Morton
2006-08-25  8:33       ` Jörn Engel
2006-08-27  5:32 ` LogFS Ian Lindsay
2006-08-27 17:17   ` LogFS Jörn Engel
2006-08-27 18:02     ` LogFS Kyle Moffett
2006-08-27 18:12     ` LogFS Ian Lindsay
2006-08-27 20:16       ` LogFS Jörn Engel
2006-08-27 20:53         ` LogFS Kyle Moffett

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=20060824155434.GA31877@wohnheim.fh-wedel.de \
    --to=joern@wohnheim.fh-wedel.de \
    --cc=ak@suse.de \
    --cc=linux-kernel@vger.kernel.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

all inboxes | Powered by JetHome®