xfs
[Top] [All Lists]

Re: [patch 12/12] Reorder xfs_ioctl32.c for some tidiness

To: sandeen@xxxxxxxxxxx
Subject: Re: [patch 12/12] Reorder xfs_ioctl32.c for some tidiness
From: Christoph Hellwig <hch@xxxxxxxxxxxxx>
Date: Wed, 26 Nov 2008 05:56:21 -0500
Cc: xfs@xxxxxxxxxxx
In-reply-to: <20081126032029.414794702@xxxxxxxxxxx>
References: <20081126032005.639750968@xxxxxxxxxxx> <20081126032029.414794702@xxxxxxxxxxx>
User-agent: Mutt/1.5.18 (2008-05-17)
On Tue, Nov 25, 2008 at 09:20:17PM -0600, sandeen@xxxxxxxxxxx wrote:
> Put things in IMHO a more readable order, now
> that it's all done; add some comments.

Ok.


> 
> Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxxx>
> --
> 
> Index: linux-2.6-xfs/fs/xfs/linux-2.6/xfs_ioctl32.c
> ===================================================================
> --- linux-2.6-xfs.orig/fs/xfs/linux-2.6/xfs_ioctl32.c 2008-11-24 
> 17:00:32.471064582 -0600
> +++ linux-2.6-xfs/fs/xfs/linux-2.6/xfs_ioctl32.c      2008-11-24 
> 17:00:33.095064454 -0600
> @@ -16,11 +16,7 @@
>   * Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
>   */
>  #include <linux/compat.h>
> -#include <linux/init.h>
>  #include <linux/ioctl.h>
> -#include <linux/syscalls.h>
> -#include <linux/types.h>
> -#include <linux/fs.h>
>  #include <asm/uaccess.h>
>  #include "xfs.h"
>  #include "xfs_fs.h"
> @@ -132,7 +128,7 @@ xfs_inumbers_fmt_compat(
>  
>  #else
>  #define xfs_inumbers_fmt_compat xfs_inumbers_fmt
> -#endif
> +#endif       /* BROKEN_X86_ALIGNMENT */
>  
>  STATIC int
>  xfs_ioctl32_bstime_copyin(
> @@ -618,6 +614,7 @@ xfs_compat_ioctl(
>  
>       xfs_itrace_entry(XFS_I(inode));
>       switch (cmd) {
> +     /* No size or alignment issues on any arch */
>       case XFS_IOC_DIOINFO:
>       case XFS_IOC_FSGEOMETRY:
>       case XFS_IOC_FSGETXATTR:
> @@ -630,35 +627,28 @@ xfs_compat_ioctl(
>       case XFS_IOC_FSCOUNTS:
>       case XFS_IOC_SET_RESBLKS:
>       case XFS_IOC_GET_RESBLKS:
> -     case XFS_IOC_FSGROWFSDATA:
>       case XFS_IOC_FSGROWFSLOG:
> -     case XFS_IOC_FSGROWFSRT:
>       case XFS_IOC_FREEZE:
>       case XFS_IOC_THAW:
>       case XFS_IOC_GOINGDOWN:
>       case XFS_IOC_ERROR_INJECTION:
>       case XFS_IOC_ERROR_CLEARALL:
> -             break;
> -
> -     case XFS_IOC_GETXFLAGS_32:
> -     case XFS_IOC_SETXFLAGS_32:
> -     case XFS_IOC_GETVERSION_32:
> -             cmd = _NATIVE_IOC(cmd, long);
> -             break;
> -     case XFS_IOC_SWAPEXT: {
> -             struct xfs_swapext        sxp;
> -             struct compat_xfs_swapext __user *sxu = arg;
> -
> -             /* Bulk copy in up to the sx_stat field, then grab bstat */
> -             if (copy_from_user(&sxp, sxu,
> -                                offsetof(xfs_swapext_t, sx_stat)) ||
> -                 xfs_ioctl32_bstat_copyin(&sxp.sx_stat, &sxu->sx_stat))
> -                     return -XFS_ERROR(EFAULT);
> -             error = xfs_swapext(&sxp);
> -             return -error;
> -     }
> -#ifdef BROKEN_X86_ALIGNMENT
> -     /* xfs_flock_t has wrong u32 vs u64 alignment */
> +             return xfs_ioctl(ip, filp, ioflags, cmd, arg);
> +#ifndef BROKEN_X86_ALIGNMENT
> +     /* These are handled fine if no alignment issues */
> +     case XFS_IOC_ALLOCSP:
> +     case XFS_IOC_FREESP:
> +     case XFS_IOC_RESVSP:
> +     case XFS_IOC_UNRESVSP:
> +     case XFS_IOC_ALLOCSP64:
> +     case XFS_IOC_FREESP64:
> +     case XFS_IOC_RESVSP64:
> +     case XFS_IOC_UNRESVSP64:
> +     case XFS_IOC_FSGEOMETRY_V1:
> +     case XFS_IOC_FSGROWFSDATA:
> +     case XFS_IOC_FSGROWFSRT:
> +             return xfs_ioctl(ip, filp, ioflags, cmd, arg);
> +#else
>       case XFS_IOC_ALLOCSP_32:
>       case XFS_IOC_FREESP_32:
>       case XFS_IOC_ALLOCSP64_32:
> @@ -692,18 +682,25 @@ xfs_compat_ioctl(
>               error = xfs_growfs_rt(mp, &in);
>               return -error;
>       }
> -#else /* These are handled fine if no alignment issues */
> -     case XFS_IOC_ALLOCSP:
> -     case XFS_IOC_FREESP:
> -     case XFS_IOC_RESVSP:
> -     case XFS_IOC_UNRESVSP:
> -     case XFS_IOC_ALLOCSP64:
> -     case XFS_IOC_FREESP64:
> -     case XFS_IOC_RESVSP64:
> -     case XFS_IOC_UNRESVSP64:
> -     case XFS_IOC_FSGEOMETRY_V1:
> -             break;
>  #endif
> +     /* long changes size, but xfs only copiese out 32 bits */
> +     case XFS_IOC_GETXFLAGS_32:
> +     case XFS_IOC_SETXFLAGS_32:
> +     case XFS_IOC_GETVERSION_32:
> +             cmd = _NATIVE_IOC(cmd, long);
> +             return xfs_ioctl(ip, filp, ioflags, cmd, arg);
> +     case XFS_IOC_SWAPEXT: {
> +             struct xfs_swapext        sxp;
> +             struct compat_xfs_swapext __user *sxu = arg;
> +
> +             /* Bulk copy in up to the sx_stat field, then copy bstat */
> +             if (copy_from_user(&sxp, sxu,
> +                                offsetof(struct xfs_swapext, sx_stat)) ||
> +                 xfs_ioctl32_bstat_copyin(&sxp.sx_stat, &sxu->sx_stat))
> +                     return -XFS_ERROR(EFAULT);
> +             error = xfs_swapext(&sxp);
> +             return -error;
> +     }
>       case XFS_IOC_FSBULKSTAT_32:
>       case XFS_IOC_FSBULKSTAT_SINGLE_32:
>       case XFS_IOC_FSINUMBERS_32:
> @@ -741,9 +738,6 @@ xfs_compat_ioctl(
>       default:
>               return -XFS_ERROR(ENOIOCTLCMD);
>       }
> -
> -     error = xfs_ioctl(ip, filp, ioflags, cmd, arg);
> -     return error;
>  }
>  
>  long
> 
> -- 
> 
> _______________________________________________
> xfs mailing list
> xfs@xxxxxxxxxxx
> http://oss.sgi.com/mailman/listinfo/xfs
---end quoted text---

<Prev in Thread] Current Thread [Next in Thread>