mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Jörn Engel" <joern@logfs.org>
To: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH RFC] nilfs2: continuous snapshotting file system
Date: Fri, 29 Aug 2008 12:45:00 +0200	[thread overview]
Message-ID: <20080829104459.GB27647@logfs.org> (raw)
In-Reply-To: <200808290629.AA00218@capsicum.lab.ntt.co.jp>

On Fri, 29 August 2008 15:29:35 +0900, Ryusuke Konishi wrote:
> On Wed, 27 Aug 2008 20:19:04 +0200,  Jorn Engel wrote:
> 
> >Do you do wear leveling or scrubbing?
> 
> NILFS does not support scrubbing. (as you guessed)
> Under the current GC daemon, it writes logs sequentially and circularly
> in the partition, and as you know, this leads to the wear levelling
> except for superblock.

I am a bit confused here.  My picture of log-structured filesystems was
always that writes go round-robin _within_ a segment, but new segments
can be picked in any order.  So there is a good chance of some segments
simply never being picked and others constantly being reused.

If nilfs works in the same way, it will by design spread the writes
somewhat better than ext3, to pick an example, but can still lead to
local wear-out if f.e. 98% of the filesystem is full and the remaining
2% receive a high write load.

True wear leveling requires a bit more work.  Either some probabilistic
garbage collection of any random segment, as jffs2 does, or storing some
write counters and keeping them roughly level as logfs does.

> >How does garbage collection work?  In particular, when the filesystem
> >runs out of free space, do you depend on the userspace daemon to make
> >some policy decisions or can the kernel make progress on its own?
> 
> The GC of NILFS depends on the userspace daemon to make policy decisions.
> NILFS cannot reclaim disk space on its own though it can work 
> (i.e. read, write, or do other operations) without the daemon.
> After it runs out of free space, disk full errors will be returned
> until GC makes new space.

This looks problematic.  In logfs I was very careful to define a
"filesystem full" condition that is independent of GC.  So with a single
writer, -ENOSPC always means the filesystem is full and the only way to
gain some free space is by deleting data again.

In nilfs it appears possible that a single writer received -ENOSPC and
can simply continue writing until - magically - there is space again
because the GC daemon woke up and freed some more.  That is unexpected,
to say the least.

Which is also one of the reasons why I don't like the userspace daemon
approach very much.  Decent behaviour now requires that you block the
writes, wake up the userspace daemon and wait for it to do its job.  Or
you would have to implement a backup-daemon in kernelspace which gets
called into whenever -ENOSPC would be returned otherwise.

> But, usually the GC will make enough disk space in the background
> before that occurs.

Usually, yes.  You just have to make sure that in the unusual cases the
filesystem continues to behave correctly. ;)

Jörn

-- 
Homo Sapiens is a goal, not a description.
-- unknown

  parent reply	other threads:[~2008-08-29 10:45 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-20  2:45 Ryusuke Konishi
2008-08-20  7:43 ` Andrew Morton
2008-08-20  8:22   ` Pekka Enberg
2008-08-20 18:47     ` Ryusuke Konishi
2008-08-20 16:13   ` Ryusuke Konishi
2008-08-20 21:25     ` Szabolcs Szakacsits
2008-08-20 21:39       ` Andrew Morton
2008-08-20 21:48         ` Szabolcs Szakacsits
2008-08-21  2:12         ` Dave Chinner
2008-08-21  2:46           ` Szabolcs Szakacsits
2008-08-21  5:15             ` XFS vs Elevators (was Re: [PATCH RFC] nilfs2: continuous snapshotting file system) Dave Chinner
2008-08-21  6:00               ` gus3
2008-08-21  6:14                 ` Dave Chinner
2008-08-21  7:00                   ` Nick Piggin
2008-08-21  8:53                     ` Dave Chinner
2008-08-21  9:33                       ` Nick Piggin
2008-08-21 17:08                         ` Dave Chinner
2008-08-22  2:29                           ` Nick Piggin
2008-08-25  1:59                             ` Dave Chinner
2008-08-25  4:32                               ` Nick Piggin
2008-08-25 12:01                               ` Jamie Lokier
2008-08-26  3:07                                 ` Dave Chinner
2008-08-26  3:50                                   ` david
2008-08-27  1:20                                     ` Dave Chinner
2008-08-27 21:54                                       ` david
2008-08-28  1:08                                         ` Dave Chinner
2008-08-21 14:52                       ` Chris Mason
2008-08-21  6:04               ` Dave Chinner
2008-08-21  8:07                 ` Aaron Carroll
2008-08-21  8:25                 ` Dave Chinner
2008-08-21 11:02                   ` Martin Steigerwald
2008-08-21 15:00                     ` Martin Steigerwald
2008-08-21 17:10                   ` Szabolcs Szakacsits
2008-08-21 17:33                     ` Szabolcs Szakacsits
2008-08-22  2:24                       ` Dave Chinner
2008-08-22  6:49                         ` Martin Steigerwald
2008-08-22 12:44                         ` Szabolcs Szakacsits
2008-08-23 12:52                           ` Szabolcs Szakacsits
2008-08-21 11:53                 ` Matthew Wilcox
2008-08-21 15:56                   ` Dave Chinner
2008-08-21 12:51       ` [PATCH RFC] nilfs2: continuous snapshotting file system Chris Mason
2008-08-26 10:16     ` Jörn Engel
2008-08-26 16:54       ` Ryusuke Konishi
2008-08-27 18:13         ` Jörn Engel
2008-08-27 18:19         ` Jörn Engel
2008-08-29  6:29           ` Ryusuke Konishi
2008-08-29  8:40             ` Arnd Bergmann
2008-08-29 10:51               ` konishi.ryusuke
2008-08-29 11:04                 ` Jörn Engel
2008-08-29 10:45             ` Jörn Engel [this message]
2008-08-29 16:37               ` Ryusuke Konishi
2008-08-29 19:16                 ` Jörn Engel
2008-09-01 12:25                   ` Ryusuke Konishi
2008-08-20  9:47 ` Andi Kleen
2008-08-21  4:57   ` Ryusuke Konishi

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=20080829104459.GB27647@logfs.org \
    --to=joern@logfs.org \
    --cc=akpm@linux-foundation.org \
    --cc=konishi.ryusuke@lab.ntt.co.jp \
    --cc=linux-fsdevel@vger.kernel.org \
    --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

Powered by JetHome