[RFC] async source3/rpc_server

Volker Lendecke Volker.Lendecke at SerNet.DE
Tue Apr 24 11:57:57 MDT 2012

On Tue, Apr 24, 2012 at 03:37:59PM +0200, David Disseldorp wrote:
> In order to properly implement a File Server Remote Shadow-copy Protocol
> (MS-FSRVP) RPC server, snapshot/shadow-copy operations should be handled
> asynchronously from PDU processing through to VFS request dispatch.
> Working towards this, I've made a some small changes to carry two types
> of RPC server command arrays (synchronous and asynchronous) under
> api_struct. See pull request at the bottom of this mail.
> IDLs are flagged sync or async at build time, with sync builds compiling
> into the existing interface via Pidl/Samba3/ServerNDR.pm:
>   struct api_struct_sync {
>           const char *name;
>           uint8 opnum;
>           bool (*fn) (struct pipes_struct *);
>   };
> Async builds will compile into send/recv hooks with a new
> --samba3-ndr-server-async pidl option:
>   struct api_struct_async {
>           const char *name;
>           uint8 opnum;
>           struct tevent_req *(*fn_send)(TALLOC_CTX *,
>                                         struct tevent_context *,
>                                         struct pipes_struct *);
>           NTSTATUS (*fn_recv)(struct tevent_req *);
>   };
> Existing synchronous server IDL will remain so for the time being.
> The same code path will be shared between sync and async backends
> up to the point of gen_ndr srv dispatch. i.e. api_rpcTNP for
> rpc_server/srv_pipe.c.
> Does this approach sound sane?

Yes, that looks sane to me. As fallbacks, can we
autogenerate sync/async wrappers? I have not yet fully
thought out the complete picture, but I could imagine that
we make the normal RPC server infrastructure completely
async and then for the sync backends autogenerate fake async
wrappers calling into the sync functions.


SerNet GmbH, Bahnhofsallee 1b, 37081 Göttingen
phone: +49-551-370000-0, fax: +49-551-370000-9
AG Göttingen, HRB 2816, GF: Dr. Johannes Loxen
http://www.sernet.de, mailto:kontakt at sernet.de

More information about the samba-technical mailing list