[SCM] Samba Shared Repository - branch v3-6-test updated
Michael Adam
obnox at samba.org
Fri Jan 21 04:31:35 MST 2011
The branch, v3-6-test has been updated
via 1e67bf4 s3:vfs:shadow_copy2: fix indentation in _SHADOW2_NEXT_SMB_FNAME
via 091f5b1 s3:vfs:shadow_copy2: Fix shadow-copy module for drag&drop from a snapshot
via 05e0002 s3:registry correct a debug level
via fa5089c s3:winbind: Protect against invalid winbindd_cache entries in lookuprids
via f2922ac s3-net: add roundtrip tests for registry import/export
via ee22922 packaging(RHEL-CTDB): explicitly build the tsm vfs module.
via 435d15c s3: Fix the code to immediately disconnect from a non-working ctdbd
via 013eb30 s3:vfs:gpfs: fix logic when gpfs:winattr is false (the default!)
from 404a403 s3-spoolss: make it more obvious what winreg_create_printer() does.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-6-test
- Log -----------------------------------------------------------------
commit 1e67bf44e2b7882edcd932a8cce0365d520b1804
Author: Michael Adam <obnox at samba.org>
Date: Fri Jan 21 09:46:42 2011 +0100
s3:vfs:shadow_copy2: fix indentation in _SHADOW2_NEXT_SMB_FNAME
Autobuild-User: Michael Adam <obnox at samba.org>
Autobuild-Date: Fri Jan 21 10:57:45 CET 2011 on sn-devel-104
commit 091f5b199ec145561ee5840903c73a26d14e3319
Author: Volker Lendecke <vl at samba.org>
Date: Thu Dec 16 04:26:02 2010 -0700
s3:vfs:shadow_copy2: Fix shadow-copy module for drag&drop from a snapshot
We have to return NT_STATUS_NOT_SAME_DEVICE to trigger the Windows client to
start a copy itself. Unbeknownst to us via the ACLs snapshots are read-only, so
a rename would trigger a EACCES. Unfortunately the MacOS/X finder does not do
the smart NOT_SAME_DEVICE fallback that Windows does.
commit 05e0002b9d2140a57f8edb2c9341ec62b5e19999
Author: Christian Ambach <christian.ambach at de.ibm.com>
Date: Thu Dec 9 11:25:17 2010 +0100
s3:registry correct a debug level
this is not a level 0 message, move it to 10
commit fa5089cfe589b3e575cf55597d5ea0f7e036c824
Author: Volker Lendecke <vl at samba.org>
Date: Tue Nov 23 14:49:12 2010 +0100
s3:winbind: Protect against invalid winbindd_cache entries in lookuprids
commit f2922ace5be4f91c4c6d394da6f1d0cb1a32b9b8
Author: Gregor Beck <gbeck at sernet.de>
Date: Wed Sep 29 15:13:55 2010 +0200
s3-net: add roundtrip tests for registry import/export
commit ee2292227a5e849497206971c9013521e62bb05d
Author: Volker Lendecke <vl at samba.org>
Date: Mon Mar 8 17:59:35 2010 +0100
packaging(RHEL-CTDB): explicitly build the tsm vfs module.
commit 435d15c02e924627410675871d76c073d762e22f
Author: Volker Lendecke <vl at samba.org>
Date: Thu Dec 3 01:55:52 2009 +0100
s3: Fix the code to immediately disconnect from a non-working ctdbd
commit 013eb30421c58431f3b25a0b4655f86d1dce140f
Author: Rusty Russell <rusty at rustcorp.com.au>
Date: Fri Nov 20 10:39:57 2009 +0100
s3:vfs:gpfs: fix logic when gpfs:winattr is false (the default!)
On my autocluster setup, it's not set. Maybe it should be? Otherwise
smbclient and some Windows client programs will get errors like:
# smbclient //localhost/data -Uadministrator%XXX
Domain=[VSOFS1] OS=[Unix] Server=[Samba 3.4.2-ctdb-10]
smb: \> put /etc/resolv.conf resolv.conf
NT_STATUS_ACCESS_DENIED closing remote file \resolv.conf
smb: \>
Caused by attempting to update the time on close.
Signed-off-by: Rusty Russell <rusty at rustcorp.com.au>
Signed-off-by: Michael Adam <obnox at samba.org>
-----------------------------------------------------------------------
Summary of changes:
packaging/RHEL-CTDB/samba.spec.tmpl | 2 +-
source3/lib/ctdbd_conn.c | 1 +
source3/modules/vfs_gpfs.c | 12 ++++-
source3/modules/vfs_shadow_copy2.c | 8 ++-
source3/registry/reg_parse.c | 2 +-
source3/script/tests/test_net_registry.sh | 88 +++++++++++++++++++++++++++++
source3/winbindd/winbindd_cache.c | 3 +-
7 files changed, 110 insertions(+), 6 deletions(-)
Changeset truncated at 500 lines:
diff --git a/packaging/RHEL-CTDB/samba.spec.tmpl b/packaging/RHEL-CTDB/samba.spec.tmpl
index 475adcb..f27635a 100644
--- a/packaging/RHEL-CTDB/samba.spec.tmpl
+++ b/packaging/RHEL-CTDB/samba.spec.tmpl
@@ -245,7 +245,7 @@ CFLAGS="$RPM_OPT_FLAGS $EXTRA -D_GNU_SOURCE" ./configure \
--without-smbwrapper \
--with-pam \
--with-quotas \
- --with-shared-modules=idmap_rid,idmap_ad,idmap_tdb2,vfs_gpfs \
+ --with-shared-modules=idmap_rid,idmap_ad,idmap_tdb2,vfs_gpfs,vfs_tsmsm \
--with-syslog \
--with-utmp \
--with-cluster-support \
diff --git a/source3/lib/ctdbd_conn.c b/source3/lib/ctdbd_conn.c
index dee477f..d201693 100644
--- a/source3/lib/ctdbd_conn.c
+++ b/source3/lib/ctdbd_conn.c
@@ -515,6 +515,7 @@ static NTSTATUS ctdbd_init_connection(TALLOC_CTX *mem_ctx,
if (!ctdbd_working(conn, conn->our_vnn)) {
DEBUG(2, ("Node is not working, can not connect\n"));
+ status = NT_STATUS_INTERNAL_DB_ERROR;
goto fail;
}
diff --git a/source3/modules/vfs_gpfs.c b/source3/modules/vfs_gpfs.c
index ffe51c3..bc634b1 100644
--- a/source3/modules/vfs_gpfs.c
+++ b/source3/modules/vfs_gpfs.c
@@ -991,6 +991,11 @@ static int gpfs_set_xattr(struct vfs_handle_struct *handle, const char *path,
ret = set_gpfs_winattrs(CONST_DISCARD(char *, path),
GPFS_WINATTR_SET_ATTRS, &attrs);
if ( ret == -1){
+ if (errno == ENOSYS) {
+ return SMB_VFS_NEXT_SETXATTR(handle, path, name, value,
+ size, flags);
+ }
+
DEBUG(1, ("gpfs_set_xattr:Set GPFS attributes failed %d\n",ret));
return -1;
}
@@ -1016,6 +1021,11 @@ static ssize_t gpfs_get_xattr(struct vfs_handle_struct *handle, const char *pat
ret = get_gpfs_winattrs(CONST_DISCARD(char *, path), &attrs);
if ( ret == -1){
+ if (errno == ENOSYS) {
+ return SMB_VFS_NEXT_GETXATTR(handle, path, name, value,
+ size);
+ }
+
DEBUG(1, ("gpfs_get_xattr: Get GPFS attributes failed: %d\n",ret));
return -1;
}
@@ -1150,7 +1160,7 @@ static int vfs_gpfs_ntimes(struct vfs_handle_struct *handle,
ret = set_gpfs_winattrs(CONST_DISCARD(char *, path),
GPFS_WINATTR_SET_CREATION_TIME, &attrs);
- if(ret == -1){
+ if(ret == -1 && errno != ENOSYS){
DEBUG(1,("vfs_gpfs_ntimes: set GPFS ntimes failed %d\n",ret));
return -1;
}
diff --git a/source3/modules/vfs_shadow_copy2.c b/source3/modules/vfs_shadow_copy2.c
index 0393f30..2777907 100644
--- a/source3/modules/vfs_shadow_copy2.c
+++ b/source3/modules/vfs_shadow_copy2.c
@@ -250,8 +250,8 @@ static const char *shadow_copy2_normalise_path(TALLOC_CTX *mem_ctx, const char *
} while (0)
#define _SHADOW2_NEXT_SMB_FNAME(op, args, rtype, eret, extra) do { \
- const char *gmt_start; \
- if (shadow_copy2_match_name(smb_fname->base_name, &gmt_start)) { \
+ const char *gmt_start; \
+ if (shadow_copy2_match_name(smb_fname->base_name, &gmt_start)) { \
char *name2; \
char *smb_base_name_tmp = NULL; \
rtype ret; \
@@ -535,6 +535,10 @@ static int shadow_copy2_rename(vfs_handle_struct *handle,
const struct smb_filename *smb_fname_src,
const struct smb_filename *smb_fname_dst)
{
+ if (shadow_copy2_match_name(smb_fname_src->base_name, NULL)) {
+ errno = EXDEV;
+ return -1;
+ }
SHADOW2_NEXT2_SMB_FNAME(RENAME,
(handle, smb_fname_src, smb_fname_dst));
}
diff --git a/source3/registry/reg_parse.c b/source3/registry/reg_parse.c
index 98704ec..b76bcfe 100644
--- a/source3/registry/reg_parse.c
+++ b/source3/registry/reg_parse.c
@@ -861,7 +861,7 @@ int reg_parse_fd(int fd, const struct reg_parse_callback* cb, const char* opts)
goto done;
}
- DEBUG(0, ("reg_parse_fd: encoding file: %s str: %s\n",
+ DEBUG(10, ("reg_parse_fd: encoding file: %s str: %s\n",
opt.file_enc, opt.str_enc));
diff --git a/source3/script/tests/test_net_registry.sh b/source3/script/tests/test_net_registry.sh
index 0d5916e..525e13a 100755
--- a/source3/script/tests/test_net_registry.sh
+++ b/source3/script/tests/test_net_registry.sh
@@ -345,6 +345,93 @@ take_administrative_rights()
fi
}
+SED_INVALID_PARAMS="{
+s/lock directory/;&/g
+s/modules dir/;&/g
+s/logging/;&/g
+s/status/;&/g
+s/logdir/;&/g
+s/read prediction/;&/g
+s/mkprofile/;&/g
+s/valid chars/;&/g
+s/timesync/;&/g
+s/sambaconf/;&/g
+s/logtype/;&/g
+s/servername/;&/g
+}"
+
+REGPATH="HKLM\Software\Samba"
+
+conf_roundtrip_step() {
+ echo $* >>$LOG
+ $@ 2>>$LOG
+# echo -n .
+}
+
+conf_roundtrip()
+{
+ local DIR=$(mktemp -d --tmpdir=$PREFIX conf_roundtrip_XXXX)
+ local LOG=$DIR/log
+
+ echo conf_roundtrip $1 > $LOG
+
+ sed -e "$SED_INVALID_PARAMS" $1 >$DIR/conf_in
+
+ conf_roundtrip_step $NET conf drop
+ test -z "$($NET conf list)" 2>>$LOG
+ if [ "$?" = "1" ]; then
+ echo "ERROR: conf drop failed" | tee -a $LOG
+ return 1
+ fi
+
+ conf_roundtrip_step $NET conf import $DIR/conf_in
+ conf_roundtrip_step $NET conf list > $DIR/conf_exp
+
+ grep "\[global\]" $DIR/conf_exp >/dev/null 2>>$LOG
+ if [ "$?" = "1" ]; then
+ echo "ERROR: conf import => conf export failed" | tee -a $LOG
+ return 1
+ fi
+
+ conf_roundtrip_step $NET -d10 registry export $REGPATH $DIR/conf_exp.reg
+
+ conf_roundtrip_step $NET conf drop
+ test -z "$($NET conf list)" 2>>$LOG
+ if [ "$?" = "1" ]; then
+ echo "ERROR: conf drop failed" | tee -a $LOG
+ return 1
+ fi
+
+ conf_roundtrip_step $NET registry import $DIR/conf_exp.reg
+
+ conf_roundtrip_step $NET conf list >$DIR/conf_out
+ diff -q $DIR/conf_out $DIR/conf_exp >> $LOG
+ if [ "$?" = "1" ]; then
+ echo "ERROR: registry import => conf export failed" | tee -a $LOG
+ return 1
+ fi
+
+ conf_roundtrip_step $NET registry export $REGPATH $DIR/conf_out.reg
+ diff -q $DIR/conf_out.reg $DIR/conf_exp.reg >>$LOG
+ if [ "$?" = "1" ]; then
+ echo "Error: registry import => registry export failed" | tee -a $LOG
+ return 1
+ fi
+ rm -r $DIR
+}
+
+CONF_FILES=${CONF_FILES:-$(find $SRCDIR/.. -name *.conf | xargs grep -l "\[global\]")}
+
+for conf_file in $CONF_FILES
+do
+ conf_file=${conf_file#$SRCDIR/}
+ testit "conf_roundtrip $conf_file" \
+ conf_roundtrip $conf_file \
+ || failed=`expr $failed + 1`
+done
+
+
+
if test "x${RPC}" = "xrpc" ; then
testit "giving user ${USERNAME} administrative rights" \
give_administrative_rights
@@ -439,5 +526,6 @@ testit "taking administrative rights from user ${USERNAME}" \
failed=`expr $failed + 1`
fi
+
testok $0 $failed
diff --git a/source3/winbindd/winbindd_cache.c b/source3/winbindd/winbindd_cache.c
index 37291a7..832e8ef 100644
--- a/source3/winbindd/winbindd_cache.c
+++ b/source3/winbindd/winbindd_cache.c
@@ -2042,7 +2042,8 @@ static NTSTATUS rids_to_names(struct winbindd_domain *domain,
(*names)[i] = centry_string(centry, *names);
- } else if (NT_STATUS_EQUAL(centry->status, NT_STATUS_NONE_MAPPED)) {
+ } else if (NT_STATUS_EQUAL(centry->status, NT_STATUS_NONE_MAPPED)
+ || NT_STATUS_EQUAL(centry->status, STATUS_SOME_UNMAPPED)) {
have_unmapped = true;
} else {
--
Samba Shared Repository
More information about the samba-cvs
mailing list