mirror of https://github.com/torvalds/linux.git
ocfs2: retire ocfs2_drop_inode() and I_WILL_FREE usage
This postpones the writeout to ocfs2_evict_inode(), which I'm told is fine (tm). The intent is to retire the I_WILL_FREE flag. Reviewed-by: Jan Kara <jack@suse.cz> Signed-off-by: Mateusz Guzik <mjguzik@gmail.com> Reviewed-by: Joel Becker <jlbec@evilplan.org> Reviewed-by: Mark Tinguely <amrk.tinguely@oracle.com> Signed-off-by: Christian Brauner <brauner@kernel.org>
This commit is contained in:
parent
be97a4b63c
commit
0f607a89af
|
|
@ -1290,6 +1290,8 @@ static void ocfs2_clear_inode(struct inode *inode)
|
|||
|
||||
void ocfs2_evict_inode(struct inode *inode)
|
||||
{
|
||||
write_inode_now(inode, 1);
|
||||
|
||||
if (!inode->i_nlink ||
|
||||
(OCFS2_I(inode)->ip_flags & OCFS2_INODE_MAYBE_ORPHANED)) {
|
||||
ocfs2_delete_inode(inode);
|
||||
|
|
@ -1299,27 +1301,6 @@ void ocfs2_evict_inode(struct inode *inode)
|
|||
ocfs2_clear_inode(inode);
|
||||
}
|
||||
|
||||
/* Called under inode_lock, with no more references on the
|
||||
* struct inode, so it's safe here to check the flags field
|
||||
* and to manipulate i_nlink without any other locks. */
|
||||
int ocfs2_drop_inode(struct inode *inode)
|
||||
{
|
||||
struct ocfs2_inode_info *oi = OCFS2_I(inode);
|
||||
|
||||
trace_ocfs2_drop_inode((unsigned long long)oi->ip_blkno,
|
||||
inode->i_nlink, oi->ip_flags);
|
||||
|
||||
assert_spin_locked(&inode->i_lock);
|
||||
inode->i_state |= I_WILL_FREE;
|
||||
spin_unlock(&inode->i_lock);
|
||||
write_inode_now(inode, 1);
|
||||
spin_lock(&inode->i_lock);
|
||||
WARN_ON(inode->i_state & I_NEW);
|
||||
inode->i_state &= ~I_WILL_FREE;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* This is called from our getattr.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -116,7 +116,6 @@ static inline struct ocfs2_caching_info *INODE_CACHE(struct inode *inode)
|
|||
}
|
||||
|
||||
void ocfs2_evict_inode(struct inode *inode);
|
||||
int ocfs2_drop_inode(struct inode *inode);
|
||||
|
||||
/* Flags for ocfs2_iget() */
|
||||
#define OCFS2_FI_FLAG_SYSFILE 0x1
|
||||
|
|
|
|||
|
|
@ -1569,8 +1569,6 @@ DEFINE_OCFS2_ULL_ULL_UINT_EVENT(ocfs2_delete_inode);
|
|||
|
||||
DEFINE_OCFS2_ULL_UINT_EVENT(ocfs2_clear_inode);
|
||||
|
||||
DEFINE_OCFS2_ULL_UINT_UINT_EVENT(ocfs2_drop_inode);
|
||||
|
||||
TRACE_EVENT(ocfs2_inode_revalidate,
|
||||
TP_PROTO(void *inode, unsigned long long ino,
|
||||
unsigned int flags),
|
||||
|
|
|
|||
|
|
@ -129,7 +129,7 @@ static const struct super_operations ocfs2_sops = {
|
|||
.statfs = ocfs2_statfs,
|
||||
.alloc_inode = ocfs2_alloc_inode,
|
||||
.free_inode = ocfs2_free_inode,
|
||||
.drop_inode = ocfs2_drop_inode,
|
||||
.drop_inode = inode_just_drop,
|
||||
.evict_inode = ocfs2_evict_inode,
|
||||
.sync_fs = ocfs2_sync_fs,
|
||||
.put_super = ocfs2_put_super,
|
||||
|
|
|
|||
Loading…
Reference in New Issue