All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andi Kleen <andi@firstfloor.org>
To: Sage Weil <sage@newdream.net>
Cc: Andi Kleen <andi@firstfloor.org>,
	linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 17/19] ceph: ioctls
Date: Thu, 23 Jul 2009 08:24:12 +0200	[thread overview]
Message-ID: <20090723062412.GA19207@basil.fritz.box> (raw)
In-Reply-To: <Pine.LNX.4.64.0907221636260.8312@cobra.newdream.net>

On Wed, Jul 22, 2009 at 04:52:40PM -0700, Sage Weil wrote:
> On Thu, 23 Jul 2009, Andi Kleen wrote:
> > Sage Weil <sage@newdream.net> writes:
> > 
> > > A few Ceph ioctls for getting and setting file layout (striping)
> > > parameters.
> > 
> > It would be good if you posted manpages for these ioctls
> > so that the interface can be reviewed. After all
> > that's intended to be used by applications, isn't it?
> 
> Is there some existing manpage I might use as a reference?  e.g., an XFS 
> ioctl manpage or something similar?

For documenting an ioctl? The tcp(7) manpages perhaps

> I'm also happy to replace these ioctls with a virtual xattr interface 
> along the lines of what Andreas proposed.  That would make it much easier 
> to maintain compatibility if the support layout parameters changes 
> going forward.

I personally don't have a problem with them being ioctls, assuming
the interface is relatively sane. I haven't reviewed that 
in detail, mostly because it's in a different patch (but it shouldn't be)

That's where the man pages would come in.

There used to be a strong "all ioctls are evil" ideology camp a few years back,
but I think those people definitely lost a lot of influence recently
and we're back to a pragmatic "where it makes sense" position.
 
> 
> > There don't seem to be compat ioctl handlers?
> 
> Oops,

Well the question is if it works, e.g. if the layout
is the same 32bit and 64bit. From a quick look the
structure seems to only contain __s32 so it might be ok.

I'm not sure what __attribute__((packed)) will do over all
the obscure architectures though.

What I find more suspicious is that it's the direct network
data structure. Presumably that's in a defined endian?
So that means the application would already need to 
change to network endian order at the ioctl level?

That seems wrong if true. I think defining
a ioctl directly based on a network protocol header is 
likely a bad idea.

