From: Arnd Bergmann <arnd-r2nGTMty4D4@public.gmane.org>
To: Shaohua Li <shaohua.li-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Cc: "linux-btrfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-btrfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Chris Mason <chris.mason-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org>,
Christoph Hellwig <hch-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
Andrew Morton
<akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>,
Arjan van de Ven <arjan-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
"Yan,
Zheng" <zheng.z.yan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>,
linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org
Subject: Re: [PATCH v2 1/5] add metadata_incore ioctl in vfs
Date: Tue, 4 Jan 2011 10:40:31 +0100 [thread overview]
Message-ID: <201101041040.31482.arnd@arndb.de> (raw)
In-Reply-To: <1294119632.1949.366.camel@sli10-conroe>
On Tuesday 04 January 2011 06:40:32 Shaohua Li wrote:
> +static int ioctl_metadata_incore(struct file *filp, void __user *argp)
> +{
> + struct super_block *sb = filp->f_path.dentry->d_inode->i_sb;
> + struct metadata_incore_args args;
> + struct metadata_incore_ent ent;
> + loff_t offset, last_offset = 0;
> + ssize_t size, last_size = 0;
> + __u64 __user vec_addr;
__user only makes sense on pointers. Just make this a "struct
metadata_incore_ent __user *", which will also take care of the
"sparse" warnings you get from the copy_to_user lines below.
>
> +struct metadata_incore_ent {
> + __u64 offset;
> + __u32 size;
> + __u32 unused;
> +};
> +
> +struct metadata_incore_args {
> + __u64 offset; /* offset in meta address */
> + __u64 __user vec_addr; /* vector's address */
> + __u32 vec_size; /* vector's size */
> + __u32 unused;
> +};
We usually try hard to avoid ioctls with indirect pointers
in them. The implementation is correct (most people
get this wrong), besides the extraneous __user keyword in
there.
Have you tried passing just a single metadata_incore_ent
at the ioctl and looping in user space? I would guess the
extra overhead of that would be small enough, but that might
need to be measured.
Arnd
next prev parent reply other threads:[~2011-01-04 9:40 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-01-04 5:40 [PATCH v2 1/5] add metadata_incore ioctl in vfs Shaohua Li
2011-01-04 9:40 ` Arnd Bergmann [this message]
[not found] ` <201101041040.31482.arnd-r2nGTMty4D4@public.gmane.org>
2011-01-05 2:17 ` Shaohua Li
2011-01-05 9:42 ` Arnd Bergmann
[not found] ` <201101051042.37181.arnd-r2nGTMty4D4@public.gmane.org>
2011-01-06 1:13 ` Shaohua Li
2011-01-06 7:38 ` Arnd Bergmann
[not found] ` <201101060838.49359.arnd-r2nGTMty4D4@public.gmane.org>
2011-01-06 7:45 ` Shaohua Li
2011-01-07 14:15 ` Arnd Bergmann
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=201101041040.31482.arnd@arndb.de \
--to=arnd-r2ngtmty4d4@public.gmane.org \
--cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
--cc=arjan-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
--cc=chris.mason-QHcLZuEGTsvQT0dZR+AlfA@public.gmane.org \
--cc=hch-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
--cc=linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-btrfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-fsdevel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
--cc=shaohua.li-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
--cc=zheng.z.yan-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
/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.