Please don't reply to lustre-devel. Instead, comment in Bugzilla by using the 
following link:
https://bugzilla.lustre.org/show_bug.cgi?id=11510



Comment Tags: Analysis




> 
> I'm not sure I understand this.  Didn't ext2fs_extent_split() already write 
> the
> ei_leaf == new_block?  Should this instead be writing out the inode?  Would it
> be enough to return BLOCK_CHANGED in this case to have the caller write out 
> the
> current block?
> 
> With the exception of the above issue, I think it only needs a bit of code
> cleanup before it can land into the CFS e2fsprogs patch series.
>       

The block had to be explicitly written because, the extent tree structure has
been changed, now we have a tree with depth 2. And block_iterate_extents has
been called only once so far (original tree was of depth 1). So when
block_iterate_extents returns, the caller updates the inode.i_block, only. 

In ext2fs_extent_split, the new leaf block is written, which contains the
extents. But the ex_leaf fields are updated (It is updated with new blocks in
order to resolve multiply-claimed blocks problem) only after ext2fs_extent_split
returns in block_iterate_extents. 
Hence this block has to be written, again.

Note: eh & ex fields are changed in ext2fs_extents_split, as they should always
point to last level of the tree i.e depth = 0.

_______________________________________________
Lustre-devel mailing list
[email protected]
https://mail.clusterfs.com/mailman/listinfo/lustre-devel

Reply via email to