Diff for /xfs-linux/linux-2.6/xfs_ioctl32.c between versions 1.16 and 1.17

version 1.16, 2007/07/09 15:43:57 version 1.17, 2007/07/09 15:44:42
Line 141  xfs_ioctl32_bulkstat( Line 141  xfs_ioctl32_bulkstat(
 }  }
 #endif  #endif
   
   typedef struct compat_xfs_fsop_handlereq {
           __u32           fd;             /* fd for FD_TO_HANDLE          */
           compat_uptr_t   path;           /* user pathname                */
           __u32           oflags;         /* open flags                   */
           compat_uptr_t   ihandle;        /* user supplied handle         */
           __u32           ihandlen;       /* user supplied length         */
           compat_uptr_t   ohandle;        /* user buffer for handle       */
           compat_uptr_t   ohandlen;       /* user buffer length           */
   } compat_xfs_fsop_handlereq_t;
   
   #define XFS_IOC_PATH_TO_FSHANDLE_32 \
           _IOWR('X', 104, struct compat_xfs_fsop_handlereq)
   #define XFS_IOC_PATH_TO_HANDLE_32 \
           _IOWR('X', 105, struct compat_xfs_fsop_handlereq)
   #define XFS_IOC_FD_TO_HANDLE_32 \
           _IOWR('X', 106, struct compat_xfs_fsop_handlereq)
   #define XFS_IOC_OPEN_BY_HANDLE_32 \
           _IOWR('X', 107, struct compat_xfs_fsop_handlereq)
   #define XFS_IOC_READLINK_BY_HANDLE_32 \
           _IOWR('X', 108, struct compat_xfs_fsop_handlereq)
   
   STATIC unsigned long xfs_ioctl32_fshandle(unsigned long arg)
   {
           compat_xfs_fsop_handlereq_t __user *p32 = (void __user *)arg;
           xfs_fsop_handlereq_t __user *p = compat_alloc_user_space(sizeof(*p));
           u32 addr;
   
           if (copy_in_user(&p->fd, &p32->fd, sizeof(__u32)) ||
               get_user(addr, &p32->path) ||
               put_user(compat_ptr(addr), &p->path) ||
               copy_in_user(&p->oflags, &p32->oflags, sizeof(__u32)) ||
               get_user(addr, &p32->ihandle) ||
               put_user(compat_ptr(addr), &p->ihandle) ||
               copy_in_user(&p->ihandlen, &p32->ihandlen, sizeof(__u32)) ||
               get_user(addr, &p32->ohandle) ||
               put_user(compat_ptr(addr), &p->ohandle) ||
               get_user(addr, &p32->ohandlen) ||
               put_user(compat_ptr(addr), &p->ohandlen))
                   return -EFAULT;
   
           return (unsigned long)p;
   }
   
   
 STATIC long  STATIC long
 xfs_compat_ioctl(  xfs_compat_ioctl(
         int             mode,          int             mode,
Line 166  xfs_compat_ioctl( Line 210  xfs_compat_ioctl(
         case XFS_IOC_GETBMAPA:          case XFS_IOC_GETBMAPA:
         case XFS_IOC_GETBMAPX:          case XFS_IOC_GETBMAPX:
 /* not handled  /* not handled
         case XFS_IOC_FD_TO_HANDLE:  
         case XFS_IOC_PATH_TO_HANDLE:  
         case XFS_IOC_PATH_TO_FSHANDLE:  
         case XFS_IOC_OPEN_BY_HANDLE:  
         case XFS_IOC_FSSETDM_BY_HANDLE:          case XFS_IOC_FSSETDM_BY_HANDLE:
         case XFS_IOC_READLINK_BY_HANDLE:  
         case XFS_IOC_ATTRLIST_BY_HANDLE:          case XFS_IOC_ATTRLIST_BY_HANDLE:
         case XFS_IOC_ATTRMULTI_BY_HANDLE:          case XFS_IOC_ATTRMULTI_BY_HANDLE:
 */  */
Line 228  xfs_compat_ioctl( Line 267  xfs_compat_ioctl(
                 arg = xfs_ioctl32_bulkstat(arg);                  arg = xfs_ioctl32_bulkstat(arg);
                 break;                  break;
 #endif  #endif
           case XFS_IOC_FD_TO_HANDLE_32:
           case XFS_IOC_PATH_TO_HANDLE_32:
           case XFS_IOC_PATH_TO_FSHANDLE_32:
           case XFS_IOC_OPEN_BY_HANDLE_32:
           case XFS_IOC_READLINK_BY_HANDLE_32:
                   arg = xfs_ioctl32_fshandle(arg);
                   cmd = _NATIVE_IOC(cmd, struct xfs_fsop_handlereq);
                   break;
         default:          default:
                 return -ENOIOCTLCMD;                  return -ENOIOCTLCMD;
         }          }

Removed from v.1.16  
changed lines
  Added in v.1.17


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