From: David Chinner <dgc@sgi.com>
To: Michal Marek <mmarek@suse.cz>
Cc: xfs@oss.sgi.com, linux-kernel@vger.kernel.org
Subject: Re: [patch 1/3] Fix XFS_IOC_FSGEOMETRY_V1 in compat mode
Date: Thu, 31 May 2007 12:30:31 +1000 [thread overview]
Message-ID: <20070531023031.GH85884050@sgi.com> (raw)
In-Reply-To: <20070530143043.216024061@suse.cz>
On Wed, May 30, 2007 at 02:59:55PM +0200, Michal Marek wrote:
> i386 struct xfs_fsop_geom_v1 has no padding after the last member, so
> the size is different.
That's a pain - it's kind of clunky having to redefine the entire
structure just pack it differently. Oh well, not much that
we can do about it...
>
> Signed-off-by: Michal Marek <mmarek@suse.cz>
> ---
> fs/xfs/linux-2.6/xfs_ioctl32.c | 40 +++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 39 insertions(+), 1 deletion(-)
>
> --- linux-2.6.orig/fs/xfs/linux-2.6/xfs_ioctl32.c
> +++ linux-2.6/fs/xfs/linux-2.6/xfs_ioctl32.c
> @@ -75,6 +75,40 @@ xfs_ioctl32_flock(
> return (unsigned long)p;
> }
>
> +typedef struct xfs_fsop_geom_v132 {
xfs_fsop_geom_v1_32
> + __u32 blocksize; /* filesystem (data) block size */
> + __u32 rtextsize; /* realtime extent size */
> + __u32 agblocks; /* fsblocks in an AG */
> + __u32 agcount; /* number of allocation groups */
> + __u32 logblocks; /* fsblocks in the log */
> + __u32 sectsize; /* (data) sector size, bytes */
> + __u32 inodesize; /* inode size in bytes */
> + __u32 imaxpct; /* max allowed inode space(%) */
> + __u64 datablocks; /* fsblocks in data subvolume */
> + __u64 rtblocks; /* fsblocks in realtime subvol */
> + __u64 rtextents; /* rt extents in realtime subvol*/
> + __u64 logstart; /* starting fsblock of the log */
> + unsigned char uuid[16]; /* unique id of the filesystem */
> + __u32 sunit; /* stripe unit, fsblocks */
> + __u32 swidth; /* stripe width, fsblocks */
> + __s32 version; /* structure version */
> + __u32 flags; /* superblock version flags */
> + __u32 logsectsize; /* log sector size, bytes */
> + __u32 rtsectsize; /* realtime sector size, bytes */
> + __u32 dirblocksize; /* directory block size, bytes */
> +} __attribute__((packed)) xfs_fsop_geom_v132_t;
xfs_fsop_geom_v1_32_t
> +#define XFS_IOC_FSGEOMETRY_V1_32 _IOR ('X', 100, struct xfs_fsop_geom_v132)
> +
> +STATIC unsigned long xfs_ioctl32_geom_v1(unsigned long arg)
> +{
> + xfs_fsop_geom_v132_t __user *p32 = (void __user *)arg;
> + xfs_fsop_geom_v1_t __user *p = compat_alloc_user_space(sizeof(*p));
> +
> + if (copy_in_user(p, p32, sizeof(*p32)))
> + return -EFAULT;
> + return (unsigned long)p;
> +}
> +
> #else
>
> typedef struct xfs_fsop_bulkreq32 {
> @@ -118,7 +152,6 @@ xfs_compat_ioctl(
>
> switch (cmd) {
> case XFS_IOC_DIOINFO:
> - case XFS_IOC_FSGEOMETRY_V1:
> case XFS_IOC_FSGEOMETRY:
> case XFS_IOC_GETVERSION:
> case XFS_IOC_GETXFLAGS:
> @@ -166,6 +199,10 @@ xfs_compat_ioctl(
> arg = xfs_ioctl32_flock(arg);
> cmd = _NATIVE_IOC(cmd, struct xfs_flock64);
> break;
/* xfs_fsop_geom_v1 changes size */
> + case XFS_IOC_FSGEOMETRY_V1_32:
> + arg = xfs_ioctl32_geom_v1(arg);
> + cmd = XFS_IOC_FSGEOMETRY_V1;
> + break;
cmd = _NATIVE_IOC(cmd, struct xfs_fsop_geom_v1);
Cheers,
Dave.
--
Dave Chinner
Principal Engineer
SGI Australian Software Group
next prev parent reply other threads:[~2007-05-31 2:30 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-30 12:59 [patch 0/3] Fix for XFS compat ioctls Michal Marek
2007-05-30 12:59 ` [patch 1/3] Fix XFS_IOC_FSGEOMETRY_V1 in compat mode Michal Marek
2007-05-30 17:05 ` Chris Wedgwood
2007-05-30 21:48 ` Arnd Bergmann
2007-05-31 8:10 ` Michal Marek
2007-05-31 2:30 ` David Chinner [this message]
2007-05-31 7:22 ` Timothy Shimmin
2007-05-31 13:26 ` David Chinner
2007-06-01 4:39 ` Timothy Shimmin
2007-06-04 14:56 ` Christoph Hellwig
2007-05-30 12:59 ` [patch 2/3] Fix XFS_IOC_*_TO_HANDLE and XFS_IOC_{OPEN,READLINK}_BY_HANDLE " Michal Marek
2007-05-31 2:36 ` David Chinner
2007-05-30 12:59 ` [patch 3/3] Fix XFS_IOC_FSBULKSTAT{,_SINGLE} and XFS_IOC_FSINUMBERS " Michal Marek
2007-05-31 6:37 ` David Chinner
2007-05-31 8:52 ` Michal Marek
2007-05-31 13:03 ` David Chinner
2007-05-31 7:06 ` Arnd Bergmann
-- strict thread matches above, loose matches on Subject: below --
2007-06-19 13:25 [patch 0/3] Fix for XFS compat ioctls (try2) mmarek
2007-06-19 13:25 ` [patch 1/3] Fix XFS_IOC_FSGEOMETRY_V1 in compat mode mmarek
2007-06-28 3:06 ` David Chinner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20070531023031.GH85884050@sgi.com \
--to=dgc@sgi.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mmarek@suse.cz \
--cc=xfs@oss.sgi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.