On Fri, Jun 20, 2008 at 06:11:31PM -0700, Mingming wrote: > Add support for full delayed allocation over ext3 format file. > > This patch added a function to estimate the number of indirect blocks need > to reserve for non-extent based (ext3) file, in order to properly > reserve the need amount of indirect blocks for delayed allocation. > > > Signed-off-by: Mingming Cao <cmm@xxxxxxxxxx> > --- > fs/ext4/inode.c | 34 ++++++++++++++++++++++++++++++++-- > 1 file changed, 32 insertions(+), 2 deletions(-) > > Index: linux-2.6.26-rc6/fs/ext4/inode.c > =================================================================== > --- linux-2.6.26-rc6.orig/fs/ext4/inode.c 2008-06-20 16:50:09.000000000 -0700 > +++ linux-2.6.26-rc6/fs/ext4/inode.c 2008-06-20 17:36:08.000000000 -0700 > @@ -1426,6 +1426,36 @@ static int ext4_journalled_write_end(str > > return ret ? ret : copied; > } > +/* > + * Calculate the number of metadata blocks need to reserve > + * to allocate @blocks for non extent file based file > + */ > +static int ext4_indirect_calc_metadata_amount(struct inode *inode, int blocks) > +{ > + int icap = EXT4_ADDR_PER_BLOCK(inode->i_sb); > + int ind_blks, dind_blks, tind_blks; > + > + /* number of new indirect blocks needed */ > + ind_blks = (blocks + icap - 1) / icap; > + > + dind_blks = (ind_blks + icap - 1) / icap; > + > + tind_blks = 1; > + > + return ind_blks + dind_blks + tind_blks; > +} > + With block mapped files using logical block number we should be able to find out the exact number of meta-data blocks we would need. I am not sure whether we need to be that complex is calculating the same. -aneesh -- 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