Hello community, here is the log from the commit of package samba for openSUSE:Factory checked in at 2014-12-06 13:47:35 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/samba (Old) and /work/SRC/openSUSE:Factory/.samba.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "samba" Changes: -------- --- /work/SRC/openSUSE:Factory/samba/samba.changes 2014-11-07 09:05:20.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.samba.new/samba.changes 2014-12-06 13:47:48.000000000 +0100 @@ -1,0 +2,36 @@ +Fri Dec 5 13:12:47 UTC 2014 - [email protected] + +- Specify soft dependency for network-online.target in Winbind systemd service + file; (bnc#889175). + +------------------------------------------------------------------- +Tue Dec 2 10:19:26 UTC 2014 - [email protected] + +- Update to 4.1.14. + + pidl/wscript: Remove --with-perl-* options; revert buildtools/wafadmin/ + Tools/perl.py back to upstream state; (bso#10472). + + s4-dns: Add support for BIND 9.10; (bso#10620). + + nmbd fails to accept "--piddir" option; (bso#10711). + + nss_winbind: Add getgroupmembership for FreeBSD; (bso#10835). + + S3: source3/smbd/process.c::srv_send_smb() returns true on the error path; + (bso#10880). + + vfs_glusterfs: Remove "integer fd" code and store the glfs pointers; + (bso#10889). + + s3-nmbd: Fix netbios name truncation; (bso#10896). + + spoolss: Fix handling of bad EnumJobs levels; (bso#10898). + + s3: libsmbclient-smb2. MacOSX 10 SMB2 server doesn't set + STATUS_NO_MORE_FILES when handed a non-wildcard path; (bso#10904). + + spoolss: Fix jobid in level 3 EnumJobs response; (bso#10905). + + s3: nmbd: Ensure NetBIOS names are only 15 characters stored; (bso#10920). + + s3:smbd: Fix file corruption using "write cache size != 0"; (bso#10921). + + pdb_tdb: Fix a TALLOC/SAFE_FREE mixup; (bso#10932). + + s3-keytab: Fix keytab array NULL termination; (bso#10933). + + Cleanup add_string_to_array and usage; (bso#10942). + +------------------------------------------------------------------- +Fri Nov 28 15:57:23 CET 2014 - [email protected] + +- Remove and cleanup shares and registry state associated with + externally deleted snaphots exposed as shadow copies; (bnc#876312). + +------------------------------------------------------------------- Old: ---- samba-4.1.13.tar.asc samba-4.1.13.tar.gz New: ---- samba-4.1.14.tar.asc samba-4.1.14.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ samba.spec ++++++ --- /var/tmp/diff_new_pack.whJ5Zg/_old 2014-12-06 13:47:49.000000000 +0100 +++ /var/tmp/diff_new_pack.whJ5Zg/_new 2014-12-06 13:47:49.000000000 +0100 @@ -121,7 +121,7 @@ BuildRequires: systemd BuildRequires: systemd-devel %endif -%define samba_ver 4.1.13 +%define samba_ver 4.1.14 %define samba_ver_suffix %nil %if "%{samba_ver_suffix}" == "" %define samba_source_location http://ftp.samba.org/pub/samba/stable/samba-%{version}.tar.gz @@ -145,11 +145,11 @@ %else %define build_make_smp_mflags %{?jobs:-j%jobs} %endif -%define SOURCE_TIMESTAMP 3327 +%define SOURCE_TIMESTAMP 3336 %define BRANCH %{version} %global with_mitkrb5 1 %global with_dc 0 -Version: 4.1.13 +Version: 4.1.14 Release: 0 Url: http://www.samba.org/ Provides: samba-gplv3 = %{version} ++++++ patches.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches/samba.org/13d840ad2ff0db7320e0cbef86cd47872493292c new/patches/samba.org/13d840ad2ff0db7320e0cbef86cd47872493292c --- old/patches/samba.org/13d840ad2ff0db7320e0cbef86cd47872493292c 2014-10-25 15:37:52.000000000 +0200 +++ new/patches/samba.org/13d840ad2ff0db7320e0cbef86cd47872493292c 2014-12-05 15:13:54.000000000 +0100 @@ -19,7 +19,7 @@ index a42faf8..b2f718b 100644 --- source3/include/proto.h +++ source3/include/proto.h -@@ -1624,7 +1624,7 @@ bool ea_list_has_invalid_name(struct ea_list *ea_list); +@@ -1621,7 +1621,7 @@ bool ea_list_has_invalid_name(struct ea_list *ea_list); void become_root(void); void unbecome_root(void); @@ -28,7 +28,7 @@ int find_service(TALLOC_CTX *ctx, const char *service_in, char **p_service_out); void cancel_pending_lock_requests_by_fid(files_struct *fsp, -@@ -1634,6 +1634,9 @@ void send_stat_cache_delete_message(struct messaging_context *msg_ctx, +@@ -1631,6 +1631,9 @@ void send_stat_cache_delete_message(struct messaging_context *msg_ctx, const char *name); NTSTATUS can_delete_directory_fsp(files_struct *fsp); bool change_to_root_user(void); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches/samba.org/3627ed732637a3b1bf992156306d6ffc14727b46 new/patches/samba.org/3627ed732637a3b1bf992156306d6ffc14727b46 --- old/patches/samba.org/3627ed732637a3b1bf992156306d6ffc14727b46 2014-10-25 15:37:51.000000000 +0200 +++ new/patches/samba.org/3627ed732637a3b1bf992156306d6ffc14727b46 2014-12-05 15:13:54.000000000 +0100 @@ -162,7 +162,7 @@ index fba0133..35a292d 100644 --- source3/wscript +++ source3/wscript -@@ -1755,7 +1755,7 @@ main() { +@@ -1754,7 +1754,7 @@ main() { if conf.CHECK_HEADERS('gpfs_gpl.h'): conf.DEFINE('HAVE_GPFS', '1') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches/samba.org/4e6934ec6c163ad6fd9c317b5a7dd7775b0dc83f new/patches/samba.org/4e6934ec6c163ad6fd9c317b5a7dd7775b0dc83f --- old/patches/samba.org/4e6934ec6c163ad6fd9c317b5a7dd7775b0dc83f 2014-10-25 15:37:52.000000000 +0200 +++ new/patches/samba.org/4e6934ec6c163ad6fd9c317b5a7dd7775b0dc83f 2014-12-05 15:13:54.000000000 +0100 @@ -164,6 +164,15 @@ delete_write_cache(fsp); TALLOC_FREE(fsp->oplock_timeout); +@@ -151,7 +151,7 @@ static void downgrade_file_oplock(files_ + sconn->oplocks.level_II_open++; + fsp->sent_oplock_break = NO_BREAK_SENT; + +- flush_write_cache(fsp, OPLOCK_RELEASE_FLUSH); ++ flush_write_cache(fsp, SAMBA_OPLOCK_RELEASE_FLUSH); + delete_write_cache(fsp); + + TALLOC_FREE(fsp->oplock_timeout); diff --git source3/smbd/reply.c source3/smbd/reply.c index 6b926fb..b94bc45 100644 --- source3/smbd/reply.c diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches/samba.org/6de10acec38eb0e5ac3f989101935ec53fac2fc0 new/patches/samba.org/6de10acec38eb0e5ac3f989101935ec53fac2fc0 --- old/patches/samba.org/6de10acec38eb0e5ac3f989101935ec53fac2fc0 2014-10-25 15:37:52.000000000 +0200 +++ new/patches/samba.org/6de10acec38eb0e5ac3f989101935ec53fac2fc0 2014-12-05 15:13:54.000000000 +0100 @@ -23,7 +23,7 @@ index 35a292d..4ccd1b0 100644 --- source3/wscript +++ source3/wscript -@@ -1755,7 +1755,8 @@ main() { +@@ -1754,7 +1754,8 @@ main() { if conf.CHECK_HEADERS('gpfs_gpl.h'): conf.DEFINE('HAVE_GPFS', '1') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches/series new/patches/series --- old/patches/series 2014-11-05 19:20:59.000000000 +0100 +++ new/patches/series 2014-12-05 15:13:54.000000000 +0100 @@ -143,6 +143,8 @@ suse/0006-lanman-don-t-leak-cache_path-onto-talloc-tos.patch -p0 # bnc 899558 suse/0007-messaging-fix-talloc-tos-leak-in-message_key_pid.patch -p0 # bnc 899558 suse/0008-printer_list-fix-talloc-tos-leak-of-tdb-record.patch -p0 # bnc 899558 +suse/0001-fsrvp-prune-shadow-copies-if-associated-path-doesn-t.patch -p0 # bnc 876312 +suse/0001-doc-prune-stale-and-sequence-timeout-fssd-parameters.patch -p0 # bnc 876312 # this one should always live at the end and should be redone # diabled cf. 280452 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches/suse/0001-doc-prune-stale-and-sequence-timeout-fssd-parameters.patch new/patches/suse/0001-doc-prune-stale-and-sequence-timeout-fssd-parameters.patch --- old/patches/suse/0001-doc-prune-stale-and-sequence-timeout-fssd-parameters.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/patches/suse/0001-doc-prune-stale-and-sequence-timeout-fssd-parameters.patch 2014-12-05 15:13:54.000000000 +0100 @@ -0,0 +1,86 @@ +From 4c49ad62a8c254c861ebb2898120020d60660b04 Mon Sep 17 00:00:00 2001 +From: David Disseldorp <[email protected]> +Date: Wed, 26 Nov 2014 13:01:00 +0100 +Subject: [PATCH] doc: "prune stale" and "sequence timeout" fssd parameters + +This change adds smb.conf documentation for the "fss: prune stale" and +"fss: sequence timeout" parameters accepted by Samba's FSRVP server. + +Signed-off-by: David Disseldorp <[email protected]> +--- + docs-xml/smbdotconf/misc/fssprunestale.xml | 16 ++++++++++++++++ + docs-xml/smbdotconf/misc/fsssequencetimeout.xml | 16 ++++++++++++++++ + docs-xml/smbdotconf/misc/rpcdaemon.xml | 7 ++++--- + 3 files changed, 36 insertions(+), 3 deletions(-) + create mode 100644 docs-xml/smbdotconf/misc/fssprunestale.xml + create mode 100644 docs-xml/smbdotconf/misc/fsssequencetimeout.xml + +diff --git docs-xml/smbdotconf/misc/fssprunestale.xml docs-xml/smbdotconf/misc/fssprunestale.xml +new file mode 100644 +index 0000000..d583104 +--- /dev/null ++++ docs-xml/smbdotconf/misc/fssprunestale.xml +@@ -0,0 +1,16 @@ ++<samba:parameter name="fss: prune stale" ++ context="G" ++ type="boolean" ++ advanced="1" ++ xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> ++<description> ++ <para> ++ When enabled, Samba's File Server Remove VSS Protocol (FSRVP) server ++ checks all FSRVP initiated snapshots on startup, and removes any ++ corresponding state (including share definitions) for nonexistent ++ snapshot paths. ++ </para> ++</description> ++<value type="default">no</value> ++<value type="example">yes</value> ++</samba:parameter> +diff --git docs-xml/smbdotconf/misc/fsssequencetimeout.xml docs-xml/smbdotconf/misc/fsssequencetimeout.xml +new file mode 100644 +index 0000000..9419a33 +--- /dev/null ++++ docs-xml/smbdotconf/misc/fsssequencetimeout.xml +@@ -0,0 +1,16 @@ ++<samba:parameter name="fss: sequence timeout" ++ context="G" ++ type="integer" ++ advanced="1" ++ xmlns:samba="http://www.samba.org/samba/DTD/samba-doc"> ++<description> ++ <para> ++ The File Server Remove VSS Protocol (FSRVP) server includes a message ++ sequence timer to ensure cleanup on unexpected client disconnect. This ++ parameter overrides the default timeout between FSRVP operations. ++ FSRVP timeouts can be completely disabled via a value of 0. ++ </para> ++</description> ++<value type="default">180 or 1800, depending on operation</value> ++<value type="example">0</value> ++</samba:parameter> +diff --git docs-xml/smbdotconf/misc/rpcdaemon.xml docs-xml/smbdotconf/misc/rpcdaemon.xml +index 5fbe886..a06e91d 100644 +--- docs-xml/smbdotconf/misc/rpcdaemon.xml ++++ docs-xml/smbdotconf/misc/rpcdaemon.xml +@@ -56,13 +56,14 @@ + </para> + + <para> +- Samba includes separate daemons for spoolss and the lsarpc/lsass, +- netlogon and samr pipes. Currently three daemons are available and they +- are called: ++ Samba includes separate daemons for spoolss, lsarpc/lsass, netlogon, ++ samr, and FSRVP. Currently four daemons are available and they are ++ called: + <programlisting> + epmd + lsasd + spoolssd ++ fssd + </programlisting> + Example: + <programlisting> +-- +1.8.4.5 + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches/suse/0001-fsrvp-prune-shadow-copies-if-associated-path-doesn-t.patch new/patches/suse/0001-fsrvp-prune-shadow-copies-if-associated-path-doesn-t.patch --- old/patches/suse/0001-fsrvp-prune-shadow-copies-if-associated-path-doesn-t.patch 1970-01-01 01:00:00.000000000 +0100 +++ new/patches/suse/0001-fsrvp-prune-shadow-copies-if-associated-path-doesn-t.patch 2014-12-05 15:13:54.000000000 +0100 @@ -0,0 +1,357 @@ +From 48f9059322cfc732482db1ed6b2dbe09484222fc Mon Sep 17 00:00:00 2001 +From: Noel Power <[email protected]> +Date: Thu, 13 Nov 2014 11:13:35 +0000 +Subject: [PATCH] fsrvp: prune shadow copies if associated path doesn't exist + +This patch implements some simple FSRVP server housekeeping. On startup +the server scans the cached entries, any entries where the underlying +system paths associated with shadow copies no longer exist are removed +from the cache and from the registry. + +This behaviour is disabled by default, but can be enabled via the new +"fss: prune stale" smb.conf parameter. + +Signed-off-by: Noel Power <[email protected]> +Signed-off-by: David Disseldorp <[email protected]> +--- + source3/rpc_server/fss/srv_fss_agent.c | 233 +++++++++++++++++++++++++++++---- + source3/rpc_server/fss/srv_fss_agent.h | 2 +- + source3/rpc_server/fssd.c | 6 +- + 3 files changed, 212 insertions(+), 29 deletions(-) + +diff --git source3/rpc_server/fss/srv_fss_agent.c source3/rpc_server/fss/srv_fss_agent.c +index b6a3bf0..6f11161 100644 +--- source3/rpc_server/fss/srv_fss_agent.c ++++ source3/rpc_server/fss/srv_fss_agent.c +@@ -140,6 +140,168 @@ static NTSTATUS fss_vfs_conn_create(TALLOC_CTX *mem_ctx, + struct messaging_context *msg_ctx, + struct auth_session_info *session_info, + int snum, ++ struct connection_struct **conn_out); ++static void fss_vfs_conn_destroy(struct connection_struct *conn); ++ ++/* test if system path exists */ ++static bool snap_path_exists(TALLOC_CTX *ctx, struct messaging_context *msg_ctx, ++ struct fss_sc *sc) ++{ ++ SMB_STRUCT_STAT st; ++ struct connection_struct *conn = NULL; ++ struct smb_filename *smb_fname = NULL; ++ char *service = NULL; ++ char *share; ++ int snum; ++ int ret; ++ NTSTATUS status; ++ bool result; ++ ++ ZERO_STRUCT(st); ++ ++ if ((sc->smaps_count == 0) || (sc->sc_path == NULL)) { ++ result = false; ++ goto out; ++ } ++ ++ share = sc->smaps->share_name; ++ snum = find_service(ctx, share, &service); ++ ++ if ((snum == -1) || (service == NULL)) { ++ result = false; ++ goto out; ++ } ++ ++ status = fss_vfs_conn_create(ctx, server_event_context(), ++ msg_ctx, NULL, snum, &conn); ++ ++ if(!NT_STATUS_IS_OK(status)) { ++ result = false; ++ goto out; ++ } ++ ++ smb_fname = synthetic_smb_fname(service, sc->sc_path, NULL, NULL); ++ if (smb_fname == NULL) { ++ result = false; ++ goto out; ++ } ++ ++ ret = SMB_VFS_STAT(conn, smb_fname); ++ if ((ret == -1) && (errno == ENOENT)) { ++ result = false; ++ goto out; ++ } ++ result = true; ++out: ++ if (conn) { ++ fss_vfs_conn_destroy(conn); ++ } ++ TALLOC_FREE(service); ++ return result; ++} ++ ++static NTSTATUS sc_smap_unexpose(struct messaging_context *msg_ctx, ++ struct fss_sc_smap *sc_smap, bool delete_all); ++ ++static NTSTATUS fss_prune_stale(struct messaging_context *msg_ctx, ++ const char *db_path) ++{ ++ struct fss_sc_set *sc_sets; ++ uint32_t sc_sets_count = 0; ++ struct fss_sc_set *sc_set; ++ struct fss_sc_smap *prunable_sc_smaps = NULL; ++ bool is_modified = false; ++ NTSTATUS status = NT_STATUS_UNSUCCESSFUL; ++ TALLOC_CTX *ctx = talloc_new(NULL); ++ ++ if (!ctx) { ++ return NT_STATUS_NO_MEMORY; ++ } ++ ++ /* work with temporary state for simple cleanup on failure */ ++ become_root(); ++ status = fss_state_retrieve(ctx, &sc_sets, &sc_sets_count, db_path); ++ unbecome_root(); ++ if (!NT_STATUS_IS_OK(status)) { ++ DEBUG(1, ("failed to retrieve fss server state: %s\n", ++ nt_errstr(status))); ++ goto out; ++ } ++ ++ /* walk the cache and pick up any entries to be deleted */ ++ sc_set = sc_sets; ++ DEBUG(10, ("pruning shared shadow copies\n")); ++ while (sc_set) { ++ struct fss_sc *sc; ++ struct fss_sc_set *sc_set_next = sc_set->next; ++ char *set_id = GUID_string(ctx, &sc_set->id); ++ if (set_id == NULL) { ++ status = NT_STATUS_NO_MEMORY; ++ goto out; ++ } ++ DEBUGADD(10, ("\tprocessing shadow set id %s\n", set_id)); ++ sc = sc_set->scs; ++ while (sc) { ++ struct fss_sc_smap *sc_smap; ++ struct fss_sc *sc_next = sc->next; ++ DEBUGADD(10, ("\tprocessing shadow copy path %s\n", ++ sc->sc_path)); ++ if (snap_path_exists(ctx, msg_ctx, sc)) { ++ sc = sc_next; ++ continue; ++ } ++ ++ /* move missing snapshot state to purge list */ ++ sc_smap = sc->smaps; ++ while (sc_smap != NULL) { ++ struct fss_sc_smap *smap_next = sc_smap->next; ++ DLIST_REMOVE(sc->smaps, sc_smap); ++ DLIST_ADD_END(prunable_sc_smaps, sc_smap, ++ struct fss_sc_smap *); ++ sc->smaps_count--; ++ sc_smap = smap_next; ++ } ++ ++ DLIST_REMOVE(sc_set->scs, sc); ++ sc_set->scs_count--; ++ is_modified = true; ++ sc = sc_next; ++ } ++ if (sc_set->scs_count == 0) { ++ DLIST_REMOVE(sc_sets, sc_set); ++ sc_sets_count--; ++ } ++ sc_set = sc_set_next; ++ } ++ ++ if (is_modified) { ++ /* unexpose all shares in a single transaction */ ++ status = sc_smap_unexpose(msg_ctx, prunable_sc_smaps, true); ++ if (!NT_STATUS_IS_OK(status)) { ++ /* exit without storing updated state */ ++ goto out; ++ } ++ ++ become_root(); ++ status = fss_state_store(ctx, sc_sets, sc_sets_count, db_path); ++ unbecome_root(); ++ if (!NT_STATUS_IS_OK(status)) { ++ DEBUG(1, ("pruning failed to store fss server state: %s\n", ++ nt_errstr(status))); ++ goto out; ++ } ++ } ++ status = NT_STATUS_OK; ++out: ++ TALLOC_FREE(ctx); ++ return status; ++} ++ ++static NTSTATUS fss_vfs_conn_create(TALLOC_CTX *mem_ctx, ++ struct tevent_context *ev, ++ struct messaging_context *msg_ctx, ++ struct auth_session_info *session_info, ++ int snum, + struct connection_struct **conn_out) + { + struct connection_struct *conn = NULL; +@@ -250,10 +412,9 @@ void srv_fssa_cleanup(void) + ZERO_STRUCT(fss_global); + } + +-NTSTATUS srv_fssa_start(void) ++NTSTATUS srv_fssa_start(struct messaging_context *msg_ctx) + { + NTSTATUS status; +- + fss_global.mem_ctx = talloc_named_const(NULL, 0, + "parent fss rpc server ctx"); + if (fss_global.mem_ctx == NULL) { +@@ -272,6 +433,9 @@ NTSTATUS srv_fssa_start(void) + * The server MUST populate the GlobalShadowCopySetTable with the + * ShadowCopySet entries read from the configuration store. + */ ++ if (lp_parm_bool(GLOBAL_SECTION_SNUM, "fss", "prune stale", false)) { ++ fss_prune_stale(msg_ctx, fss_global.db_path); ++ } + become_root(); + status = fss_state_retrieve(fss_global.mem_ctx, &fss_global.sc_sets, + &fss_global.sc_sets_count, +@@ -1484,11 +1648,12 @@ uint32_t _fss_GetShareMapping(struct pipes_struct *p, + } + + static NTSTATUS sc_smap_unexpose(struct messaging_context *msg_ctx, +- struct fss_sc_smap *sc_smap) ++ struct fss_sc_smap *sc_smap, bool delete_all) + { + NTSTATUS ret; + struct smbconf_ctx *conf_ctx; + sbcErr cerr; ++ bool is_modified = false; + TALLOC_CTX *tmp_ctx = talloc_new(sc_smap); + if (tmp_ctx == NULL) { + return NT_STATUS_NO_MEMORY; +@@ -1505,12 +1670,6 @@ static NTSTATUS sc_smap_unexpose(struct messaging_context *msg_ctx, + /* registry IO must be done as root */ + become_root(); + +- if (!smbconf_share_exists(conf_ctx, sc_smap->sc_share_name)) { +- DEBUG(2, ("no such share: %s\n", sc_smap->sc_share_name)); +- ret = NT_STATUS_OK; +- goto done; +- } +- + cerr = smbconf_transaction_start(conf_ctx); + if (!SBC_ERROR_IS_OK(cerr)) { + DEBUG(0, ("error starting transaction: %s\n", +@@ -1519,26 +1678,48 @@ static NTSTATUS sc_smap_unexpose(struct messaging_context *msg_ctx, + goto err_conf; + } + +- cerr = smbconf_delete_share(conf_ctx, sc_smap->sc_share_name); +- if (!SBC_ERROR_IS_OK(cerr)) { +- DEBUG(0, ("error deleting share: %s\n", +- sbcErrorString(cerr))); +- ret = NT_STATUS_UNSUCCESSFUL; +- goto err_cancel; +- } ++ while (sc_smap) { ++ struct fss_sc_smap *sc_map_next = sc_smap->next; ++ if (!smbconf_share_exists(conf_ctx, sc_smap->sc_share_name)) { ++ DEBUG(2, ("no such share: %s\n", sc_smap->sc_share_name)); ++ if (!delete_all) { ++ ret = NT_STATUS_OK; ++ goto err_cancel; ++ } ++ sc_smap = sc_map_next; ++ continue; ++ } + +- cerr = smbconf_transaction_commit(conf_ctx); +- if (!SBC_ERROR_IS_OK(cerr)) { +- DEBUG(0, ("error committing transaction: %s\n", +- sbcErrorString(cerr))); +- ret = NT_STATUS_UNSUCCESSFUL; ++ cerr = smbconf_delete_share(conf_ctx, sc_smap->sc_share_name); ++ if (!SBC_ERROR_IS_OK(cerr)) { ++ DEBUG(0, ("error deleting share: %s\n", ++ sbcErrorString(cerr))); ++ ret = NT_STATUS_UNSUCCESSFUL; ++ goto err_cancel; ++ } ++ is_modified = true; ++ sc_smap->is_exposed = false; ++ if (delete_all) { ++ sc_smap = sc_map_next; ++ } else { ++ sc_smap = NULL; /* only process single sc_map entry */ ++ } ++ } ++ if (is_modified) { ++ cerr = smbconf_transaction_commit(conf_ctx); ++ if (!SBC_ERROR_IS_OK(cerr)) { ++ DEBUG(0, ("error committing transaction: %s\n", ++ sbcErrorString(cerr))); ++ ret = NT_STATUS_UNSUCCESSFUL; ++ goto err_cancel; ++ } ++ message_send_all(msg_ctx, MSG_SMB_CONF_UPDATED, NULL, 0, NULL); ++ } else { ++ ret = NT_STATUS_OK; + goto err_cancel; + } +- message_send_all(msg_ctx, MSG_SMB_CONF_UPDATED, NULL, 0, NULL); +-done: +- sc_smap->is_exposed = false; +- + ret = NT_STATUS_OK; ++ + err_conf: + talloc_free(conf_ctx); + unbecome_root(); +@@ -1625,7 +1806,7 @@ struct tevent_req *_fss_DeleteShareMapping_send(struct tevent_context *ev, + } + delete_state->sc_smap = sc_smap; + +- status = sc_smap_unexpose(p->msg_ctx, sc_smap); ++ status = sc_smap_unexpose(p->msg_ctx, sc_smap, false); + if (tevent_req_nterror(req, status)) { + DEBUG(0, ("failed to remove share %s: %s\n", + sc_smap->sc_share_name, nt_errstr(status))); +diff --git source3/rpc_server/fss/srv_fss_agent.h source3/rpc_server/fss/srv_fss_agent.h +index 532e6b6..9d53439 100644 +--- source3/rpc_server/fss/srv_fss_agent.h ++++ source3/rpc_server/fss/srv_fss_agent.h +@@ -22,7 +22,7 @@ + #ifndef _SRV_FSS_AGENT_H_ + #define _SRV_FSS_AGENT_H_ + +-NTSTATUS srv_fssa_start(void); ++NTSTATUS srv_fssa_start(struct messaging_context *msg_ctx); + void srv_fssa_cleanup(void); + + #endif /*_SRV_FSS_AGENT_H_ */ +diff --git source3/rpc_server/fssd.c source3/rpc_server/fssd.c +index 3b4f71c..bb207dd 100644 +--- source3/rpc_server/fssd.c ++++ source3/rpc_server/fssd.c +@@ -137,7 +137,9 @@ static bool fss_shutdown_cb(void *ptr) + static bool fss_init_cb(void *ptr) + { + NTSTATUS status; +- status = srv_fssa_start(); ++ struct messaging_context *msg_ctx = ++ talloc_get_type_abort(ptr,struct messaging_context); ++ status = srv_fssa_start(msg_ctx); + return NT_STATUS_IS_OK(status); + } + +@@ -152,7 +154,7 @@ void start_fssd(struct tevent_context *ev_ctx, + + fss_cb.init = fss_init_cb; + fss_cb.shutdown = fss_shutdown_cb; +- fss_cb.private_data = NULL; ++ fss_cb.private_data = msg_ctx; + + DEBUG(1, ("Forking File Server Shadow-copy Daemon\n")); + +-- +1.8.4.5 + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches/suse/0009-vfs-add-snapshot-create-delete-calls-to-vfs_btrfs.patch new/patches/suse/0009-vfs-add-snapshot-create-delete-calls-to-vfs_btrfs.patch --- old/patches/suse/0009-vfs-add-snapshot-create-delete-calls-to-vfs_btrfs.patch 2014-10-25 15:37:52.000000000 +0200 +++ new/patches/suse/0009-vfs-add-snapshot-create-delete-calls-to-vfs_btrfs.patch 2014-12-05 15:13:54.000000000 +0100 @@ -61,7 +61,7 @@ struct btrfs_cc_state { struct vfs_handle_struct *handle; -@@ -337,6 +361,366 @@ err_out: +@@ -347,6 +371,366 @@ err_out: return status; } @@ -428,7 +428,7 @@ static struct vfs_fn_pointers btrfs_fns = { .fs_capabilities_fn = btrfs_fs_capabilities, -@@ -344,6 +728,11 @@ static struct vfs_fn_pointers btrfs_fns = { +@@ -354,6 +738,11 @@ static struct vfs_fn_pointers btrfs_fns = { .copy_chunk_recv_fn = btrfs_copy_chunk_recv, .get_compression_fn = btrfs_get_compression, .set_compression_fn = btrfs_set_compression, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches/suse/0010-vfs-add-vfs_snapper-module.patch new/patches/suse/0010-vfs-add-vfs_snapper-module.patch --- old/patches/suse/0010-vfs-add-vfs_snapper-module.patch 2014-10-25 15:37:52.000000000 +0200 +++ new/patches/suse/0010-vfs-add-vfs_snapper-module.patch 2014-12-05 15:13:54.000000000 +0100 @@ -1434,7 +1434,7 @@ index 4ccd1b0..027ef2f 100644 --- source3/wscript +++ source3/wscript -@@ -1782,6 +1782,12 @@ main() { +@@ -1781,6 +1781,12 @@ main() { conf.SET_TARGET_TYPE('gfapi', 'EMPTY') conf.undefine('HAVE_GLUSTERFS') @@ -1447,7 +1447,7 @@ conf.env.build_regedit = False if not Options.options.with_regedit == False: conf.PROCESS_SEPARATE_RULE('system_ncurses') -@@ -1873,6 +1879,9 @@ main() { +@@ -1872,6 +1878,9 @@ main() { if conf.CONFIG_SET('HAVE_GLUSTERFS'): default_shared_modules.extend(TO_LIST('vfs_glusterfs')) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patches/suse/0031-vfs-add-vfs_shell_snap-module.patch new/patches/suse/0031-vfs-add-vfs_shell_snap-module.patch --- old/patches/suse/0031-vfs-add-vfs_shell_snap-module.patch 2014-10-25 15:37:52.000000000 +0200 +++ new/patches/suse/0031-vfs-add-vfs_shell_snap-module.patch 2014-12-05 15:13:54.000000000 +0100 @@ -326,7 +326,7 @@ index 027ef2f..6649c4c 100644 --- source3/wscript +++ source3/wscript -@@ -1818,7 +1818,7 @@ main() { +@@ -1817,7 +1817,7 @@ main() { auth_script vfs_readahead vfs_xattr_tdb vfs_posix_eadb vfs_streams_xattr vfs_streams_depot vfs_acl_xattr vfs_acl_tdb vfs_smb_traffic_analyzer vfs_preopen vfs_catia vfs_scannedonly ++++++ samba-4.1.13.tar.gz -> samba-4.1.14.tar.gz ++++++ /work/SRC/openSUSE:Factory/samba/samba-4.1.13.tar.gz /work/SRC/openSUSE:Factory/.samba.new/samba-4.1.14.tar.gz differ: char 5, line 1 ++++++ vendor-files.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor-files/systemd/winbind.service new/vendor-files/systemd/winbind.service --- old/vendor-files/systemd/winbind.service 2014-10-25 15:37:51.000000000 +0200 +++ new/vendor-files/systemd/winbind.service 2014-12-05 15:21:02.000000000 +0100 @@ -1,6 +1,7 @@ [Unit] Description=Samba Winbind Daemon After=syslog.target network-online.target nmb.service +Wants=network-online.target [Service] Type=notify diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor-files/tools/package-data new/vendor-files/tools/package-data --- old/vendor-files/tools/package-data 2014-11-06 14:57:44.000000000 +0100 +++ new/vendor-files/tools/package-data 2014-12-05 15:21:41.000000000 +0100 @@ -1,2 +1,2 @@ # This is an autogenrated file. -SAMBA_PACKAGE_SVN_VERSION="3327" +SAMBA_PACKAGE_SVN_VERSION="3336" -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
