On Wed, May 5, 2010 at 12:25 AM, Tim Haley <[email protected]> wrote:
> I am sponsoring the following fast-track for Afshin Salek.  This
> proposal condenses the pair of syscalls used independently for sharing
> nfs and cifs into one syscall.  Requested binding is Micro/Patch.
>
> Template Version: @(#)sac_nextcase 1.70 03/30/10 SMI
> This information is Copyright (c) 2010, Oracle and/or its affiliates. All
> rights reserved.
> 1. Introduction
>    1.1. Project/Component Working Name:
>         Unified sharing system call
>    1.2. Name of Document Author/Supplier:
>         Author:  Afshin Salek
>    1.3  Date of This Document:
>        04 May, 2010
>
> 4. Technical Description
>
>   4.1. Details
>
> Currently, two system calls and a door are used to publish shares: the
> nfsys multi-purpose system call to export NFS shares, the sharefs system
> call to update sharetab and an smbd door to publish SMB shares.  libshare
> has to call the NFS or SMB service once per file system and then it has
> to call sharefs once per share, which results in 1000's of system calls
> to publish 1000's of shares.
>
> This is a proposal to unify all file sharing via a single system call:
> sharefs.  It is also to support of PSARC 2010/124 (libshare V2), which
> requires changes to NFS, SMB and ZFS.
>
> Publishing all shares via a single system call has several advantages:
> simplifies libshare, significantly reduces the number of system calls
> per file system and per share, and improves integration between sharetab
> and the protocol services.  Libshare will call sharefs once per file
> system (for each protocol that has something to share) with a list of
> shares and the protocol services will update sharetab by making calls
> to an in-kernel sharefs API.  There will be no user space interface to
> update sharetab directly.
>
> Having the protocol services update the sharetab file has two advantages
> for libshare and sharefs: it significantly reduces the number of system
> calls, as explained above, and neither libshare nor sharefs need to
> perform per share error handling.  Each protocol service handles its own
> [un]publish operations and is responsible for updating sharetab as
> appropriate.  There is no need for the protocol services to return a list
> of individual share results.
>
> The sharefs system call would be changed to accept: a protocol discriminator
> (NFS or SMB), an operation (publish or unpublish) and an opaque pointer to
> share data.  The opaque data passes transparently through sharefs between
> the protocol-specific libshare plugin and the protocol service per PSARC
> 2010/124.  The new prototype for sharefs would be of the form:
>
>    int sharefs(sharefs_proto_t proto, sharefs_op_t opcode,
>        void *data, size_t datalen);

Please do me a small favour and add a flags field, e.g. turn this
prototype into:
-- snip --
   int sharefs(sharefs_proto_t proto, sharefs_op_t opcode,
       void *data, size_t datalen, uint32_t flags);
-- snip --

The idea is that future consumers (e.g. AFS etc.) can use this for
_easy_ extensions without having to change this API again (and please
don't say this is not needed - see |fork()| vs. |forkx()|).

----

Bye,
Roland

-- 
  __ .  . __
 (o.\ \/ /.o) [email protected]
  \__\/\/__/  MPEG specialist, C&&JAVA&&Sun&&Unix programmer
  /O /==\ O\  TEL +49 641 3992797
 (;O/ \/ \O;)
_______________________________________________
opensolaris-arc mailing list
[email protected]

Reply via email to