[SCM] Samba Shared Repository - branch v4-0-stable updated

Karolin Seeger kseeger at samba.org
Tue Jul 2 01:16:58 MDT 2013


The branch, v4-0-stable has been updated
       via  5e3a301 VERSION: Disable git snapshots for the 4.0.7 release.
       via  67a77db WHATSNEW: Add release notes for Samba 4.0.7.
       via  cc13903 torture: Add tests for LDAP substring search with no strings provided
       via  51f19c4 libcli/ldap: Cope with substring match with no chunks in ldap_push_filter
       via  980ecbf ldb: bump version to allow a depencency on the substring crash fix
       via  1650e8a ldb: Cope with substring match with no chunks in ldb_filter_from_tree
       via  df6574c ldb: Ensure not to segfault on a filter such as (mail=)
       via  b67c906 heimdal_build: Add missing dep on samba4kgetcred
       via  4b25860 docs: Avoid mentioning a possibly misleading option.
       via  a46a6be tevent: Fix Coverity ID 989236 Operands don't affect result
       via  45ba921 Bug 8997: change libreplace GPL source to LGPL
       via  897bfd1 s4-dfs_server: check for netbios aliases in ad_get_referrals (bug #9947)
       via  57a6c8f dns: Support larger queries when asking forwarder
       via  81539da idl: Add support for parsing OPT records
       via  9328284 When message-type is drvupgrade, MSG_DEBUG should be replaced with MSG_PRINTER_DRVUPGRADE.
       via  865765c Check for WRITE_ACCESS on the file before overriding an EACCESS.
       via  e90f140 Ensure we don't try the open_file_fchmod() if we can't write to the file.
       via  02a9d78 Remove indentation around code wrapped by unneeded CAN_WRITE.
       via  7391cae Add early return in file_set_dosmode() on a read only share.
       via  d0ec11d BUG 9881: Check for system libtevent.
       via  1d610ce s4:winbind: don't leak libnet_context into the main event context (bug #9929)
       via  62e25dc Fix bug 9900: is_printer_published GUID retrieval
       via  60bb8f9 printing: explicitly clear PUBLISHED attribute
       via  6736784 dns: Delete dnsNode objects when they are empty
       via  1a1e445 dns: Fix allocation of txt_record in txt record tests
       via  a2814d3 dns: more debug debug options in the tests
       via  5a2d041 winbind4: Fix bug 9832 -- talloc use after free
       via  d4cd828 waf: build PIEs if supported by the compiler
       via  b4378f1 waf: build position independent executables
       via  097ec58 waf: add --with[out]-pie configure arguments
       via  0996e95 build: Add missing new line to replaced python shebang line. (Fix bug #9909)
       via  2aee249 build: Install smbtar in waf build
       via  06228ec build: Blacklist the release-4-0-0 provision as well
       via  1100bf2 build: Do not set PATH in install_with_python now we set $PYTHON
       via  7f88d81 build: Rework BSD_STYLE_STATVFS check to match autoconf build
       via  f27239b lib/replace: Set BROKEN_STRNLEN and BROKEN_STRNDUP on all AIX
       via  85db5bf docs: Remove all references to testprns
       via  b54aed1 docs: Fix small errors in TOSHARG-Compiling
       via  68c5915 docs: Remove TOSHARG-HighAvailability which is made obsolete by CTDB
       via  5bbcf09 docs: Remove out of date and unmaintained Speed page from the HOWTO
       via  07073fb dns: Add support for MX queries
       via  46e82a2 More generic check for OpenBSD platform
       via  9b1fac4 docs: mention AD prerequirements for using idmap_ad
       via  f6f3849 winbind/idmap_ad: be verbose about the user that we fail to map
       via  27a3cab s3:lib/server_mutex: open mutex.tdb with CLEAR_IF_FIRST
       via  671943a s3-rpc_server: Ensure we are root when starting and usiing gensec
       via  c497442 VERSION: Bump version number up to 4.0.7...
      from  4800b9f VERSION: Disable git snapshots for the 4.0.6 release.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v4-0-stable


- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 VERSION                                            |    2 +-
 WHATSNEW.txt                                       |  112 +++++-
 buildtools/wafsamba/samba_autoconf.py              |    4 +-
 buildtools/wafsamba/wafsamba.py                    |   15 +-
 dfs_server/dfs_server_ad.c                         |   35 ++
 docs-xml/Samba3-HOWTO/TOSHARG-Compiling.xml        |    6 +-
 docs-xml/Samba3-HOWTO/TOSHARG-HighAvailability.xml |  500 --------------------
 docs-xml/Samba3-HOWTO/TOSHARG-Speed.xml            |  327 -------------
 docs-xml/Samba3-HOWTO/index.xml                    |    4 -
 docs-xml/manpages/idmap_ad.8.xml                   |    9 +-
 docs-xml/manpages/nmbd.8.xml                       |    1 -
 docs-xml/manpages/smb.conf.5.xml                   |    1 -
 docs-xml/manpages/smbd.8.xml                       |    1 -
 docs-xml/smbdotconf/domain/allowdnsupdates.xml     |    4 +-
 docs-xml/using_samba/appd.xml                      |   18 -
 docs-xml/using_samba/ch01.xml                      |    6 -
 docs-xml/using_samba/ch07.xml                      |    8 -
 examples/tridge/smb.conf                           |    8 -
 install_with_python.sh                             |    2 -
 lib/ldb/ABI/{ldb-1.1.14.sigs => ldb-1.1.16.sigs}   |    0
 ...ldb-util-1.1.10.sigs => pyldb-util-1.1.16.sigs} |    0
 lib/ldb/common/ldb_match.c                         |    5 +
 lib/ldb/common/ldb_parse.c                         |    2 +-
 lib/ldb/wscript                                    |    4 +-
 lib/replace/getifaddrs.c                           |   28 +-
 lib/replace/socket.c                               |   22 +-
 lib/replace/test/getifaddrs.c                      |   24 +-
 lib/replace/wscript                                |   13 +
 lib/tevent/tevent_poll.c                           |    2 +-
 lib/util/wscript_configure                         |   22 +-
 libcli/ldap/ldap_message.c                         |   41 +-
 librpc/idl/dns.idl                                 |    8 +
 python/samba/tests/dns.py                          |  206 ++++++++-
 source3/Makefile.in                                |  208 +++++----
 source3/configure.in                               |   42 ++-
 source3/include/nt_printing.h                      |    6 +-
 source3/lib/server_mutex.c                         |    5 +-
 source3/printing/nt_printing_ads.c                 |  131 ++++--
 source3/rpc_server/dcesrv_auth_generic.c           |   38 ++-
 source3/rpc_server/spoolss/srv_spoolss_nt.c        |   40 ++-
 source3/script/wscript_build                       |    7 +
 source3/smbd/dosmode.c                             |   57 ++-
 source3/smbd/server_reload.c                       |    2 +-
 source3/utils/smbcontrol.c                         |    2 +-
 source3/winbindd/idmap_ad.c                        |    5 +-
 source3/wscript_build                              |    1 +
 source4/dns_server/dns_query.c                     |   21 +
 source4/dns_server/dns_server.c                    |    2 +
 source4/dns_server/dns_server.h                    |    4 +
 source4/dns_server/dns_utils.c                     |   29 ++-
 source4/heimdal_build/wscript_build                |    2 +-
 source4/torture/ldap/basic.c                       |  110 +++++
 source4/winbind/wb_init_domain.c                   |    2 +
 source4/winbind/wb_server.c                        |    2 +-
 wscript                                            |   21 +-
 55 files changed, 1017 insertions(+), 1160 deletions(-)
 delete mode 100644 docs-xml/Samba3-HOWTO/TOSHARG-HighAvailability.xml
 delete mode 100644 docs-xml/Samba3-HOWTO/TOSHARG-Speed.xml
 copy lib/ldb/ABI/{ldb-1.1.14.sigs => ldb-1.1.16.sigs} (100%)
 copy lib/ldb/ABI/{pyldb-util-1.1.10.sigs => pyldb-util-1.1.16.sigs} (100%)
 create mode 100644 source3/script/wscript_build


Changeset truncated at 500 lines:

diff --git a/VERSION b/VERSION
index 3ed42f6..e98b7e8 100644
--- a/VERSION
+++ b/VERSION
@@ -25,7 +25,7 @@
 ########################################################
 SAMBA_VERSION_MAJOR=4
 SAMBA_VERSION_MINOR=0
-SAMBA_VERSION_RELEASE=6
+SAMBA_VERSION_RELEASE=7
 
 ########################################################
 # If a official release has a serious bug              #
diff --git a/WHATSNEW.txt b/WHATSNEW.txt
index c8f08da..6ab15c8 100644
--- a/WHATSNEW.txt
+++ b/WHATSNEW.txt
@@ -1,4 +1,112 @@
                    =============================
+                   Release Notes for Samba 4.0.7
+                           July 2, 2013
+                   =============================
+
+
+This is is the latest stable release of Samba 4.0.
+
+Major enhancements in Samba 4.0.7 include:
+
+o  Fix a core dump with invalid lock order while opening/editing
+   or copying MS files (bug #9794).
+o  Fix crash bug from search of mail= (bug #9967).
+o  winbind4: talloc use after free (bug #9832).
+
+
+Changes since 4.0.6:
+--------------------
+
+o   Michael Adam <obnox at samba.org>
+    * BUG 9909: build: Add missing new line to replaced python shebang line.
+
+
+o   Jeremy Allison <jra at samba.org>
+    * BUG 9794: Fix a core dump with invalid lock order while opening/editing
+      or copying MS files.
+
+
+o   Andrew Bartlett <abartlet at samba.org>
+    * BUG 9465: s3-rpc_server: Ensure we are root when starting and using
+      gensec.
+    * BUG 9906: Doc fixes for 4.0.
+    * BUG 9907: Build fixes for 4.0 found during autoconf or debian packaging
+      work.
+    * BUG 9967: Fix crash bug from search of mail=.
+    * BUG 9968: Fix build with system Heimdal of samba4kgetcred.
+
+
+o   Björn Baumbach <bb at sernet.de>
+    * BUG 9947: Check for netbios aliases in ad_get_referrals.
+
+
+o   Kai Blin <kai at samba.org>
+    * BUG 9485: Add support for MX queries.
+    * BUG 9559: dns: Delete dnsNode objects when they are empty.
+    * BUG 9632: dns: Support larger queries when asking forwarder.
+
+
+o   David Disseldorp <ddiss at samba.org>
+    * BUG 8997: Change libreplace GPL source to LGPL.
+    * BUG 9900: is_printer_published GUID retrieval.
+    * BUG 9910: PIE builds not supported.
+
+
+o   Peng Haitao <penght at cn.fujitsu.com>
+    * BUG 9941: Fix a bug of drvupgrade of smbcontrol.
+
+
+o   Björn Jacke <bj at sernet.de>
+    * BUG 9880: Use of wrong RFC2307 primary group field.
+
+
+o   Volker Lendecke <vl at samba.org>
+    * BUG 9832: winbind4: talloc use after free.
+    * BUG 9953: Fix tevent_poll on 32-bit machines (Coverity ID 989236).
+
+
+o   Stefan Metzmacher <metze at samba.org>
+    * BUG 9805: s3:lib/server_mutex: Open mutex.tdb with CLEAR_IF_FIRST.
+    * BUG 9929: s4:winbind: Don't leak libnet_context into the main event
+      context.
+
+
+o   Andreas Schneider <asn at samba.org>
+    * BUG 9881: Check for system libtevent.
+
+
+o   Michael Wood <esiotrot at gmail.com>
+    * BUG 9964: docs: Avoid mentioning a possibly misleading option.
+
+
+o   Vadim Zhukov <persgray at gmail.com>
+    * BUG 9888: More generic check for OpenBSD platform.
+
+
+######################################################################
+Reporting bugs & Development Discussion
+#######################################
+
+Please discuss this release on the samba-technical mailing list or by
+joining the #samba-technical IRC channel on irc.freenode.net.
+
+If you do report problems then please try to send high quality
+feedback. If you don't provide vital information to help us track down
+the problem then you will probably be ignored.  All bug reports should
+be filed under the Samba 4.0 product in the project's Bugzilla
+database (https://bugzilla.samba.org/).
+
+
+======================================================================
+== Our Code, Our Bugs, Our Responsibility.
+== The Samba Team
+======================================================================
+
+
+Release notes for older releases follow:
+----------------------------------------
+
+                   =============================
                    Release Notes for Samba 4.0.6
                            May 21, 2013
                    =============================
@@ -96,8 +204,8 @@ database (https://bugzilla.samba.org/).
 ======================================================================
 
 
-Release notes for older releases follow:
-----------------------------------------
+----------------------------------------------------------------------
+
 
                    =============================
                    Release Notes for Samba 4.0.5
diff --git a/buildtools/wafsamba/samba_autoconf.py b/buildtools/wafsamba/samba_autoconf.py
index 65c66f3..fe110bd 100644
--- a/buildtools/wafsamba/samba_autoconf.py
+++ b/buildtools/wafsamba/samba_autoconf.py
@@ -776,9 +776,9 @@ def SETUP_CONFIGURE_CACHE(conf, enable):
 def SAMBA_CHECK_UNDEFINED_SYMBOL_FLAGS(conf):
     # we don't want any libraries or modules to rely on runtime
     # resolution of symbols
-    if sys.platform != "openbsd4" and sys.platform != "openbsd5":
+    if not sys.platform.startswith("openbsd"):
         conf.env.undefined_ldflags = conf.ADD_LDFLAGS('-Wl,-no-undefined', testflags=True)
 
-    if sys.platform != "openbsd4" and sys.platform != "openbsd5" and conf.env.undefined_ignore_ldflags == []:
+    if not sys.platform.startswith("openbsd") and conf.env.undefined_ignore_ldflags == []:
         if conf.CHECK_LDFLAGS(['-undefined', 'dynamic_lookup']):
             conf.env.undefined_ignore_ldflags = ['-undefined', 'dynamic_lookup']
diff --git a/buildtools/wafsamba/wafsamba.py b/buildtools/wafsamba/wafsamba.py
index 3559cc1..47393ad 100644
--- a/buildtools/wafsamba/wafsamba.py
+++ b/buildtools/wafsamba/wafsamba.py
@@ -342,6 +342,13 @@ def SAMBA_BINARY(bld, binname, source,
     else:
         subsystem_group = group
 
+    # only specify PIE flags for binaries
+    pie_cflags = cflags
+    pie_ldflags = TO_LIST(ldflags)
+    if bld.env['ENABLE_PIE'] == True:
+        pie_cflags += ' -fPIE'
+        pie_ldflags.extend(TO_LIST('-pie'))
+
     # first create a target for building the object files for this binary
     # by separating in this way, we avoid recompiling the C files
     # separately for the install binary and the build binary
@@ -349,7 +356,7 @@ def SAMBA_BINARY(bld, binname, source,
                         source         = source,
                         deps           = deps,
                         includes       = includes,
-                        cflags         = cflags,
+                        cflags         = pie_cflags,
                         group          = subsystem_group,
                         autoproto      = autoproto,
                         subsystem_name = subsystem_name,
@@ -379,7 +386,7 @@ def SAMBA_BINARY(bld, binname, source,
         install_path   = None,
         samba_inst_path= install_path,
         samba_install  = install,
-        samba_ldflags  = TO_LIST(ldflags)
+        samba_ldflags  = pie_ldflags
         )
 
     if manpages is not None and 'XSLTPROC_MANPAGES' in bld.env and bld.env['XSLTPROC_MANPAGES']:
@@ -699,9 +706,9 @@ sys.path.insert(1, "%s")""" % (task.env["PYTHONARCHDIR"], task.env["PYTHONDIR"])
     shebang = None
 
     if task.env["PYTHON"][0] == "/":
-        replacement_shebang = "#!%s" % task.env["PYTHON"]
+        replacement_shebang = "#!%s\n" % task.env["PYTHON"]
     else:
-        replacement_shebang = "#!/usr/bin/env %s" % task.env["PYTHON"]
+        replacement_shebang = "#!/usr/bin/env %s\n" % task.env["PYTHON"]
 
     installed_location=task.outputs[0].bldpath(task.env)
     source_file = open(task.inputs[0].srcpath(task.env))
diff --git a/dfs_server/dfs_server_ad.c b/dfs_server/dfs_server_ad.c
index ceabe05..8fa143d 100644
--- a/dfs_server/dfs_server_ad.c
+++ b/dfs_server/dfs_server_ad.c
@@ -751,6 +751,7 @@ NTSTATUS dfs_server_ad_get_referrals(struct loadparm_context *lp_ctx,
 	const char *dns_domain;
 	const char *netbios_name;
 	const char *dns_name;
+	const char **netbios_aliases;
 
 	if (!lpcfg_host_msdfs(lp_ctx)) {
 		return NT_STATUS_FS_DRIVER_REQUIRED;
@@ -827,6 +828,40 @@ NTSTATUS dfs_server_ad_get_referrals(struct loadparm_context *lp_ctx,
 		return NT_STATUS_NOT_FOUND;
 	}
 
+	netbios_aliases = lpcfg_netbios_aliases(lp_ctx);
+	while (netbios_aliases && *netbios_aliases) {
+		const char *netbios_alias = *netbios_aliases;
+		char *dns_alias;
+		int cmp;
+
+		cmp = strcasecmp_m(server_name, netbios_alias);
+		if (cmp == 0) {
+			/*
+			 * If it is not domain related do not
+			 * handle it here.
+			 */
+			return NT_STATUS_NOT_FOUND;
+		}
+
+		dns_alias = talloc_asprintf(r, "%s.%s",
+					    netbios_alias,
+					    dns_domain);
+		if (dns_alias == NULL) {
+			return NT_STATUS_NO_MEMORY;
+		}
+
+		cmp = strcasecmp_m(server_name, dns_alias);
+		talloc_free(dns_alias);
+		if (cmp == 0) {
+			/*
+			 * If it is not domain related do not
+			 * handle it here.
+			 */
+			return NT_STATUS_NOT_FOUND;
+		}
+		netbios_aliases++;
+	}
+
 	if ((strcasecmp_m(server_name, netbios_domain) != 0) &&
 	    (strcasecmp_m(server_name, dns_domain) != 0)) {
 		/*
diff --git a/docs-xml/Samba3-HOWTO/TOSHARG-Compiling.xml b/docs-xml/Samba3-HOWTO/TOSHARG-Compiling.xml
index ac866a8..3a2b729 100644
--- a/docs-xml/Samba3-HOWTO/TOSHARG-Compiling.xml
+++ b/docs-xml/Samba3-HOWTO/TOSHARG-Compiling.xml
@@ -119,7 +119,7 @@ gpg: BAD signature from <quote>Samba Distribution Verification Key</quote>
 	<para>
 	<indexterm><primary>configure</primary></indexterm>
 	To build the binaries, run the program <userinput>./configure
-	</userinput> in the top level director of the source tree. This should automatically 
+	</userinput> in the top level directory of the source tree. This should automatically
 	configure Samba for your operating system. If you have unusual 
 	needs, then you may wish to first run:
 <screen>
@@ -177,7 +177,7 @@ gpg: BAD signature from <quote>Samba Distribution Verification Key</quote>
 
 	<para>
 	After you run configure, make sure that the 
-	<filename>bin/include/config.h</filename> it generates contain lines like this:
+	<filename>bin/default/include/config.h</filename> it generates contain lines like this:
 <programlisting>
 #define HAVE_KRB5 1
 #define HAVE_LDAP 1
@@ -186,7 +186,7 @@ gpg: BAD signature from <quote>Samba Distribution Verification Key</quote>
 
 	<para>
 	If it does not, configure did not find your KRB5 libraries or
-	your LDAP libraries. Look in <filename>config.log</filename> to figure
+	your LDAP libraries. Look in <filename>bin/config.log</filename> to figure
 	out why and fix it.
 	</para>
 
diff --git a/docs-xml/Samba3-HOWTO/TOSHARG-HighAvailability.xml b/docs-xml/Samba3-HOWTO/TOSHARG-HighAvailability.xml
deleted file mode 100644
index 1ce81d4..0000000
--- a/docs-xml/Samba3-HOWTO/TOSHARG-HighAvailability.xml
+++ /dev/null
@@ -1,500 +0,0 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!DOCTYPE chapter PUBLIC "-//Samba-Team//DTD DocBook V4.2-Based Variant V1.0//EN" "http://www.samba.org/samba/DTD/samba-doc">
-<chapter id="SambaHA">
-<chapterinfo>
-	&author.jht;
-	&author.jeremy;
-</chapterinfo>
-
-<title>High Availability</title>
-
-<sect1>
-<title>Features and Benefits</title>
-
-<para>
-<indexterm><primary>availability</primary></indexterm>
-<indexterm><primary>intolerance</primary></indexterm>
-<indexterm><primary>vital task</primary></indexterm>
-Network administrators are often concerned about the availability of file and print
-services. Network users are inclined toward intolerance of the services they depend
-on to perform vital task responsibilities.
-</para>
-
-<para>
-A sign in a computer room served to remind staff of their responsibilities. It read:
-</para>
-
-<blockquote>
-<para>
-<indexterm><primary>fail</primary></indexterm>
-<indexterm><primary>managed by humans</primary></indexterm>
-<indexterm><primary>economically wise</primary></indexterm>
-<indexterm><primary>anticipate failure</primary></indexterm>
-All humans fail, in both great and small ways we fail continually. Machines fail too.
-Computers are machines that are managed by humans, the fallout from failure
-can be spectacular. Your responsibility is to deal with failure, to anticipate it
-and to eliminate it as far as is humanly and economically wise to achieve.
-Are your actions part of the problem or part of the solution?
-</para>
-</blockquote>
-
-<para>
-If we are to deal with failure in a planned and productive manner, then first we must
-understand the problem. That is the purpose of this chapter.
-</para>
-
-<para>
-<indexterm><primary>high availability</primary></indexterm>
-<indexterm><primary>CIFS/SMB</primary></indexterm>
-<indexterm><primary>state of knowledge</primary></indexterm>
-Parenthetically, in the following discussion there are seeds of information on how to
-provision a network infrastructure against failure. Our purpose here is not to provide
-a lengthy dissertation on the subject of high availability. Additionally, we have made
-a conscious decision to not provide detailed working examples of high availability
-solutions; instead we present an overview of the issues in the hope that someone will
-rise to the challenge of providing a detailed document that is focused purely on
-presentation of the current state of knowledge and practice in high availability as it
-applies to the deployment of Samba and other CIFS/SMB technologies.
-</para>
-
-</sect1>
-
-<sect1>
-<title>Technical Discussion</title>
-
-<para>
-<indexterm><primary>SambaXP conference</primary></indexterm>
-<indexterm><primary>Germany</primary></indexterm>
-<indexterm><primary>inspired structure</primary></indexterm>
-The following summary was part of a presentation by Jeremy Allison at the SambaXP 2003
-conference that was held at Goettingen, Germany, in April 2003. Material has been added
-from other sources, but it was Jeremy who inspired the structure that follows.
-</para>
-
-	<sect2>
-	<title>The Ultimate Goal</title>
-
-	<para>
-<indexterm><primary>clustering technologies</primary></indexterm>
-<indexterm><primary>affordable power</primary></indexterm>
-<indexterm><primary>unstoppable services</primary></indexterm>
-	All clustering technologies aim to achieve one or more of the following:
-	</para>
-
-	<itemizedlist>
-		<listitem><para>Obtain the maximum affordable computational power.</para></listitem>
-		<listitem><para>Obtain faster program execution.</para></listitem>
-		<listitem><para>Deliver unstoppable services.</para></listitem>
-		<listitem><para>Avert points of failure.</para></listitem>
-		<listitem><para>Exact most effective utilization of resources.</para></listitem>
-	</itemizedlist>
-
-	<para>
-	A clustered file server ideally has the following properties:
-<indexterm><primary>clustered file server</primary></indexterm>
-<indexterm><primary>connect transparently</primary></indexterm>
-<indexterm><primary>transparently reconnected</primary></indexterm>
-<indexterm><primary>distributed file system</primary></indexterm>
-	</para>
-
-	<itemizedlist>
-		<listitem><para>All clients can connect transparently to any server.</para></listitem>
-		<listitem><para>A server can fail and clients are transparently reconnected to another server.</para></listitem>
-		<listitem><para>All servers serve out the same set of files.</para></listitem>
-		<listitem><para>All file changes are immediately seen on all servers.</para>
-			<itemizedlist><listitem><para>Requires a distributed file system.</para></listitem></itemizedlist></listitem>
-		<listitem><para>Infinite ability to scale by adding more servers or disks.</para></listitem>
-	</itemizedlist>
-
-	</sect2>
-
-	<sect2>
-	<title>Why Is This So Hard?</title>
-
-	<para>
-	In short, the problem is one of <emphasis>state</emphasis>.
-	</para>
-
-	<itemizedlist>
-		<listitem>
-			<para>
-<indexterm><primary>state information</primary></indexterm>
-			All TCP/IP connections are dependent on state information.
-			</para>
-			<para>
-<indexterm><primary>TCP failover</primary></indexterm>
-			The TCP connection involves a packet sequence number. This
-			sequence number would need to be dynamically updated on all
-			machines in the cluster to effect seamless TCP failover.
-			</para>
-		</listitem>
-		<listitem>
-			<para>
-<indexterm><primary>CIFS/SMB</primary></indexterm>
-<indexterm><primary>TCP</primary></indexterm>
-			CIFS/SMB (the Windows networking protocols) uses TCP connections.
-			</para>
-			<para>
-			This means that from a basic design perspective, failover is not
-			seriously considered.
-			<itemizedlist>
-				<listitem><para>
-				All current SMB clusters are failover solutions
-				&smbmdash; they rely on the clients to reconnect. They provide server
-				failover, but clients can lose information due to a server failure.
-<indexterm><primary>server failure</primary></indexterm>
-				</para></listitem>
-			</itemizedlist>
-			</para>
-		</listitem>
-		<listitem>
-			<para>
-			Servers keep state information about client connections.
-			<itemizedlist>
-<indexterm><primary>state</primary></indexterm>
-				<listitem><para>CIFS/SMB involves a lot of state.</para></listitem>
-				<listitem><para>Every file open must be compared with other open files
-						to check share modes.</para></listitem>
-			</itemizedlist>
-			</para>
-		</listitem>
-	</itemizedlist>
-
-		<sect3>
-		<title>The Front-End Challenge</title>
-
-		<para>
-<indexterm><primary>cluster servers</primary></indexterm>
-<indexterm><primary>single server</primary></indexterm>
-<indexterm><primary>TCP data streams</primary></indexterm>
-<indexterm><primary>front-end virtual server</primary></indexterm>
-<indexterm><primary>virtual server</primary></indexterm>
-<indexterm><primary>de-multiplex</primary></indexterm>
-<indexterm><primary>SMB</primary></indexterm>
-		To make it possible for a cluster of file servers to appear as a single server that has one
-		name and one IP address, the incoming TCP data streams from clients must be processed by the
-		front-end virtual server. This server must de-multiplex the incoming packets at the SMB protocol
-		layer level and then feed the SMB packet to different servers in the cluster.
-		</para>
-
-		<para>
-<indexterm><primary>IPC$ connections</primary></indexterm>
-<indexterm><primary>RPC calls</primary></indexterm>
-		One could split all IPC$ connections and RPC calls to one server to handle printing and user
-		lookup requirements. RPC printing handles are shared between different IPC4 sessions &smbmdash; it is
-		hard to split this across clustered servers!
-		</para>
-
-		<para>
-		Conceptually speaking, all other servers would then provide only file services. This is a simpler
-		problem to concentrate on.
-		</para>
-
-		</sect3>
-
-		<sect3>
-		<title>Demultiplexing SMB Requests</title>
-
-		<para>
-<indexterm><primary>SMB requests</primary></indexterm>
-<indexterm><primary>SMB state information</primary></indexterm>
-<indexterm><primary>front-end virtual server</primary></indexterm>
-<indexterm><primary>complicated problem</primary></indexterm>
-		De-multiplexing of SMB requests requires knowledge of SMB state information,
-		all of which must be held by the front-end <emphasis>virtual</emphasis> server.
-		This is a perplexing and complicated problem to solve.


-- 
Samba Shared Repository


More information about the samba-cvs mailing list