xfs: optimize fsync on directories
authorChristoph Hellwig <hch@infradead.org>
Sun, 2 Oct 2011 14:25:16 +0000 (14:25 +0000)
committerAlex Elder <aelder@sgi.com>
Wed, 12 Oct 2011 02:15:09 +0000 (21:15 -0500)
Directories are only updated transactionally, which means fsync only
needs to flush the log the inode is currently dirty, but not bother
with checking for dirty data, non-transactional updates, and most
importanly doesn't have to flush disk caches except as part of a
transaction commit.

While the first two optimizations can't easily be measured, the
latter actually makes a difference when doing lots of fsync that do
not actually have to commit the inode, e.g. because an earlier fsync
already pushed the log far enough.

The new xfs_dir_fsync is identical to xfs_nfs_commit_metadata except
for the prototype, but I'm not sure creating a common helper for the
two is worth it given how simple the functions are.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Alex Elder <aelder@sgi.com>

No differences found