Diff for /xfs-linux/linux-2.6/xfs_iops.c between versions 1.264 and 1.265

version 1.264, 2007/09/19 04:00:15 version 1.265, 2007/09/25 06:12:37
Line 564  xfs_vn_permission( Line 564  xfs_vn_permission(
   
 STATIC int  STATIC int
 xfs_vn_getattr(  xfs_vn_getattr(
         struct vfsmount *mnt,          struct vfsmount         *mnt,
         struct dentry   *dentry,          struct dentry           *dentry,
         struct kstat    *stat)          struct kstat            *stat)
 {  {
         struct inode    *inode = dentry->d_inode;          struct inode            *inode = dentry->d_inode;
         bhv_vattr_t     vattr = { .va_mask = XFS_AT_STAT };          struct xfs_inode        *ip = XFS_I(inode);
         int             error;          struct xfs_mount        *mp = ip->i_mount;
   
         error = xfs_getattr(XFS_I(inode), &vattr, ATTR_LAZY);          xfs_itrace_entry(ip);
         if (likely(!error)) {  
                 stat->size = i_size_read(inode);          if (XFS_FORCED_SHUTDOWN(mp))
                 stat->dev = inode->i_sb->s_dev;                  return XFS_ERROR(EIO);
                 stat->rdev = (vattr.va_rdev == 0) ? 0 :  
                                 MKDEV(sysv_major(vattr.va_rdev) & 0x1ff,          stat->size = XFS_ISIZE(ip);
                                       sysv_minor(vattr.va_rdev));          stat->dev = inode->i_sb->s_dev;
                 stat->mode = vattr.va_mode;          stat->mode = ip->i_d.di_mode;
                 stat->nlink = vattr.va_nlink;          stat->nlink = ip->i_d.di_nlink;
                 stat->uid = vattr.va_uid;          stat->uid = ip->i_d.di_uid;
                 stat->gid = vattr.va_gid;          stat->gid = ip->i_d.di_gid;
                 stat->ino = vattr.va_nodeid;          stat->ino = ip->i_ino;
                 stat->atime = vattr.va_atime;  #if XFS_BIG_INUMS
                 stat->mtime = vattr.va_mtime;          stat->ino += mp->m_inoadd;
                 stat->ctime = vattr.va_ctime;  #endif
                 stat->blocks = vattr.va_nblocks;          stat->atime = inode->i_atime;
                 stat->blksize = vattr.va_blocksize;          stat->mtime.tv_sec = ip->i_d.di_mtime.t_sec;
           stat->mtime.tv_nsec = ip->i_d.di_mtime.t_nsec;
           stat->ctime.tv_sec = ip->i_d.di_ctime.t_sec;
           stat->ctime.tv_nsec = ip->i_d.di_ctime.t_nsec;
           stat->blocks =
                   XFS_FSB_TO_BB(mp, ip->i_d.di_nblocks + ip->i_delayed_blks);
   
   
           switch (inode->i_mode & S_IFMT) {
           case S_IFBLK:
           case S_IFCHR:
                   stat->blksize = BLKDEV_IOSIZE;
                   stat->rdev = MKDEV(sysv_major(ip->i_df.if_u2.if_rdev) & 0x1ff,
                                      sysv_minor(ip->i_df.if_u2.if_rdev));
                   break;
           default:
                   if (ip->i_d.di_flags & XFS_DIFLAG_REALTIME) {
                           /*
                            * If the file blocks are being allocated from a
                            * realtime volume, then return the inode's realtime
                            * extent size or the realtime volume's extent size.
                            */
                           stat->blksize =
                                   xfs_get_extsz_hint(ip) << mp->m_sb.sb_blocklog;
                   } else
                           stat->blksize = xfs_preferred_iosize(mp);
                   stat->rdev = 0;
                   break;
         }          }
         return -error;  
           return 0;
 }  }
   
 STATIC int  STATIC int

Removed from v.1.264  
changed lines
  Added in v.1.265


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