Unverified Commit 0f607a89 authored by Mateusz Guzik's avatar Mateusz Guzik Committed by Christian Brauner
Browse files

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: default avatarJan Kara <jack@suse.cz>
Signed-off-by: default avatarMateusz Guzik <mjguzik@gmail.com>
Reviewed-by: default avatarJoel Becker <jlbec@evilplan.org>
Reviewed-by: default avatarMark Tinguely <amrk.tinguely@oracle.com>
Signed-off-by: default avatarChristian Brauner <brauner@kernel.org>
parent be97a4b6
Loading
Loading
Loading
Loading
+2 −21
Original line number Diff line number Diff line
@@ -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.
 */
+0 −1
Original line number Diff line number Diff line
@@ -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
+0 −2
Original line number Diff line number Diff line
@@ -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),
+1 −1
Original line number Diff line number Diff line
@@ -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,