mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 02:27:36 +03:00
Linux 3.5 compat, end_writeback() changed to clear_inode()
The end_writeback() function was changed by moving the call to inode_sync_wait() earlier in to evict(). This effecitvely changes the ordering of the sync but it does not impact the details of the zfs implementation. However, as part of this change end_writeback() was renamed to clear_inode() to reflect the new semantics. This change does impact us and clear_inode() now maps to end_writeback() for kernels prior to 3.5. Signed-off-by: Richard Yao <ryao@cs.stonybrook.edu> Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov> Closes #784
This commit is contained in:
committed by
Brian Behlendorf
parent
ea1fdf46e2
commit
739a1a82e0
+10
-5
@@ -64,10 +64,15 @@ zpl_inode_destroy(struct inode *ip)
|
||||
* This elaborate mechanism was replaced by ->evict_inode() which
|
||||
* does the job of both ->delete_inode() and ->clear_inode(). It
|
||||
* will be called exactly once, and when it returns the inode must
|
||||
* be in a state where it can simply be freed. The ->evict_inode()
|
||||
* callback must minimally truncate the inode pages, and call
|
||||
* end_writeback() to complete all outstanding writeback for the
|
||||
* inode. After this is complete evict inode can cleanup any
|
||||
* be in a state where it can simply be freed.i
|
||||
*
|
||||
* The ->evict_inode() callback must minimally truncate the inode pages,
|
||||
* and call clear_inode(). For 2.6.35 and later kernels this will
|
||||
* simply update the inode state, with the sync occurring before the
|
||||
* truncate in evict(). For earlier kernels clear_inode() maps to
|
||||
* end_writeback() which is responsible for completing all outstanding
|
||||
* write back. In either case, once this is done it is safe to cleanup
|
||||
* any remaining inode specific data via zfs_inactive().
|
||||
* remaining filesystem specific data.
|
||||
*/
|
||||
#ifdef HAVE_EVICT_INODE
|
||||
@@ -75,7 +80,7 @@ static void
|
||||
zpl_evict_inode(struct inode *ip)
|
||||
{
|
||||
truncate_setsize(ip, 0);
|
||||
end_writeback(ip);
|
||||
clear_inode(ip);
|
||||
zfs_inactive(ip);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user