==== Multi-Channel $\in$ Samba ====
<[block]{samba/smbd: multi-process}
-* '''Currently:''' process $\Leftrightarrow$ TCP connection
+* '''Originally:''' process $\Leftrightarrow$ TCP connection
*<0> '''Idea:''' transfer new TCP connection to existing smbd
*<0> '''How?''' ==> use fd-passing (sendmsg/recvmsg)
*<0> '''When?'''
** ''Natural choice'': at SessionSetup (Bind)
** !Idea!: as early as possible, based on ClientGUID \\ %
==> per ClientGUID single process model
-*<0> !But!: This may not work! \frownie
+%%*<0> !But!: This may not work! \frownie
[block]>
==== Multi-Channel $\in$ Samba ====
==== Multi-Channel $\in$ Samba ====
<[block]{samba/smbd: multi-process}
-* '''Currently:''' process $\Leftrightarrow$ TCP connection
+* '''Originally:''' process $\Leftrightarrow$ TCP connection
* '''Idea:''' transfer new TCP connection to existing smbd
*<0> '''How?''' ==> use fd-passing (sendmsg/recvmsg)
*<0> '''When?'''
** ''Natural choice'': at SessionSetup (Bind)
** !Idea!: as early as possible, based on ClientGUID \\ %
==> per ClientGUID single process model
-*<0> !But!: There may be problems! ... \frownie
+%%*<0> !But!: There may be problems! ... \frownie
[block]>
}
+==== Multi-Channel $\in$ Samba ====
+
+<[block]{samba/smbd: multi-process}
+* '''Originally:''' process $\Leftrightarrow$ TCP connection
+* '''Idea:''' transfer new TCP connection to existing smbd
+* '''How?''' ==> use fd-passing (sendmsg/recvmsg)
+*<2-> '''When?'''
+** ''Natural choice'': at SessionSetup (Bind)
+** !Idea!: as early as possible, based on ClientGUID \\ %
+==> per ClientGUID single process model
+%%*<0> !But!: There may be problems! ... \frownie
+[block]>
+
+
+==== Multi-Channel $\in$ Samba : pass by ClientGUID ====
+
+<[center]
+%%<<<smb3-mc-samba_exp.png,height=.9\textheight>>>
+<<<smb3-mc-samba.png,height=.9\textheight>>>
+[center]>
+
+
+==== Multi-Channel $\in$ Samba : pass by ClientGUID ====
+
+<[block]{Wait a minute - what about performance?}
+* Single process...
+* But we use short-lived worker-pthreads for I/O ops!
+* Benchmarks and tunings still to be done.
+[block]>
+
%%%% ==== Multi-Channel $\in$ Samba ====
%%%%
%%%% <[block]{samba/smbd: multi-process}
-%%%% * '''Currently:''' process $\Leftrightarrow$ TCP connection
-%%%% * '''Idea:''' transfer new TCP connection to existing smbd
-%%%% * '''How?''' ==> use fd-passing (sendmsg/recvmsg)
-%%%% *<2-> '''When?'''
-%%%% ** ''Natural choice'': at SessionSetup (Bind)
-%%%% ** !Idea!: as early as possible, based on ClientGUID \\ %
-%%%% ==> per ClientGUID single process model
-%%%% *<0> !But!: There may be problems! ... \frownie
-%%%% [block]>
-%%%%
-%%%%
-%%%% ==== Multi-Channel $\in$ Samba : pass by ClientGUID ====
-%%%%
-%%%% <[center]
-%%%% %%<<<smb3-mc-samba_exp.png,height=.9\textheight>>>
-%%%% <<<smb3-mc-samba.png,height=.9\textheight>>>
-%%%% [center]>
-%%%%
-%%%%
-%%%% ==== Multi-Channel $\in$ Samba : pass by ClientGUID ====
-%%%%
-%%%% <[block]{Wait a minute - what about performance?}
-%%%% * Single process...
-%%%% * But we use short-lived worker-pthreads for I/O ops!
-%%%% * Benchmarks and tunings still to be done.
-%%%% [block]>
-%%%%
-%%%% ==== Multi-Channel $\in$ Samba ====
-%%%%
-%%%% <[block]{samba/smbd: multi-process}
-%%%% * '''Currently:''' process $\Leftrightarrow$ TCP connection
+%%%% * '''Orignally:''' process $\Leftrightarrow$ TCP connection
%%%% * '''Idea:''' transfer new TCP connection to existing smbd
%%%% * '''How?''' ==> use fd-passing (sendmsg/recvmsg)
%%%% * '''When?'''
# implement lease break replay [TODO]
}
-%%% ==== Multi-Channel $\in$ Samba : Status ====
-%%%
-%%% <[block]{WIP code}
-%%% * @git://git.samba.org/obnox/samba/samba-obnox.git@
-%%% * branch: @master-multi-channel-obnox@
-%%% [block]>
-
-
-==== Multi-Channel $\in$ Samba: TODOs ====
-
-* Replay lease breaks upon channel failure (server $\rightarrow$ client)
-* teach socket\_wrapper fd-passing ( ==> selftest...)
-* clustering integration (CTDB)
-
-==== Multi-Channel $\in$ Samba : Clustering/CTDB ====
-
-+<2->{
-<[block]{Special considerations}
-* channels of one session only to one node !
-* do not bind connections to CTDB public IPs (can move)!
-* ==> !add static IPs on public interfaces! \\ %
-use these for interface discovery
-[block]>
-}
-
-
==== Multi-Channel $\in$ Samba : Details from @smbXsrv.idl@ ====
%%==== @MSG\_SMBXSRV\_CONNECTION\_PASS@ ====
[block]>
+%%% ==== Multi-Channel $\in$ Samba : Status ====
+%%%
+%%% <[block]{WIP code}
+%%% * @git://git.samba.org/obnox/samba/samba-obnox.git@
+%%% * branch: @master-multi-channel-obnox@
+%%% [block]>
+
+
+==== Multi-Channel $\in$ Samba: TODOs ====
+
+* Replay lease breaks upon channel failure (server $\rightarrow$ client)
+* teach socket\_wrapper fd-passing ( ==> selftest...)
+* clustering integration (CTDB)
+
+==== Multi-Channel $\in$ Samba : Clustering/CTDB ====
+
++<2->{
+<[block]{Special considerations}
+* channels of one session only to one node !
+* do not bind connections to CTDB public IPs (can move)!
+* ==> !add static IPs on public interfaces! \\ %
+use these for interface discovery
+[block]>
+}
+
+
+
[frame]>
<[sambabg]