diff options
Diffstat (limited to 'fs/xfs/xfs_iget.c')
-rw-r--r-- | fs/xfs/xfs_iget.c | 13 |
1 files changed, 3 insertions, 10 deletions
diff --git a/fs/xfs/xfs_iget.c b/fs/xfs/xfs_iget.c index f77bda1473b7..15dba2ef847f 100644 --- a/fs/xfs/xfs_iget.c +++ b/fs/xfs/xfs_iget.c | |||
@@ -199,12 +199,9 @@ again: | |||
199 | XFS_STATS_INC(xs_ig_found); | 199 | XFS_STATS_INC(xs_ig_found); |
200 | 200 | ||
201 | finish_inode: | 201 | finish_inode: |
202 | if (ip->i_d.di_mode == 0) { | 202 | if (ip->i_d.di_mode == 0 && !(flags & XFS_IGET_CREATE)) { |
203 | if (!(flags & XFS_IGET_CREATE)) { | 203 | xfs_put_perag(mp, pag); |
204 | xfs_put_perag(mp, pag); | 204 | return ENOENT; |
205 | return ENOENT; | ||
206 | } | ||
207 | xfs_iocore_inode_reinit(ip); | ||
208 | } | 205 | } |
209 | 206 | ||
210 | if (lock_flags != 0) | 207 | if (lock_flags != 0) |
@@ -235,7 +232,6 @@ finish_inode: | |||
235 | xfs_itrace_exit_tag(ip, "xfs_iget.alloc"); | 232 | xfs_itrace_exit_tag(ip, "xfs_iget.alloc"); |
236 | 233 | ||
237 | xfs_inode_lock_init(ip, vp); | 234 | xfs_inode_lock_init(ip, vp); |
238 | xfs_iocore_inode_init(ip); | ||
239 | if (lock_flags) | 235 | if (lock_flags) |
240 | xfs_ilock(ip, lock_flags); | 236 | xfs_ilock(ip, lock_flags); |
241 | 237 | ||
@@ -331,9 +327,6 @@ finish_inode: | |||
331 | ASSERT(ip->i_df.if_ext_max == | 327 | ASSERT(ip->i_df.if_ext_max == |
332 | XFS_IFORK_DSIZE(ip) / sizeof(xfs_bmbt_rec_t)); | 328 | XFS_IFORK_DSIZE(ip) / sizeof(xfs_bmbt_rec_t)); |
333 | 329 | ||
334 | ASSERT(((ip->i_d.di_flags & XFS_DIFLAG_REALTIME) != 0) == | ||
335 | ((ip->i_iocore.io_flags & XFS_IOCORE_RT) != 0)); | ||
336 | |||
337 | xfs_iflags_set(ip, XFS_IMODIFIED); | 330 | xfs_iflags_set(ip, XFS_IMODIFIED); |
338 | *ipp = ip; | 331 | *ipp = ip; |
339 | 332 | ||