Commit 6f16bf65 authored by Mark Fasheh's avatar Mark Fasheh

ocfs2: small cleanup of ocfs2_request_delete()

There are two checks in there (one for inode newness, one for other mounted
nodes) which are unnecessary, so remove them. The DLM will allow the trylock
in either case without any messaging overhead.

Removing these makes ocfs2_request_delete() a one liner function, so just
move the trylock out one level into ocfs2_query_inode_wipe().
Signed-off-by: default avatarMark Fasheh <mark.fasheh@oracle.com>
parent 68e2b740
...@@ -767,35 +767,6 @@ static int ocfs2_inode_is_valid_to_delete(struct inode *inode) ...@@ -767,35 +767,6 @@ static int ocfs2_inode_is_valid_to_delete(struct inode *inode)
return ret; return ret;
} }
static int ocfs2_request_delete(struct inode *inode)
{
int status = 0;
struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
if (ocfs2_inode_is_new(inode))
return 0;
if (ocfs2_node_map_is_only(osb, &osb->mounted_map,
osb->node_num))
return 0;
/*
* This is how ocfs2 determines whether an inode is still live
* within the cluster. Every node takes a shared read lock on
* the inode open lock in ocfs2_read_locked_inode(). When we
* get to ->delete_inode(), each node tries to convert it's
* lock to an exclusive. Trylocks are serialized by the inode
* meta data lock. If the upconvert suceeds, we know the inode
* is no longer live and can be deleted.
*
* Though we call this with the meta data lock held, the
* trylock keeps us from ABBA deadlock.
*/
status = ocfs2_try_open_lock(inode, 1);
if (status < 0 && status != -EAGAIN)
mlog_errno(status);
return status;
}
/* Query the cluster to determine whether we should wipe an inode from /* Query the cluster to determine whether we should wipe an inode from
* disk or not. * disk or not.
* *
...@@ -848,10 +819,19 @@ static int ocfs2_query_inode_wipe(struct inode *inode, ...@@ -848,10 +819,19 @@ static int ocfs2_query_inode_wipe(struct inode *inode,
goto bail; goto bail;
} }
status = ocfs2_request_delete(inode); /*
/* -EAGAIN means that other nodes are still using the * This is how ocfs2 determines whether an inode is still live
* inode. We're done here though, so avoid doing anything on * within the cluster. Every node takes a shared read lock on
* disk and let them worry about deleting it. */ * the inode open lock in ocfs2_read_locked_inode(). When we
* get to ->delete_inode(), each node tries to convert it's
* lock to an exclusive. Trylocks are serialized by the inode
* meta data lock. If the upconvert suceeds, we know the inode
* is no longer live and can be deleted.
*
* Though we call this with the meta data lock held, the
* trylock keeps us from ABBA deadlock.
*/
status = ocfs2_try_open_lock(inode, 1);
if (status == -EAGAIN) { if (status == -EAGAIN) {
status = 0; status = 0;
mlog(0, "Skipping delete of %llu because it is in use on" mlog(0, "Skipping delete of %llu because it is in use on"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment