XFS: Kill filestreams cache flush
PATCH 1/1 XFS: Kill filestreams cache flush
The filestreams cache flush is not needed in the sync code as it does not affect data writeback, and it is now not used by the growfs code, either, so kill it.
--- fs/xfs/linux-2.6/xfs_sync.c | 3 --- fs/xfs/xfs_filestream.c | 14 -------------- fs/xfs/xfs_filestream.h | 1 - fs/xfs/xfs_mru_cache.c | 2 +- fs/xfs/xfs_mru_cache.h | 1 - 5 files changed, 1 insertions(+), 20 deletions(-)
fs/xfs/linux-2.6/xfs_sync.c +0 -3
@@ -444,9 +444,6 @@ xfs_quiesce_data(xfs_sync_data (mp,SYNC_WAIT );xfs_qm_sync (mp,SYNC_WAIT ); -/* drop inode references pinned by filestreams */ -xfs_filestream_flush (mp); -/* write superblock and hoover up shutdown errors */ error =xfs_sync_fsdata (mp,SYNC_WAIT );
fs/xfs/xfs_filestream.c +0 -14
@@ -455,20 +455,6 @@ xfs_filestream_unmount( }/* -* If the mount point's m_perag tree is going to be modified, all -* outstanding cache entries must be flushed to avoid accessing reference count -* addresses that have been freed. The call to xfs_filestream_flush() must be -* made inside the block that holds the m_perag_lock in write mode to do the -* reallocation. -*/ -void -xfs_filestream_flush ( -xfs_mount_t *mp) -{ -xfs_mru_cache_flush (mp->m_filestream); -} - -/* * Return the AG of the filestream the file or directory belongs to, or * NULLAGNUMBER otherwise. */
fs/xfs/xfs_filestream.h +0 -1
@@ -135,7 +135,6 @@ int xfs_filestream_init(void);void xfs_filestream_uninit (void );int xfs_filestream_mount (struct xfs_mount *mp);void xfs_filestream_unmount (struct xfs_mount *mp); -void xfs_filestream_flush (struct xfs_mount *mp);xfs_agnumber_t xfs_filestream_lookup_ag (struct xfs_inode *ip);int xfs_filestream_associate (struct xfs_inode *dip,struct xfs_inode *ip);void xfs_filestream_deassociate (struct xfs_inode *ip);
fs/xfs/xfs_mru_cache.c +1 -1
@@ -398,7 +398,7 @@ exit:* guaranteed that all the free functions for all the elements have finished * executing and the reaper is not running. */ -void +static void xfs_mru_cache_flush (xfs_mru_cache_t *mru) {
fs/xfs/xfs_mru_cache.h +0 -1
@@ -42,7 +42,6 @@ void xfs_mru_cache_uninit(void);int xfs_mru_cache_create (struct xfs_mru_cache **mrup,unsigned int lifetime_ms,unsigned int grp_count,xfs_mru_cache_free_func_t free_func); -void xfs_mru_cache_flush (xfs_mru_cache_t *mru);void xfs_mru_cache_destroy (struct xfs_mru_cache *mru);int xfs_mru_cache_insert (struct xfs_mru_cache *mru,unsigned long key,void *value);
Signature · 6 lines
1.6.5 _______________________________________________ xfs mailing list [email protected] http://oss.sgi.com/mailman/listinfo/xfs
Quoted 3 lines · Dave Chinner
The filestreams cache flush is not needed in the sync code as it does not affect data writeback, and it is now not used by the growfs code, either, so kill it.
I have to admit I never understood the purpose of this call.
What xfs_fstrm_free_func does is:
- clear the filesystems flag on the inode
- decrement pagf_fstrms
- drop references on the inode (and parent if known)
- free the filestream item
Nothing of that should matter for sync, although dropping inode references during sync might generally be a good idea.
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs
Quoted 6 lines · Christoph Hellwig
Quoted 3 lines · Dave Chinner
The filestreams cache flush is not needed in the sync code as it does not affect data writeback, and it is now not used by the growfs code, either, so kill it.
I have to admit I never understood the purpose of this call.
I can't remember why it was put there, either. I may have even put it there when I was getting filestreams ready for merge but I can't remember at all...
Quoted 9 lines
What
xfs_fstrm_free_funcdoes is:- clear the filesystems flag on the inode
- decrementpagf_fstrms
- drop references on the inode (and parent if known)
- free the filestream itemNothing of that should matter for sync, although dropping inode references during sync might generally be a good idea.
Which means that sync destroys active filestreams associations and that seems more broken to me than anything an active reference will cause. I think just letting them time out is better than having them destroyed by external operations. I'm happy to leave it there if you want....
Cheers,
Dave.
Signature · 7 lines
Dave Chinner [email protected] _______________________________________________ xfs mailing list [email protected] http://oss.sgi.com/mailman/listinfo/xfs
Christoph Hellwig
Reviewed-byQuoted 5 lines · Dave Chinner
Which means that sync destroys active filestreams associations and that seems more broken to me than anything an active reference will cause. I think just letting them time out is better than having them destroyed by external operations. I'm happy to leave it there if you want....
Just trying to understand what's going on here. If you think the new behaviour is better and it doesn't cause any regressions in QA I'm fine with it. Consider it:
_______________________________________________
xfs mailing list
[email protected]
http://oss.sgi.com/mailman/listinfo/xfs