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@xxxxxxx> SUSE Labs, CR -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html