[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20090827143215.GD14240@duck.novell.com>
Date: Thu, 27 Aug 2009 16:32:15 +0200
From: Jan Kara <jack@...e.cz>
To: "Aneesh Kumar K.V" <aneesh.kumar@...ux.vnet.ibm.com>
Cc: linux-fsdevel@...r.kernel.org, linux-ext4@...r.kernel.org,
Andrew Morton <akpm@...ux-foundation.org>
Subject: Re: Buffer state bits
On Thu 27-08-09 18:03:18, Aneesh Kumar K.V wrote:
> >
> > BH_Mapped
> > - Buffer has a physical block backing it stored in b_bdev + b_blocknr. This bit
> > is set by filesystem's get_block() function (or by VFS itself for block device
> > mappings).
> >
> > XXX: Some filesystems set BH_Mapped even for buffers that do no really
> > have the backing block (like buffers for delayed allocation). I think
> > we should get rid of it...
> >
>
> Also we don't want get_block to be called multiple times for the same file offset.
> __block_prepare_write does get_block looking at the BH_Mapped flag. ie one of reason
> delay and unwritten buffer_heads are also marked mapped.
Unwritten buffers should be mapped as they really have the backing block.
So that's fine.
Delayed buffers should not be mapped. We could change the check in
__block_prepare_write to "!buffer_mapped(bh) && !buffer_delay(bh)". But I'd
rather avoid it because what I'd like to do in ext3 is to delay-allocate
mmapped blocks and allocate normally blocks written via write(2). So I want
ext3_get_block() to be called in block_prepare_write() even for delay
buffers.
If ext4 doesn't want to do anything for delay buffers in get_block() called
from block_prepare_write(), it can just return from the beginning of
ext4_get_block() when it finds the buffer is delay...
Honza
--
Jan Kara <jack@...e.cz>
SUSE Labs, CR
--
To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists