• Al Viro's avatar
    new inode method: ->free_inode() · fdb0da89
    Al Viro authored
    A lot of ->destroy_inode() instances end with call_rcu() of a callback
    that does RCU-delayed part of freeing.  Introduce a new method for
    doing just that, with saner signature.
    
    Rules:
    ->destroy_inode		->free_inode
    	f			g		immediate call of f(),
    						RCU-delayed call of g()
    	f			NULL		immediate call of f(),
    						no RCU-delayed calls
    	NULL			g		RCU-delayed call of g()
    	NULL			NULL		RCU-delayed default freeing
    
    IOW, NULL ->free_inode gives the same behaviour as now.
    
    Note that NULL, NULL is equivalent to NULL, free_inode_nonrcu; we could
    mandate the latter form, but that would have very little benefit beyond
    making rules a bit more symmetric.  It would break backwards compatibility,
    require extra boilerplate and expected semantics for (NULL, NULL) pair
    would have no use whatsoever...
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    fdb0da89
inode.c 56.6 KB