diff options
Diffstat (limited to 'fs/ocfs2/inode.c')
| -rw-r--r-- | fs/ocfs2/inode.c | 40 |
1 files changed, 0 insertions, 40 deletions
diff --git a/fs/ocfs2/inode.c b/fs/ocfs2/inode.c index 10d16a9e4fda..e1e4882eab4f 100644 --- a/fs/ocfs2/inode.c +++ b/fs/ocfs2/inode.c | |||
| @@ -89,24 +89,6 @@ void ocfs2_set_inode_flags(struct inode *inode) | |||
| 89 | inode->i_flags |= S_DIRSYNC; | 89 | inode->i_flags |= S_DIRSYNC; |
| 90 | } | 90 | } |
| 91 | 91 | ||
| 92 | struct inode *ocfs2_ilookup_for_vote(struct ocfs2_super *osb, | ||
| 93 | u64 blkno, | ||
| 94 | int delete_vote) | ||
| 95 | { | ||
| 96 | struct ocfs2_find_inode_args args; | ||
| 97 | |||
| 98 | /* ocfs2_ilookup_for_vote should *only* be called from the | ||
| 99 | * vote thread */ | ||
| 100 | BUG_ON(current != osb->vote_task); | ||
| 101 | |||
| 102 | args.fi_blkno = blkno; | ||
| 103 | args.fi_flags = OCFS2_FI_FLAG_NOWAIT; | ||
| 104 | if (delete_vote) | ||
| 105 | args.fi_flags |= OCFS2_FI_FLAG_DELETE; | ||
| 106 | args.fi_ino = ino_from_blkno(osb->sb, blkno); | ||
| 107 | return ilookup5(osb->sb, args.fi_ino, ocfs2_find_actor, &args); | ||
| 108 | } | ||
| 109 | |||
| 110 | struct inode *ocfs2_iget(struct ocfs2_super *osb, u64 blkno, int flags) | 92 | struct inode *ocfs2_iget(struct ocfs2_super *osb, u64 blkno, int flags) |
| 111 | { | 93 | { |
| 112 | struct inode *inode = NULL; | 94 | struct inode *inode = NULL; |
| @@ -182,28 +164,6 @@ static int ocfs2_find_actor(struct inode *inode, void *opaque) | |||
| 182 | if (oi->ip_blkno != args->fi_blkno) | 164 | if (oi->ip_blkno != args->fi_blkno) |
| 183 | goto bail; | 165 | goto bail; |
| 184 | 166 | ||
| 185 | /* OCFS2_FI_FLAG_NOWAIT is *only* set from | ||
| 186 | * ocfs2_ilookup_for_vote which won't create an inode for one | ||
| 187 | * that isn't found. The vote thread which doesn't want to get | ||
| 188 | * an inode which is in the process of going away - otherwise | ||
| 189 | * the call to __wait_on_freeing_inode in find_inode_fast will | ||
| 190 | * cause it to deadlock on an inode which may be waiting on a | ||
| 191 | * vote (or lock release) in delete_inode */ | ||
| 192 | if ((args->fi_flags & OCFS2_FI_FLAG_NOWAIT) && | ||
| 193 | (inode->i_state & (I_FREEING|I_CLEAR))) { | ||
| 194 | /* As stated above, we're not going to return an | ||
| 195 | * inode. In the case of a delete vote, the voting | ||
| 196 | * code is going to signal the other node to go | ||
| 197 | * ahead. Mark that state here, so this freeing inode | ||
| 198 | * has the state when it gets to delete_inode. */ | ||
| 199 | if (args->fi_flags & OCFS2_FI_FLAG_DELETE) { | ||
| 200 | spin_lock(&oi->ip_lock); | ||
| 201 | ocfs2_mark_inode_remotely_deleted(inode); | ||
| 202 | spin_unlock(&oi->ip_lock); | ||
| 203 | } | ||
| 204 | goto bail; | ||
| 205 | } | ||
| 206 | |||
| 207 | ret = 1; | 167 | ret = 1; |
| 208 | bail: | 168 | bail: |
| 209 | mlog_exit(ret); | 169 | mlog_exit(ret); |
