Diff for /xfs-linux/xfs_iget.c between versions 1.222 and 1.223

version 1.222, 2006/10/16 15:39:47 version 1.223, 2006/11/07 14:39:38
Line 215  again: Line 215  again:
                          * If INEW is set this inode is being set up                           * If INEW is set this inode is being set up
                          * we need to pause and try again.                           * we need to pause and try again.
                          */                           */
                         if (ip->i_flags & XFS_INEW) {                          if (xfs_iflags_test(ip, XFS_INEW)) {
                                 read_unlock(&ih->ih_lock);                                  read_unlock(&ih->ih_lock);
                                 delay(1);                                  delay(1);
                                 XFS_STATS_INC(xs_ig_frecycle);                                  XFS_STATS_INC(xs_ig_frecycle);
Line 230  again: Line 230  again:
                                  * on its way out of the system,                                   * on its way out of the system,
                                  * we need to pause and try again.                                   * we need to pause and try again.
                                  */                                   */
                                 if (ip->i_flags & XFS_IRECLAIM) {                                  if (xfs_iflags_test(ip, XFS_IRECLAIM)) {
                                         read_unlock(&ih->ih_lock);                                          read_unlock(&ih->ih_lock);
                                         delay(1);                                          delay(1);
                                         XFS_STATS_INC(xs_ig_frecycle);                                          XFS_STATS_INC(xs_ig_frecycle);
Line 243  again: Line 243  again:
   
                                 XFS_STATS_INC(xs_ig_found);                                  XFS_STATS_INC(xs_ig_found);
   
                                 spin_lock(&ip->i_flags_lock);                                  xfs_iflags_clear(ip, XFS_IRECLAIMABLE);
                                 ip->i_flags &= ~XFS_IRECLAIMABLE;  
                                 spin_unlock(&ip->i_flags_lock);  
                                 version = ih->ih_version;                                  version = ih->ih_version;
                                 read_unlock(&ih->ih_lock);                                  read_unlock(&ih->ih_lock);
                                 xfs_ihash_promote(ih, ip, version);                                  xfs_ihash_promote(ih, ip, version);
Line 299  finish_inode: Line 297  finish_inode:
                         if (lock_flags != 0)                          if (lock_flags != 0)
                                 xfs_ilock(ip, lock_flags);                                  xfs_ilock(ip, lock_flags);
   
                         spin_lock(&ip->i_flags_lock);                          xfs_iflags_clear(ip, XFS_ISTALE);
                         ip->i_flags &= ~XFS_ISTALE;  
                         spin_unlock(&ip->i_flags_lock);  
   
                         vn_trace_exit(vp, "xfs_iget.found",                          vn_trace_exit(vp, "xfs_iget.found",
                                                 (inst_t *)__return_address);                                                  (inst_t *)__return_address);
                         goto return_ip;                          goto return_ip;
Line 371  finish_inode: Line 366  finish_inode:
         ih->ih_next = ip;          ih->ih_next = ip;
         ip->i_udquot = ip->i_gdquot = NULL;          ip->i_udquot = ip->i_gdquot = NULL;
         ih->ih_version++;          ih->ih_version++;
         spin_lock(&ip->i_flags_lock);          xfs_iflags_set(ip, XFS_INEW);
         ip->i_flags |= XFS_INEW;  
         spin_unlock(&ip->i_flags_lock);  
   
         write_unlock(&ih->ih_lock);          write_unlock(&ih->ih_lock);
   
         /*          /*
Line 625  xfs_iput_new(xfs_inode_t *ip, Line 617  xfs_iput_new(xfs_inode_t *ip,
         vn_trace_entry(vp, "xfs_iput_new", (inst_t *)__return_address);          vn_trace_entry(vp, "xfs_iput_new", (inst_t *)__return_address);
   
         if ((ip->i_d.di_mode == 0)) {          if ((ip->i_d.di_mode == 0)) {
                 ASSERT(!(ip->i_flags & XFS_IRECLAIMABLE));                  ASSERT(!xfs_iflags_test(ip, XFS_IRECLAIMABLE));
                 vn_mark_bad(vp);                  vn_mark_bad(vp);
         }          }
         if (inode->i_state & I_NEW)          if (inode->i_state & I_NEW)

Removed from v.1.222  
changed lines
  Added in v.1.223


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>