All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Chinner <dgc@sgi.com>
To: Amit Gud <gud@ksu.edu>
Cc: Nikita Danilov <nikita@clusterfs.com>,
	David Lang <david.lang@digitalinsight.com>,
	linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
	val_henson@linux.intel.com, riel@surriel.com, zab@zabbo.net,
	arjan@infradead.org, suparna@in.ibm.com, brandon@ifup.org,
	karunasagark@gmail.com
Subject: Re: [RFC][PATCH] ChunkFS: fs fission for faster fsck
Date: Wed, 25 Apr 2007 20:54:34 +1000	[thread overview]
Message-ID: <20070425105434.GX32602149@melbourne.sgi.com> (raw)
In-Reply-To: <462E7C47.8080604@ksu.edu>

On Tue, Apr 24, 2007 at 04:53:11PM -0500, Amit Gud wrote:
> Nikita Danilov wrote:
> >Maybe I failed to describe the problem presicely.
> >
> >Suppose that all chunks have been checked. After that, for every inode
> >I0 having continuations I1, I2, ... In, one has to check that every
> >logical block is presented in at most one of these inodes. For this one
> >has to read I0, with all its indirect (double-indirect, triple-indirect)
> >blocks, then read I1 with all its indirect blocks, etc. And to repeat
> >this for every inode with continuations.
> >
> >In the worst case (every inode has a continuation in every chunk) this
> >obviously is as bad as un-chunked fsck. But even in the average case,
> >total amount of io necessary for this operation is proportional to the
> >_total_ file system size, rather than to the chunk size.
> >
> 
> Perhaps, I should talk about how continuation inodes are managed / 
> located on disk. (This is how it is in my current implementation)
> 
> Right now, there is no distinction between an inode and continuation 
> inode (also referred to as 'cnode' below), except for the 
> EXT2_IS_CONT_FL flag. Every inode holds a list of static number of 
> inodes, currently limited to 4.
> 
> The structure looks like this:
> 
>  ----------		----------
> | cnode 0  |---------->| cnode 0  |----------> to another cnode or NULL
>  ----------		----------
> | cnode 1  |-----      | cnode 1  |-----
>  ----------	|	----------	|
> | cnode 2  |-- |      | cnode 2  |--   |
>  ----------  | |	----------  |   |
> | cnode 3  | | |      | cnode 3  | |   |
>  ----------  | |	----------  |   |
> 	  |  |  |		 |  |   |
> 
> 	   inodes		inodes or NULL

How do you recover if fsfuzzer takes out a cnode in the chain? The
chunk is marked clean, but clearly corrupted and needs fixing and
you don't know what it was pointing at.  Hence you have a pointer to
a trashed cnode *somewhere* that you need to find and fix, and a
bunch of orphaned cnodes that nobody points to *somewhere else* in
the filesystem that you have to find. That's a full scan fsck case,
isn't?

It seems that any sort of damage to the underlying storage (e.g.
media error, I/O error or user brain explosion) results in the need
to do a full fsck and hence chunkfs gives you no benefit in this
case.

Cheers,

Dave.
-- 
Dave Chinner
Principal Engineer
SGI Australian Software Group

  reply	other threads:[~2007-04-25 10:55 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-04-23 11:21 [RFC][PATCH] ChunkFS: fs fission for faster fsck Amit Gud
     [not found] ` <17965.6084 1.900376.524639@gargle.gargle.HOWL>
2007-04-23 16:28 ` Suparna Bhattacharya
2007-04-23 15:25   ` Amit Gud
2007-04-23 16:32   ` Suparna Bhattacharya
2007-04-24 11:44 ` Nikita Danilov
2007-04-24 18:27   ` David Lang
2007-04-24 19:34     ` Nikita Danilov
2007-04-24 19:26       ` David Lang
2007-04-25 11:34         ` Nikita Danilov
2007-04-25 16:39           ` David Lang
2007-04-25 22:47           ` Valerie Henson
2007-04-26 14:14             ` Jeff Dike
2007-04-26 15:53               ` Amit Gud
2007-04-26 16:05                 ` Jeff Dike
2007-04-26 16:56                   ` Amit Gud
2007-04-27  4:58                   ` Valerie Henson
2007-04-27 15:06                     ` Jeff Dike
2007-05-01 17:26                       ` Valerie Henson
2007-04-26 16:11                 ` Alan Cox
2007-04-26 16:44                   ` Amit Gud
2007-04-24 21:53       ` Amit Gud
2007-04-25 10:54         ` David Chinner [this message]
2007-04-25 11:38           ` Andreas Dilger
2007-04-25 17:52             ` Amit Gud
2007-04-25 23:06             ` Valerie Henson
2007-04-25 23:03           ` Valerie Henson
2007-04-26  0:47             ` David Chinner
2007-04-26 22:21               ` Jörn Engel
2007-04-26 22:21                 ` Jörn Engel
2007-04-26  8:47             ` Jan Kara
2007-04-27  5:07               ` Valerie Henson
2007-04-27 10:53                 ` Jörn Engel
2007-04-27 10:53                   ` Jörn Engel
2007-04-28  6:50                   ` Valerie Henson
2007-04-28 10:03                     ` Jörn Engel
2007-04-28 10:03                       ` Jörn Engel
2007-04-25 22:43       ` Valerie Henson

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=20070425105434.GX32602149@melbourne.sgi.com \
    --to=dgc@sgi.com \
    --cc=arjan@infradead.org \
    --cc=brandon@ifup.org \
    --cc=david.lang@digitalinsight.com \
    --cc=gud@ksu.edu \
    --cc=karunasagark@gmail.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nikita@clusterfs.com \
    --cc=riel@surriel.com \
    --cc=suparna@in.ibm.com \
    --cc=val_henson@linux.intel.com \
    --cc=zab@zabbo.net \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.