Hello everyone,

I've hit a few bumps with the addres space operations, and I suspect the
other journaled filesystems will have similar issues.

generic_commit_write changes the inode->i_size, but doesn't mark the inode
dirty.  Since reiserfs logs inodes instead of calling mark_inode_dirty, it
is likely the i_size change will never get to disk.  ext2 calls
mark_inode_dirty enough that it is probably safe, but there might be paths
were the inode won't get dirtied.  

It would be faster if get_block could know the new file size.  In
reiserfs_get_block, I'm already logging the inode when new blocks are
appended to the file.  If I could update i_size at the same time, I would
not have to log or dirty it in commit_write.  This would be a big gain for
reiserfs, as inode updates are somewhat expensive.

-chris


Reply via email to