Diff for /xfs-linux/xfs_itable.c between versions 1.151 and 1.152

version 1.151, 2006/09/18 06:12:51 version 1.152, 2007/07/09 15:45:29
Line 202  xfs_bulkstat_one_dinode( Line 202  xfs_bulkstat_one_dinode(
         return 0;          return 0;
 }  }
   
   STATIC int
   xfs_bulkstat_one_fmt(
           void                    __user *ubuffer,
           const xfs_bstat_t       *buffer)
   {
           if (copy_to_user(ubuffer, buffer, sizeof(*buffer)))
                   return -EFAULT;
           return sizeof(*buffer);
   }
   
 /*  /*
  * Return stat information for one inode.   * Return stat information for one inode.
  * Return 0 if ok, else errno.   * Return 0 if ok, else errno.
Line 221  xfs_bulkstat_one( Line 231  xfs_bulkstat_one(
         xfs_bstat_t     *buf;           /* return buffer */          xfs_bstat_t     *buf;           /* return buffer */
         int             error = 0;      /* error value */          int             error = 0;      /* error value */
         xfs_dinode_t    *dip;           /* dinode inode pointer */          xfs_dinode_t    *dip;           /* dinode inode pointer */
           bulkstat_one_fmt_pf formatter = private_data ? : xfs_bulkstat_one_fmt;
   
         dip = (xfs_dinode_t *)dibuff;          dip = (xfs_dinode_t *)dibuff;
         *stat = BULKSTAT_RV_NOTHING;          *stat = BULKSTAT_RV_NOTHING;
Line 243  xfs_bulkstat_one( Line 254  xfs_bulkstat_one(
                 xfs_bulkstat_one_dinode(mp, ino, dip, buf);                  xfs_bulkstat_one_dinode(mp, ino, dip, buf);
         }          }
   
         if (copy_to_user(buffer, buf, sizeof(*buf)))  {          error = formatter(buffer, buf);
           if (error < 0)  {
                 error = EFAULT;                  error = EFAULT;
                 goto out_free;                  goto out_free;
         }          }
   
         *stat = BULKSTAT_RV_DIDONE;          *stat = BULKSTAT_RV_DIDONE;
         if (ubused)          if (ubused)
                 *ubused = sizeof(*buf);                  *ubused = error;
   
  out_free:   out_free:
         kmem_free(buf, sizeof(*buf));          kmem_free(buf, sizeof(*buf));
Line 748  xfs_bulkstat_single( Line 760  xfs_bulkstat_single(
         return 0;          return 0;
 }  }
   
   int
   xfs_inumbers_fmt(
           void                    __user *ubuffer, /* buffer to write to */
           const xfs_inogrp_t      *buffer,        /* buffer to read from */
           long                    count,          /* # of elements to read */
           long                    *written)       /* # of bytes written */
   {
           if (copy_to_user(ubuffer, buffer, count * sizeof(*buffer)))
                   return -EFAULT;
           *written = count * sizeof(*buffer);
           return 0;
   }
   
 /*  /*
  * Return inode number table for the filesystem.   * Return inode number table for the filesystem.
  */   */
Line 756  xfs_inumbers( Line 781  xfs_inumbers(
         xfs_mount_t     *mp,            /* mount point for filesystem */          xfs_mount_t     *mp,            /* mount point for filesystem */
         xfs_ino_t       *lastino,       /* last inode returned */          xfs_ino_t       *lastino,       /* last inode returned */
         int             *count,         /* size of buffer/count returned */          int             *count,         /* size of buffer/count returned */
         xfs_inogrp_t    __user *ubuffer)/* buffer with inode descriptions */          void            __user *ubuffer,/* buffer with inode descriptions */
           inumbers_fmt_pf formatter)
 {  {
         xfs_buf_t       *agbp;          xfs_buf_t       *agbp;
         xfs_agino_t     agino;          xfs_agino_t     agino;
Line 835  xfs_inumbers( Line 861  xfs_inumbers(
                 bufidx++;                  bufidx++;
                 left--;                  left--;
                 if (bufidx == bcount) {                  if (bufidx == bcount) {
                         if (copy_to_user(ubuffer, buffer,                          long written;
                                         bufidx * sizeof(*buffer))) {                          if (formatter(ubuffer, buffer, bufidx, &written)) {
                                 error = XFS_ERROR(EFAULT);                                  error = XFS_ERROR(EFAULT);
                                 break;                                  break;
                         }                          }
                         ubuffer += bufidx;                          ubuffer += written;
                         *count += bufidx;                          *count += bufidx;
                         bufidx = 0;                          bufidx = 0;
                 }                  }
Line 862  xfs_inumbers( Line 888  xfs_inumbers(
         }          }
         if (!error) {          if (!error) {
                 if (bufidx) {                  if (bufidx) {
                         if (copy_to_user(ubuffer, buffer,                          long written;
                                         bufidx * sizeof(*buffer)))                          if (formatter(ubuffer, buffer, bufidx, &written))
                                 error = XFS_ERROR(EFAULT);                                  error = XFS_ERROR(EFAULT);
                         else                          else
                                 *count += bufidx;                                  *count += bufidx;

Removed from v.1.151  
changed lines
  Added in v.1.152


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