All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff Garzik <jgarzik@mandrakesoft.com>
To: Daniel Phillips <phillips@bonn-fries.net>
Cc: Linus Torvalds <torvalds@transmeta.com>, linux-kernel@vger.kernel.org
Subject: Re: [reiserfs-dev] Re: Ext2 directory index: ALS paper and benchmarks
Date: Sat, 08 Dec 2001 12:54:27 -0500	[thread overview]
Message-ID: <3C1253D3.75EAA26E@mandrakesoft.com> (raw)
In-Reply-To: <E16BjYc-0000hS-00@starship.berlin> <3C110B3F.D94DDE62@zip.com.au> <9useu4$f4o$1@penguin.transmeta.com> <E16ClLY-000124-00@starship.berlin>

Daniel Phillips wrote:
> Linus wrote:
> > So "ext2_write_inode()" would basically become somehting like
> >
> >       struct ext2_inode *raw_inode = inode->u.ext2_i.i_raw_inode;
> >       struct buffer_head *bh = inode->u.ext2_i.i_raw_bh;
> >
> >       /* Update the stuff we've brought into the generic part of the inode */
> >       raw_inode->i_size = cpu_to_le32(inode->i_size);
> >       ...
> >       mark_buffer_dirty(bh);
> >
> > with part of the data already in the right place (ie the current
> > "inode->u.ext2_i.i_data[block]" wouldn't exist, it would just exist as
> > "raw_inode->i_block[block]" directly in the buffer block.

note we do this for the superblock already, and it's pretty useful


> I'd then be able to write a trivial program that would eat inode+blocksize
> worth of cache for each cached inode, by opening one file on each itable
> block.

you already have X overhead per inode cached... yes this would increase
X but since there is typically more than one inode per block there is
also sharing as well.  So inode+blocksize is not true.


> I'd also regret losing the genericity that comes from the read_inode (unpack)
> and update_inode (repack) abstraction.

so what is write_inode... re-repack?  :)


> Right now, I don't see any fields in
> _info that aren't directly copied, but I expect there soon will be.

i_data[] is copied, and that would be nice to directly access in
inode->u.ext2_i.i_bh...

Also in my ibu fs (you can look at it now in gkernel cvs) it uses a
fixed inode size of 512 bytes, with file or extent data packed into that
512 bytes after the fixed header ends.  Having the bh right there would
be nice.  [note there shouldn't be aliasing problems related to that in
ibu's case, because when data-in-inode is implemented readpage and
writepage handle that case anyway]


> An alternative approach: suppose we were to map the itable blocks with
> smaller-than-blocksize granularity.  We could then fall back to smaller
> transfers under cache pressure, eliminating much thrashing.

in ibu fs the entire inode table[1] is accessing via the page cache. 
ext2 could do this too.  If ext2's per-block-group inode table has
padding at the end page calculations get a bit more annoying but it's
still doable.

	Jeff


[1] ibu's inode table is a normal, potentially-fragmented file.  thus it
is possibly broken up in chunks spread across the disk like ext2's block
groups.

-- 
Jeff Garzik      | Only so many songs can be sung
Building 1024    | with two lips, two lungs, and one tongue.
MandrakeSoft     |         - nomeansno


  reply	other threads:[~2001-12-08 17:55 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-12-05 21:26 Ext2 directory index: ALS paper and benchmarks Daniel Phillips
2001-12-06  3:41 ` Hans Reiser
2001-12-06  3:54   ` Daniel Phillips
2001-12-06  3:56     ` Hans Reiser
2001-12-06  4:08       ` Daniel Phillips
2001-12-06 13:44         ` Hans Reiser
2001-12-06 17:22           ` Daniel Phillips
2001-12-07  0:13             ` [reiserfs-dev] " Hans Reiser
2001-12-07  4:39               ` Daniel Phillips
2001-12-07 12:36                 ` Hans Reiser
2001-12-07 14:35                   ` Daniel Phillips
2001-12-07 20:16                     ` Hans Reiser
2001-12-06 11:27   ` Ragnar Kjørstad
2001-12-07 15:51     ` Daniel Phillips
2001-12-07 16:47       ` Ragnar Kjørstad
2001-12-07 17:41         ` Daniel Phillips
2001-12-07 18:03           ` Ragnar Kjørstad
2001-12-07 18:18             ` Daniel Phillips
2001-12-07 21:10               ` Hans Reiser
2001-12-07 21:12               ` Hans Reiser
2001-12-07 18:32           ` Andrew Morton
2001-12-07 19:46             ` Daniel Phillips
2001-12-07 20:00               ` Andrew Morton
2001-12-08  7:19             ` Linus Torvalds
2001-12-08 17:32               ` Daniel Phillips
2001-12-08 17:54                 ` Jeff Garzik [this message]
2001-12-09  3:27                   ` Daniel Phillips
2001-12-09  4:19                     ` Linus Torvalds
2001-12-09 16:29                       ` Alan Cox
2001-12-09 20:13                       ` Daniel Phillips
2001-12-10  6:27                         ` Linus Torvalds
2001-12-10  6:49                           ` Alexander Viro
2001-12-10  8:32                           ` Alan Cox
2001-12-10 16:14                           ` Daniel Phillips
2001-12-08 20:28                 ` Hans Reiser
2001-12-08 21:10                   ` Ragnar Kjørstad
2001-12-07 21:01         ` Hans Reiser
2001-12-07 22:56           ` Ragnar Kjørstad
2001-12-08  0:15             ` Hans Reiser
2001-12-08 19:16               ` Ragnar Kjørstad
2001-12-08 19:55                 ` Hans Reiser
2001-12-09  2:47                   ` Daniel Phillips
2001-12-09  2:39                 ` Daniel Phillips
2001-12-08 18:02       ` Jeremy Fitzhardinge
2001-12-09  2:24         ` Daniel Phillips
2001-12-07  3:19   ` Cameron Simpson
2001-12-07 10:54     ` Hans Reiser
2001-12-07 14:53       ` Daniel Phillips
2001-12-07 20:33         ` Hans Reiser
2001-12-07 13:06     ` [reiserfs-dev] " Ragnar Kjørstad

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=3C1253D3.75EAA26E@mandrakesoft.com \
    --to=jgarzik@mandrakesoft.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=phillips@bonn-fries.net \
    --cc=torvalds@transmeta.com \
    /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.