From: Arnd Bergmann <arnd@arndb.de>
To: Christoph Hellwig <hch@infradead.org>
Cc: mfasheh@suse.com, joel.becker@oracle.com,
linux-kernel@vger.kernel.org, xfs-masters@oss.sgi.com,
Al Viro <viro@zeniv.linux.org.uk>, Ankit Jain <me@ankitjain.org>,
linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com,
ocfs2-devel@oss.oracle.com
Subject: Re: [PATCH] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls
Date: Sat, 20 Jun 2009 08:13:59 +0000 [thread overview]
Message-ID: <200906200813.59793.arnd@arndb.de> (raw)
In-Reply-To: <20090619182807.GA32683@infradead.org>
On Friday 19 June 2009 06:28:07 pm Christoph Hellwig wrote:
> +/* on ia32 l_start is on a 32-bit boundary */
> +#if defined(CONFIG_IA64) || defined(CONFIG_X86_64)
> +struct space_resv_32 {
> + __s16 l_type;
> + __s16 l_whence;
> + __s64 l_start __attribute__((packed));
> + /* len == 0 means until end of file */
> + __s64 l_len __attribute__((packed));
> + __s32 l_sysid;
> + __u32 l_pid;
> + __s32 l_pad[4]; /* reserve area */
> +};
> +
> +#define FS_IOC_RESVSP_32 _IOW ('X', 40, struct space_resv_32)
> +#define FS_IOC_RESVSP64_32 _IOW ('X', 42, struct space_resv_32)
I'd just define this using compat_s64 instead of __s64 __packed so we can
use the same code on all architectures, even at the small cost of extra
text size on non-x86 architectures.
> +/* just account for different alignment */
> +static int compat_ioctl_preallocate(struct file *file, unsigned long arg)
> +{
> + struct space_resv_32 __user *p32 = (void __user *)arg;
> + struct space_resv __user *p = compat_alloc_user_space(sizeof(*p));
> +
> + if (copy_in_user(&p->l_type, &p32->l_type, sizeof(s16)) ||
> + copy_in_user(&p->l_whence, &p32->l_whence, sizeof(s16)) ||
> + copy_in_user(&p->l_start, &p32->l_start, sizeof(s64)) ||
> + copy_in_user(&p->l_len, &p32->l_len, sizeof(s64)) ||
> + copy_in_user(&p->l_sysid, &p32->l_sysid, sizeof(s32)) ||
> + copy_in_user(&p->l_pid, &p32->l_pid, sizeof(u32)) ||
> + copy_in_user(&p->l_pad, &p32->l_pad, 4*sizeof(u32)))
> + return -EFAULT;
> +
> + return ioctl_preallocate(file, p);
> +}
> +#endif
> +
Here, you can call do_fallocate directly in the same way that ioctl_preallocate
does, replacing the copy_in_user calls with __get_user().
Arnd <><
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@arndb.de>
To: Christoph Hellwig <hch@infradead.org>
Cc: Ankit Jain <me@ankitjain.org>, Al Viro <viro@zeniv.linux.org.uk>,
linux-fsdevel@vger.kernel.org, mfasheh@suse.com,
joel.becker@oracle.com, ocfs2-devel@oss.oracle.com,
linux-kernel@vger.kernel.org, xfs-masters@oss.sgi.com,
xfs@oss.sgi.com
Subject: [Ocfs2-devel] [PATCH] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls
Date: Tue, 23 Jun 2009 22:05:37 -0000 [thread overview]
Message-ID: <200906200813.59793.arnd@arndb.de> (raw)
In-Reply-To: <20090619182807.GA32683@infradead.org>
On Friday 19 June 2009 06:28:07 pm Christoph Hellwig wrote:
> +/* on ia32 l_start is on a 32-bit boundary */
> +#if defined(CONFIG_IA64) || defined(CONFIG_X86_64)
> +struct space_resv_32 {
> + __s16 l_type;
> + __s16 l_whence;
> + __s64 l_start __attribute__((packed));
> + /* len == 0 means until end of file */
> + __s64 l_len __attribute__((packed));
> + __s32 l_sysid;
> + __u32 l_pid;
> + __s32 l_pad[4]; /* reserve area */
> +};
> +
> +#define FS_IOC_RESVSP_32 _IOW ('X', 40, struct space_resv_32)
> +#define FS_IOC_RESVSP64_32 _IOW ('X', 42, struct space_resv_32)
I'd just define this using compat_s64 instead of __s64 __packed so we can
use the same code on all architectures, even at the small cost of extra
text size on non-x86 architectures.
> +/* just account for different alignment */
> +static int compat_ioctl_preallocate(struct file *file, unsigned long arg)
> +{
> + struct space_resv_32 __user *p32 = (void __user *)arg;
> + struct space_resv __user *p = compat_alloc_user_space(sizeof(*p));
> +
> + if (copy_in_user(&p->l_type, &p32->l_type, sizeof(s16)) ||
> + copy_in_user(&p->l_whence, &p32->l_whence, sizeof(s16)) ||
> + copy_in_user(&p->l_start, &p32->l_start, sizeof(s64)) ||
> + copy_in_user(&p->l_len, &p32->l_len, sizeof(s64)) ||
> + copy_in_user(&p->l_sysid, &p32->l_sysid, sizeof(s32)) ||
> + copy_in_user(&p->l_pid, &p32->l_pid, sizeof(u32)) ||
> + copy_in_user(&p->l_pad, &p32->l_pad, 4*sizeof(u32)))
> + return -EFAULT;
> +
> + return ioctl_preallocate(file, p);
> +}
> +#endif
> +
Here, you can call do_fallocate directly in the same way that ioctl_preallocate
does, replacing the copy_in_user calls with __get_user().
Arnd <><
WARNING: multiple messages have this Message-ID (diff)
From: Arnd Bergmann <arnd@arndb.de>
To: Christoph Hellwig <hch@infradead.org>
Cc: Ankit Jain <me@ankitjain.org>, Al Viro <viro@zeniv.linux.org.uk>,
linux-fsdevel@vger.kernel.org, mfasheh@suse.com,
joel.becker@oracle.com, ocfs2-devel@oss.oracle.com,
linux-kernel@vger.kernel.org, xfs-masters@oss.sgi.com,
xfs@oss.sgi.com
Subject: Re: [PATCH] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls
Date: Sat, 20 Jun 2009 08:13:59 +0000 [thread overview]
Message-ID: <200906200813.59793.arnd@arndb.de> (raw)
In-Reply-To: <20090619182807.GA32683@infradead.org>
On Friday 19 June 2009 06:28:07 pm Christoph Hellwig wrote:
> +/* on ia32 l_start is on a 32-bit boundary */
> +#if defined(CONFIG_IA64) || defined(CONFIG_X86_64)
> +struct space_resv_32 {
> + __s16 l_type;
> + __s16 l_whence;
> + __s64 l_start __attribute__((packed));
> + /* len == 0 means until end of file */
> + __s64 l_len __attribute__((packed));
> + __s32 l_sysid;
> + __u32 l_pid;
> + __s32 l_pad[4]; /* reserve area */
> +};
> +
> +#define FS_IOC_RESVSP_32 _IOW ('X', 40, struct space_resv_32)
> +#define FS_IOC_RESVSP64_32 _IOW ('X', 42, struct space_resv_32)
I'd just define this using compat_s64 instead of __s64 __packed so we can
use the same code on all architectures, even at the small cost of extra
text size on non-x86 architectures.
> +/* just account for different alignment */
> +static int compat_ioctl_preallocate(struct file *file, unsigned long arg)
> +{
> + struct space_resv_32 __user *p32 = (void __user *)arg;
> + struct space_resv __user *p = compat_alloc_user_space(sizeof(*p));
> +
> + if (copy_in_user(&p->l_type, &p32->l_type, sizeof(s16)) ||
> + copy_in_user(&p->l_whence, &p32->l_whence, sizeof(s16)) ||
> + copy_in_user(&p->l_start, &p32->l_start, sizeof(s64)) ||
> + copy_in_user(&p->l_len, &p32->l_len, sizeof(s64)) ||
> + copy_in_user(&p->l_sysid, &p32->l_sysid, sizeof(s32)) ||
> + copy_in_user(&p->l_pid, &p32->l_pid, sizeof(u32)) ||
> + copy_in_user(&p->l_pad, &p32->l_pad, 4*sizeof(u32)))
> + return -EFAULT;
> +
> + return ioctl_preallocate(file, p);
> +}
> +#endif
> +
Here, you can call do_fallocate directly in the same way that ioctl_preallocate
does, replacing the copy_in_user calls with __get_user().
Arnd <><
next prev parent reply other threads:[~2009-06-20 8:13 UTC|newest]
Thread overview: 76+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-28 20:59 [PATCH] fs: Add new pre-allocation ioctls to vfs for compatibility with legacy xfs ioctls Ankit Jain
2009-01-28 20:59 ` Ankit Jain
2009-01-28 20:59 ` [Ocfs2-devel] " Ankit Jain
2009-01-31 0:22 ` Andrew Morton
2009-01-31 0:23 ` [Ocfs2-devel] " Andrew Morton
2009-01-31 0:22 ` Andrew Morton
2009-01-31 0:38 ` Arnd Bergmann
2009-01-31 0:39 ` [Ocfs2-devel] " Arnd Bergmann
2009-01-31 0:38 ` Arnd Bergmann
2009-01-31 1:14 ` Andrew Morton
2009-01-31 1:14 ` [Ocfs2-devel] " Andrew Morton
2009-01-31 1:14 ` Andrew Morton
2009-01-31 1:48 ` Arnd Bergmann
2009-01-31 1:49 ` [Ocfs2-devel] " Arnd Bergmann
2009-01-31 1:48 ` Arnd Bergmann
2009-01-31 1:48 ` Arnd Bergmann
2009-02-01 9:48 ` Boaz Harrosh
2009-02-01 9:48 ` [Ocfs2-devel] " Boaz Harrosh
2009-02-01 9:48 ` Boaz Harrosh
2009-02-01 10:05 ` Geert Uytterhoeven
2009-02-01 10:05 ` [Ocfs2-devel] " Geert Uytterhoeven
2009-02-01 10:05 ` Geert Uytterhoeven
2009-02-01 10:39 ` Boaz Harrosh
2009-02-01 10:39 ` [Ocfs2-devel] " Boaz Harrosh
2009-02-01 10:39 ` Boaz Harrosh
2009-02-01 10:59 ` Geert Uytterhoeven
2009-02-01 11:00 ` [Ocfs2-devel] " Geert Uytterhoeven
2009-02-01 10:59 ` Geert Uytterhoeven
2009-02-01 12:32 ` Boaz Harrosh
2009-02-01 12:33 ` [Ocfs2-devel] " Boaz Harrosh
2009-02-01 12:32 ` Boaz Harrosh
2009-02-01 15:37 ` [xfs-masters] " Eric Sandeen
2009-02-01 15:41 ` [Ocfs2-devel] " Eric Sandeen
2009-02-01 15:37 ` Eric Sandeen
2009-02-01 16:25 ` Boaz Harrosh
2009-02-01 16:26 ` [Ocfs2-devel] " Boaz Harrosh
2009-02-01 16:25 ` Boaz Harrosh
2009-02-01 16:35 ` Eric Sandeen
2009-02-01 16:36 ` [Ocfs2-devel] " Eric Sandeen
2009-02-01 16:35 ` Eric Sandeen
2009-02-01 16:41 ` Christoph Hellwig
2009-02-01 16:45 ` [Ocfs2-devel] " Christoph Hellwig
2009-02-01 16:41 ` Christoph Hellwig
2009-02-01 16:57 ` Boaz Harrosh
2009-02-01 16:58 ` [Ocfs2-devel] " Boaz Harrosh
2009-02-01 16:57 ` Boaz Harrosh
2009-02-02 0:31 ` Arnd Bergmann
2009-02-02 0:32 ` [Ocfs2-devel] " Arnd Bergmann
2009-02-02 0:31 ` Arnd Bergmann
2009-02-02 8:29 ` Boaz Harrosh
2009-02-02 8:30 ` [Ocfs2-devel] " Boaz Harrosh
2009-02-02 8:29 ` Boaz Harrosh
2009-02-02 8:45 ` Geert Uytterhoeven
2009-02-02 8:45 ` [Ocfs2-devel] " Geert Uytterhoeven
2009-02-02 8:45 ` Geert Uytterhoeven
2009-02-02 9:33 ` Boaz Harrosh
2009-02-02 9:34 ` [Ocfs2-devel] " Boaz Harrosh
2009-02-02 9:33 ` Boaz Harrosh
2009-02-02 20:51 ` Jamie Lokier
2009-02-02 20:53 ` [Ocfs2-devel] " Jamie Lokier
2009-02-02 20:51 ` Jamie Lokier
2009-02-03 7:31 ` Boaz Harrosh
2009-02-03 7:32 ` [Ocfs2-devel] " Boaz Harrosh
2009-02-03 7:31 ` Boaz Harrosh
2009-02-03 11:21 ` Jamie Lokier
2009-02-03 11:21 ` [Ocfs2-devel] " Jamie Lokier
2009-02-03 11:21 ` Jamie Lokier
2009-06-19 18:28 ` Christoph Hellwig
2009-06-19 18:28 ` [Ocfs2-devel] " Christoph Hellwig
2009-06-19 18:28 ` Christoph Hellwig
2009-06-20 8:13 ` Arnd Bergmann [this message]
2009-06-23 22:05 ` [Ocfs2-devel] " Arnd Bergmann
2009-06-20 8:13 ` Arnd Bergmann
2009-06-21 18:41 ` [xfs-masters] " Christoph Hellwig
2009-06-21 18:46 ` [Ocfs2-devel] " Christoph Hellwig
2009-06-21 18:41 ` Christoph Hellwig
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=200906200813.59793.arnd@arndb.de \
--to=arnd@arndb.de \
--cc=hch@infradead.org \
--cc=joel.becker@oracle.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=me@ankitjain.org \
--cc=mfasheh@suse.com \
--cc=ocfs2-devel@oss.oracle.com \
--cc=viro@zeniv.linux.org.uk \
--cc=xfs-masters@oss.sgi.com \
--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.