Re: [RFC] fsblock

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Nick Piggin
Date: Tuesday, June 26, 2007 - 4:14 am

On Tue, Jun 26, 2007 at 07:23:09PM +1000, David Chinner wrote:

Well it is the metadata used to manage the filesystem block for the
given bit of pagecache (even if the block is not actually allocated
or even a hole, it is deemed to be so by the filesystem).


I'm not fixed on fsblock, but blkmap doesn't grab me either. It
is a map from the pagecache to the block layer, but blkmap sounds
like it is a map from the block to somewhere.

fsblkmap ;)

 

I'm not, but it seemed like you were confused that fsblock is tied
to changing the aops APIs. It is not, but they can be changed to
give improvements in a good number of areas (*including* better
large block support).



I guess fsblock is 3 times smaller and you would probably have 16
times fewer of them for such a filesystem (given a 4K page size)
still leaves a few orders of magnitude ;)

However, fsblock has this nice feature where it can drop the blocks
when the last reference goes away, so you really only have fsblocks
around for dirty or currently-being-read blocks...

But you give me a good idea: I'll gear the filesystem-side APIs to
be more extent based as well (eg. fsblock's get_block equivalent).
That way it should be much easier to change over to such extents in
future or even have an extent based representation sitting in front
of the fsblock one and acting as a high density cache in your above
situation.



You could do that without holding the page locks as well AFAIKS.
Actually again it might be a bit troublesome with the current
aops APIs, but I don't think fsblock stands in your way there
either.
 
 

The independent mapping tree is something I have been thinking
about, but you still need to tie the page to the block at some
point and you need to track IO details and such.

The problem with implementing it in generic code is that it
will add another layer of locking and data structure that may
be better done in the filesystem. (because you _do_ already
need to do all the per-page stuff as well). This was my thing
about overengineering: fsblock is supposed to be just a very
light layer.



I don't know why you think none of that is possible with fsblocks.
You could easily keep an in-memory btree or similar as the 
authoritative block management structure and feed the fsblock
layer from that.

There is nothing about fsblock that is tied to i_mutex, and all
it's locking basically comes for free on top of the page based
locking that's already required in the VM.

-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[RFC] fsblock, Nick Piggin, (Sat Jun 23, 6:45 pm)
[patch 1/3] add the fsblock layer, Nick Piggin, (Sat Jun 23, 6:46 pm)
[patch 2/3] block_dev: convert to fsblock, Nick Piggin, (Sat Jun 23, 6:46 pm)
[patch 3/3] minix: convert to fsblock, Nick Piggin, (Sat Jun 23, 6:47 pm)
Re: [RFC] fsblock, Nick Piggin, (Sat Jun 23, 6:53 pm)
Re: [RFC] fsblock, Jeff Garzik, (Sat Jun 23, 8:07 pm)
Re: [RFC] fsblock, Nick Piggin, (Sat Jun 23, 8:47 pm)
Re: [RFC] fsblock, William Lee Irwin III, (Sat Jun 23, 9:19 pm)
Re: [RFC] fsblock, Chris Mason, (Sun Jun 24, 6:51 am)
Re: [RFC] fsblock, Andi Kleen, (Sun Jun 24, 7:16 am)
Re: [patch 1/3] add the fsblock layer, Andi Kleen, (Sun Jun 24, 8:28 am)
Re: [patch 1/3] add the fsblock layer, Arjan van de Ven, (Sun Jun 24, 1:18 pm)
Re: [RFC] fsblock, Nick Piggin, (Sun Jun 24, 11:58 pm)
Re: [RFC] fsblock, Nick Piggin, (Mon Jun 25, 12:16 am)
Re: [patch 1/3] add the fsblock layer, Nick Piggin, (Mon Jun 25, 12:19 am)
Re: [patch 1/3] add the fsblock layer, Andi Kleen, (Mon Jun 25, 1:58 am)
Re: [RFC] fsblock, Chris Mason, (Mon Jun 25, 5:25 am)
Re: [patch 1/3] add the fsblock layer, Chris Mason, (Mon Jun 25, 6:19 am)
Re: [patch 1/3] add the fsblock layer, Nick Piggin, (Mon Jun 25, 7:42 pm)
Re: [RFC] fsblock, David Chinner, (Mon Jun 25, 8:06 pm)
Re: [RFC] fsblock, Nick Piggin, (Mon Jun 25, 8:55 pm)
Re: [RFC] fsblock, David Chinner, (Tue Jun 26, 2:23 am)
Re: [RFC] fsblock, Nick Piggin, (Tue Jun 26, 4:14 am)
Re: [RFC] fsblock, Chris Mason, (Tue Jun 26, 5:34 am)
Re: [RFC] fsblock, Nick Piggin, (Tue Jun 26, 10:32 pm)
Re: [RFC] fsblock, David Chinner, (Tue Jun 26, 11:05 pm)
Re: [RFC] fsblock, Chris Mason, (Wed Jun 27, 4:50 am)
Re: [RFC] fsblock, Kyle Moffett, (Wed Jun 27, 5:39 am)
Re: [RFC] fsblock, Anton Altaparmakov, (Wed Jun 27, 8:18 am)
Re: [RFC] fsblock, David Chinner, (Wed Jun 27, 3:35 pm)
Re: [RFC] fsblock, Nick Piggin, (Wed Jun 27, 7:44 pm)
Re: [RFC] fsblock, Chris Mason, (Thu Jun 28, 5:20 am)
Re: [RFC] fsblock, David Chinner, (Thu Jun 28, 7:08 pm)
Re: [RFC] fsblock, Nick Piggin, (Thu Jun 28, 7:33 pm)
Re: [RFC] fsblock, Christoph Hellwig, (Sat Jun 30, 3:42 am)
Re: [RFC] fsblock, Christoph Hellwig, (Sat Jun 30, 3:44 am)
Re: [RFC] fsblock, Christoph Hellwig, (Sat Jun 30, 4:05 am)
Re: [RFC] fsblock, Jeff Garzik, (Sat Jun 30, 4:10 am)
Re: [RFC] fsblock, Christoph Hellwig, (Sat Jun 30, 4:13 am)
Re: [RFC] fsblock, Christoph Lameter, (Mon Jul 9, 10:14 am)
Re: [RFC] fsblock, Nick Piggin, (Mon Jul 9, 5:54 pm)
Re: [RFC] fsblock, Christoph Lameter, (Mon Jul 9, 5:59 pm)
Re: [RFC] fsblock, Nick Piggin, (Mon Jul 9, 6:07 pm)
Re: [RFC] fsblock, Dave McCracken, (Mon Jul 9, 6:37 pm)