> 
> diff --git a/src/kernel/file.c b/src/kernel/file.c
> index fbf02c3..fbb5f94 100644
> --- a/src/kernel/file.c
> +++ b/src/kernel/file.c
> @@ -810,5 +810,8 @@ const struct file_operations ceph_file_fops = {
>         .splice_read = generic_file_splice_read,
>         .splice_write = generic_file_splice_write,
>         .unlocked_ioctl = ceph_ioctl,
> +#ifdef CONFIG_COMPAT
> +       .compat_ioctl   = ceph_ioctl,
> +#endif

You don't need the ifdef.

> > How should the application use that if the include file is in fs/ceph?
> > Should be in include/linux I guess
> > 
> > Also this file should define all the types needed for the interface,
> > especialy struct ceph_file_layout, but no kernel internal types.
> 
> The type is defined in ceph_fs.h, which is shared/synced with the userland 
> code.  It's not specific to the ioctl interface.

I don't think applications should include the whole networking
protocol to use an ioctl. You should split that.

> 
> My understanding (IIRC after reading comments from a recent fs merge) was 
> that these sorts of headers normally shouldn't go in include/linux, since 
> any userland (admin) progs will have their own version anyway while being 
> built, and may not be synced with the installed kernel. 

I don't think that's the normal case, no. ioctls are usually 
gotten from include/linux still, although a preprocessed
version of it (mostly unifdefed and the include file has to be 
especially exported)

-Andi
-- 
ak@linux.intel.com -- Speaking for myself only.

  reply	other threads:[~2009-07-23  6:24 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-22 19:51 [PATCH 00/19] ceph: Ceph distributed file system client v0.11 Sage Weil
2009-07-22 19:51 ` [PATCH 01/19] ceph: documentation Sage Weil
2009-07-22 19:51   ` [PATCH 02/19] ceph: on-wire types Sage Weil
2009-07-22 19:51     ` [PATCH 03/19] ceph: client types Sage Weil
2009-07-22 19:51       ` [PATCH 04/19] ceph: super.c Sage Weil
2009-07-22 19:51         ` [PATCH 05/19] ceph: inode operations Sage Weil
2009-07-22 19:51           ` [PATCH 06/19] ceph: directory operations Sage Weil
2009-07-22 19:51             ` [PATCH 07/19] ceph: file operations Sage Weil
2009-07-22 19:51               ` [PATCH 08/19] ceph: address space operations Sage Weil
2009-07-22 19:51                 ` [PATCH 09/19] ceph: MDS client Sage Weil
2009-07-22 19:51                   ` [PATCH 10/19] ceph: OSD client Sage Weil
2009-07-22 19:51                     ` [PATCH 11/19] ceph: CRUSH mapping algorithm Sage Weil
2009-07-22 19:51                       ` [PATCH 12/19] ceph: monitor client Sage Weil
2009-07-22 19:51                         ` [PATCH 13/19] ceph: capability management Sage Weil
2009-07-22 19:51                           ` [PATCH 14/19] ceph: snapshot management Sage Weil
2009-07-22 19:51                             ` [PATCH 15/19] ceph: messenger library Sage Weil
2009-07-22 19:51                               ` [PATCH 16/19] ceph: nfs re-export support Sage Weil
2009-07-22 19:51                                 ` [PATCH 17/19] ceph: ioctls Sage Weil
2009-07-22 19:51                                   ` [PATCH 18/19] ceph: debugfs Sage Weil
2009-07-22 19:51                                     ` [PATCH 19/19] ceph: Kconfig, Makefile Sage Weil
2009-07-25  5:31                                     ` [PATCH 18/19] ceph: debugfs Greg KH
2009-07-27 17:06                                       ` Sage Weil
2009-07-22 22:39                                   ` [PATCH 17/19] ceph: ioctls Andi Kleen
2009-07-22 23:52                                     ` Sage Weil
2009-07-23  6:24                                       ` Andi Kleen [this message]
2009-07-23 18:42                                         ` Sage Weil
2009-07-23 10:25                 ` [PATCH 08/19] ceph: address space operations Andi Kleen
2009-07-23 18:22                   ` Sage Weil
2009-07-23 19:16                     ` Andi Kleen
2009-07-24  4:48                       ` Sage Weil
2009-07-23 19:17                     ` Andi Kleen
2009-07-23 18:26                   ` Sage Weil
2009-07-23 18:47                     ` Trond Myklebust
2009-07-24  4:44                       ` Sage Weil
2009-07-24  6:56                         ` Andi Kleen
2009-07-24 16:52                           ` Sage Weil
2009-07-24 19:40                         ` J. Bruce Fields
  -- strict thread matches above, loose matches on Subject: below --
2009-08-05 22:30 [PATCH 00/19] ceph distributed file system client Sage Weil
2009-08-05 22:30 ` [PATCH 01/19] ceph: documentation Sage Weil
2009-08-05 22:30   ` [PATCH 02/19] ceph: on-wire types Sage Weil
2009-08-05 22:30     ` [PATCH 03/19] ceph: client types Sage Weil
2009-08-05 22:30       ` [PATCH 04/19] ceph: super.c Sage Weil
2009-08-05 22:30         ` [PATCH 05/19] ceph: inode operations Sage Weil
2009-08-05 22:30           ` [PATCH 06/19] ceph: directory operations Sage Weil
2009-08-05 22:30             ` [PATCH 07/19] ceph: file operations Sage Weil
2009-08-05 22:30               ` [PATCH 08/19] ceph: address space operations Sage Weil
2009-08-05 22:30                 ` [PATCH 09/19] ceph: MDS client Sage Weil
2009-08-05 22:30                   ` [PATCH 10/19] ceph: OSD client Sage Weil
2009-08-05 22:30                     ` [PATCH 11/19] ceph: CRUSH mapping algorithm Sage Weil
2009-08-05 22:30                       ` [PATCH 12/19] ceph: monitor client Sage Weil
2009-08-05 22:30                         ` [PATCH 13/19] ceph: capability management Sage Weil
2009-08-05 22:30                           ` [PATCH 14/19] ceph: snapshot management Sage Weil
2009-08-05 22:30                             ` [PATCH 15/19] ceph: messenger library Sage Weil
2009-08-05 22:30                               ` [PATCH 16/19] ceph: nfs re-export support Sage Weil
2009-08-05 22:30                                 ` [PATCH 17/19] ceph: ioctls Sage Weil
2009-08-06 15:41                                   ` Andi Kleen
2009-08-06 17:04                                     ` Sage Weil
2008-11-14  0:55 [PATCH 00/19] ceph: Ceph distributed file system client Sage Weil
2008-11-14  0:56 ` [PATCH 01/19] ceph: documentation Sage Weil
2008-11-14  0:56   ` [PATCH 02/19] ceph: on-wire types Sage Weil
2008-11-14  0:56     ` [PATCH 03/19] ceph: client types Sage Weil
2008-11-14  0:56       ` [PATCH 04/19] ceph: super.c Sage Weil
2008-11-14  0:56         ` [PATCH 05/19] ceph: inode operations Sage Weil
2008-11-14  0:56           ` [PATCH 06/19] ceph: directory operations Sage Weil
2008-11-14  0:56             ` [PATCH 07/19] ceph: file operations Sage Weil
2008-11-14  0:56               ` [PATCH 08/19] ceph: address space operations Sage Weil
2008-11-14  0:56                 ` [PATCH 09/19] ceph: MDS client Sage Weil
2008-11-14  0:56                   ` [PATCH 10/19] ceph: OSD client Sage Weil
2008-11-14  0:56                     ` [PATCH 11/19] ceph: CRUSH mapping algorithm Sage Weil
2008-11-14  0:56                       ` [PATCH 12/19] ceph: monitor client Sage Weil
2008-11-14  0:56                         ` [PATCH 13/19] ceph: capability management Sage Weil
2008-11-14  0:56                           ` [PATCH 14/19] ceph: snapshot management Sage Weil
2008-11-14  0:56                             ` [PATCH 15/19] ceph: messenger library Sage Weil
2008-11-14  0:56                               ` [PATCH 16/19] ceph: nfs re-export support Sage Weil
2008-11-14  0:56                                 ` [PATCH 17/19] ceph: ioctls Sage Weil

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=20090723062412.GA19207@basil.fritz.box \
    --to=andi@firstfloor.org \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sage@newdream.net \
    /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.