From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christoph Hellwig Subject: Re: [PATCH -V4 6/6] x86: Add new syscalls for x86_64 Date: Mon, 26 Apr 2010 05:53:11 -0400 Message-ID: <20100426095311.GB23020@infradead.org> References: <1272022715-11716-1-git-send-email-aneesh.kumar@linux.vnet.ibm.com> <1272022715-11716-7-git-send-email-aneesh.kumar@linux.vnet.ibm.com> <7FF35E15-2BA8-4EEB-8F48-13E92E510947@sun.com> <87hbmz1j4l.fsf@linux.vnet.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Andreas Dilger , hch@infradead.org, viro@zeniv.linux.org.uk, corbet@lwn.net, serue@us.ibm.com, linux-fsdevel@vger.kernel.org, sfrench@us.ibm.com To: "Aneesh Kumar K. V" Return-path: Received: from bombadil.infradead.org ([18.85.46.34]:38188 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753387Ab0DZJxN (ORCPT ); Mon, 26 Apr 2010 05:53:13 -0400 Content-Disposition: inline In-Reply-To: <87hbmz1j4l.fsf@linux.vnet.ibm.com> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: On Sun, Apr 25, 2010 at 11:58:58PM +0530, Aneesh Kumar K. V wrote: > On Fri, 23 Apr 2010 16:09:07 -0600, Andreas Dilger wrote: > > On 2010-04-23, at 05:38, Aneesh Kumar K.V wrote: > > > Add necessary compat syscall support > > > > Maybe I'm missing something, but why would we add a new syscall that immediately needs a compat interface? I thought the kernel would simply return the packed file handle to userspace, instead of returning a pointer? > > > > > +struct compat_file_handle { > > > + int handle_size; > > > + int handle_type; > > > + /* File system identifier */ > > > + struct uuid fsid; > > > + /* file identifier */ > > > + compat_uptr_t f_handle; > > > +}; > > > > > I want to make sure we put uuid part of the fs as a separate member. I > guess we could avoid compat interface if we define the syscall as > > open_by_handle(struct file_handle *handle, int size, int flags); > > But the handle in the above case will not be usable if the file handle > returned is too big to be usable by a cluster file system because of the > UUID part of handle. Having uuid as a seperate member allows such userspace > to generate a smaller unique identifier for the filesystem and still use > the void *f_handle part of the struct file_handle. > > With struct file_handle since we have void * usage i guess we would need > a compat interface. You can juse make the handle a char f_handle[0]; member and the structure variable size.