Re: [Samba] Difference in Samba and CIFS interms of keeping the deleted files opened
On Tue, Jul 21, 2009 at 12:12 AM, Jeremy Allison j...@samba.org wrote: On Mon, Jul 20, 2009 at 10:14:49PM +0530, Nikhil wrote: Hi, We have a CIFS server running on a NetApp server and a Solaris host running Samba-3.3.2. When we mount both the filesystems to a Drive on a Windows using the net use command and then try to run a java program which basically does nothing but continuosly writes a data chunk to a file. On a side note, these same filesystems are accessible on a Solaris (unix) host too. When the java program is run and a file is being generated, I go to my unix terminal and happen to delete the file generated by the java program. Interestingly, there is an IOexception caught in the java program running on the Windows machine, when the file is deleted on the CIFS based filesystem (available on Solaris as a NFS filesystems) but there is no exception caught when the filesystem happens to be Samba (available on Solaris as /var , a regular partition). I delete the file from Unix as the process demands, but also there is no way to delete a in-use-file in Windows. I would like to understand the differences in Samba and CIFS in this context especially why is that so there is an IOexception for a CIFS based filesystem but not on the samba filesystem. This is reproducible at will. What could be wrong? What could be made to make samba filesystem also behave the same way to throw exceptions (Exceptions are good than that not at all knowing there is a file that is deleted but being still written onto.) Ok, I think the reason that you're having this problem is that you're running Samba on Solaris in this case, sad to say. I don't believe Sun have exposed kernel level oplock (lease) capability to user space processes, so Samba on Solaris has no way of knowing that a unix user deleted the file. Samba running on Linux, (or SGI Irix) has kernel level oplocks, so can detect access from the local filesystem. As the NetApp runs a custom kernel (derived a long time ago from FreeBSD I believe) then their CIFS implementation (like Samba on Linux) knows when a NFS user has modified the file. Jeremy. Thanks Jeremy. Appreciate your response. That actually sounds interesting... do we have this documented or referenced as a bug somewhere that I can lookup? What I see from the CIFS protocol: - When client B opens the file, the server must synchronize with client A in case client A has any buffered locks. Once it is synchronized, client B's open request may be completed. Client B, however, is informed that he has a level II oplock, rather than an exclusive oplock to the file. In this case, no client that has the file open with a level II oplock may buffer any lock information on the local client machine. This allows the server to guarantee that if any write operation is performed, it need only notify the level II clients that the lock should be broken without having to synchronize all of the accessors of the file. The level II oplock may be broken to none, meaning that some client that had the file opened has now performed a write operation to the file. I do not understand whether Solaris fails to respect the level II oplock or how does Samba can be made aware of the kernel level oplocks (is there a no way?). BTW, to check it myself on what you said I ran samba-3.0.25 on a Linux machine with kernel version 2.4.21-47.0.1.ELsmp and ran smbd and then did the same tests. - Ran java program on Windows which writes to the file continuously on a samba exported filesystem from a Linux box - on the Linux terminal, I go and delete the file - Windows does NOT recognise that there is a opened file deleted and the Java program does NOT thrown any exception... sadly. So, I do not have a Linux box with kernel -2.6, so if that means to say that Linux kernel has introduced kernel level oplocks facility in the 2.6 kernel then I would have to try that... Thanks. -- To unsubscribe from this list go to the following URL and read the instructions: https://lists.samba.org/mailman/options/samba
Re: [Samba] Difference in Samba and CIFS interms of keeping the deleted files opened
On Tue, Jul 21, 2009 at 12:10 PM, Nikhil mnik...@gmail.com wrote: On Tue, Jul 21, 2009 at 12:12 AM, Jeremy Allison j...@samba.org wrote: On Mon, Jul 20, 2009 at 10:14:49PM +0530, Nikhil wrote: Hi, We have a CIFS server running on a NetApp server and a Solaris host running Samba-3.3.2. When we mount both the filesystems to a Drive on a Windows using the net use command and then try to run a java program which basically does nothing but continuosly writes a data chunk to a file. On a side note, these same filesystems are accessible on a Solaris (unix) host too. When the java program is run and a file is being generated, I go to my unix terminal and happen to delete the file generated by the java program. Interestingly, there is an IOexception caught in the java program running on the Windows machine, when the file is deleted on the CIFS based filesystem (available on Solaris as a NFS filesystems) but there is no exception caught when the filesystem happens to be Samba (available on Solaris as /var , a regular partition). I delete the file from Unix as the process demands, but also there is no way to delete a in-use-file in Windows. I would like to understand the differences in Samba and CIFS in this context especially why is that so there is an IOexception for a CIFS based filesystem but not on the samba filesystem. This is reproducible at will. What could be wrong? What could be made to make samba filesystem also behave the same way to throw exceptions (Exceptions are good than that not at all knowing there is a file that is deleted but being still written onto.) Ok, I think the reason that you're having this problem is that you're running Samba on Solaris in this case, sad to say. I don't believe Sun have exposed kernel level oplock (lease) capability to user space processes, so Samba on Solaris has no way of knowing that a unix user deleted the file. Samba running on Linux, (or SGI Irix) has kernel level oplocks, so can detect access from the local filesystem. As the NetApp runs a custom kernel (derived a long time ago from FreeBSD I believe) then their CIFS implementation (like Samba on Linux) knows when a NFS user has modified the file. Jeremy. Thanks Jeremy. Appreciate your response. That actually sounds interesting... do we have this documented or referenced as a bug somewhere that I can lookup? What I see from the CIFS protocol: - When client B opens the file, the server must synchronize with client A in case client A has any buffered locks. Once it is synchronized, client B's open request may be completed. Client B, however, is informed that he has a level II oplock, rather than an exclusive oplock to the file. In this case, no client that has the file open with a level II oplock may buffer any lock information on the local client machine. This allows the server to guarantee that if any write operation is performed, it need only notify the level II clients that the lock should be broken without having to synchronize all of the accessors of the file. The level II oplock may be broken to none, meaning that some client that had the file opened has now performed a write operation to the file. I do not understand whether Solaris fails to respect the level II oplock or how does Samba can be made aware of the kernel level oplocks (is there a no way?). BTW, to check it myself on what you said I ran samba-3.0.25 on a Linux machine with kernel version 2.4.21-47.0.1.ELsmp and ran smbd and then did the same tests. - Ran java program on Windows which writes to the file continuously on a samba exported filesystem from a Linux box - on the Linux terminal, I go and delete the file - Windows does NOT recognise that there is a opened file deleted and the Java program does NOT thrown any exception... sadly. So, I do not have a Linux box with kernel -2.6, so if that means to say that Linux kernel has introduced kernel level oplocks facility in the 2.6 kernel then I would have to try that... Thanks. Jeremy, I looked at the enabling kernel oplocks in the samba configuration file and I have enabled kernel oplocks = yes in the [global] section on both of Linux-2.6.18-92 and Linux-2.4.21-47.0.1.ELsmp kernel machines running the samba and I notice that the behaviour is not as what is said. I still do not see the exception being NOT caught on Windows java program when I delete the file from a Unix terminal. Any idea, where I could be going wrong? -- To unsubscribe from this list go to the following URL and read the instructions: https://lists.samba.org/mailman/options/samba
Re: [Samba] can't get Samba users from Window s
Hello! I reinstalled samba 3.2.5 package. My config: [global] workgroup = BYTERG interfaces = 127.0.0.0/8, eth0 bind interfaces only = Yes obey pam restrictions = Yes passdb backend = tdbsam:/etc/samba/passdb.tdb passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\sUNIX\spassword:* %n\n *Retype\snew\sUNIX\spassword:* %n\n *password\supdated\ssuccessfully* . log level = 3 tdb:5 syslog = 0 log file = /var/log/samba/log.%m max log size = 1000 load printers = No dns proxy = No panic action = /usr/share/samba/panic-action %d invalid users = root inherit permissions = Yes inherit acls = Yes ea support = Yes map acl inherit = Yes hide unreadable = Yes map archive = No map readonly = no store dos attributes = Yes dos filemode = Yes [share] path = /samba/share valid users = @samba read only = No create mask = 0664 directory mask = 0775 [develop] path = /samba/develop valid users = @samba admin users = test read only = No create mask = 0660 directory mask = 0770 pdbedit -V Version 3.2.5 pdbedit -L test:1002:Test Samba admin pdbedit -L -v --- Unix username:test NT username: Account Flags:[U ] User SID: S-1-5-21-1488189787-3168271358-2500469969-3004 Primary Group SID:S-1-5-21-1488189787-3168271358-2500469969-513 Full Name:Test Samba admin Home Directory: \\file\test HomeDir Drive: Logon Script: Profile Path: \\file\test\profile Domain: FILE Account desc: Workstations: Munged dial: Logon time: 0 Logoff time: never Kickoff time: never Password last set:Tue, 21 Jul 2009 12:05:56 MSD Password can change: Tue, 21 Jul 2009 12:05:56 MSD Password must change: never Last bad password : 0 Bad password count : 0 Logon hours : FF In the attach log when I connect to share and try to get Samba users. And again I get error about many connections. How can I solve this? Thanks. -- To unsubscribe from this list go to the following URL and read the instructions: https://lists.samba.org/mailman/options/samba
Re: [Samba] can't get Samba users from Windows
On Tue, Jul 21, 2009 at 12:22:56PM +0400, Kirill Brilliantov wrote: Hello! I reinstalled samba 3.2.5 package. My config: Log didn't make it to the list. Volker signature.asc Description: Digital signature -- To unsubscribe from this list go to the following URL and read the instructions: https://lists.samba.org/mailman/options/samba
Re: [Samba] can't get Samba users from Window s
On Tue, Jul 21, 2009 at 12:22:56PM +0400, Kirill Brilliantov wrote: Hello! I reinstalled samba 3.2.5 package. My config: Log didn't make it to the list. Volker This is strange. Log is very big for include it in the message. I attache it again. If you will not receive log again then tell me what part of log do you need and with what parameters I need to make it. And I will send it as plain text. -- To unsubscribe from this list go to the following URL and read the instructions: https://lists.samba.org/mailman/options/samba
Re: [Samba] can't get Samba users from Windows
Hallo, Kirill, Du meintest am 21.07.09: Log didn't make it to the list. This is strange. Log is very big for include it in the message. I attache it again. This mailing list doesn't allow attachments. But perhaps you can copy the log file into the mail text. Viele Gruesse! Helmut -- To unsubscribe from this list go to the following URL and read the instructions: https://lists.samba.org/mailman/options/samba
Re: [Samba] Difference in Samba and CIFS interms of keeping the deleted files opened
Nikhil, I looked at the enabling kernel oplocks in the samba configuration file and I have enabled kernel oplocks = yes in the [global] section on both of Linux-2.6.18-92 and Linux-2.4.21-47.0.1.ELsmp kernel machines running the samba and I notice that the behaviour is not as what is said. I still do not see the exception being NOT caught on Windows java program when I delete the file from a Unix terminal. Any idea, where I could be going wrong? It sounds more like smbd maintains the opens file descriptor as long as the client has an open file handle. Standard POSIX semantics allow you to delete open files with the inode finally being released after the last open fd is closed. I could speculate that it may be less to do with CIFS and more to do with the server OS. But that is pure speculation. Have you looked at a network trace to see which SMB op caused the IO Exception? Does truncating rather than removing the file change the application behavior? cheers, jerry -- = http://www.plainjoe.org/ What man is a man who does not make the world better? --Balian signature.asc Description: OpenPGP digital signature -- To unsubscribe from this list go to the following URL and read the instructions: https://lists.samba.org/mailman/options/samba
Re: [Samba] Difference in Samba and CIFS interms of keeping the deleted files opened
On Tue, Jul 21, 2009 at 5:06 PM, Gerald Carter je...@plainjoe.org wrote: Nikhil, I looked at the enabling kernel oplocks in the samba configuration file and I have enabled kernel oplocks = yes in the [global] section on both of Linux-2.6.18-92 and Linux-2.4.21-47.0.1.ELsmp kernel machines running the samba and I notice that the behaviour is not as what is said. I still do not see the exception being NOT caught on Windows java program when I delete the file from a Unix terminal. Any idea, where I could be going wrong? It sounds more like smbd maintains the opens file descriptor as long as the client has an open file handle. Standard POSIX semantics allow you to delete open files with the inode finally being released after the last open fd is closed. I could speculate that it may be less to do with CIFS and more to do with the server OS. But that is pure speculation. Have you looked at a network trace to see which SMB op caused the IO Exception? Does truncating rather than removing the file change the application behavior? cheers, jerry -- = http://www.plainjoe.org/ What man is a man who does not make the world better? --Balian Hi Jeremy, Yeah.. I tried oplocking thing (btw, is there any set-direct-go howto on oplocking configuration parameters to be used smb.conf?) and checked via the smbstatus that the file is being into the samba lock. But when I rm the file from the Unix terminal, the windows program does not detect the file deletion. it may be less to do with CIFS and more to do with the server OS. But that is pure speculation. agreed. I am running Solaris-10 where kernel oplock is not available, so will rule that out. I have linux box with 2.6 kernel and kernel oplocks=yes set in smb.conf; but that still does not help in getting the sync set. Does truncating rather than removing the file change the application behavior? Interesting. I do /bin/cp -f /dev/null /var/tmp/test.log and I notice that ls -l does not show that the file is truncated at all even though I do it multiple times; ls -l still does not show that the file is truncated. Am I missing something that why is rm command or deleting the file behaviour would differ? BTW, this is the output of testparam -s -v | grep -i lock output: Load smb config files from /var/samba/smb.conf Processing section [homes] Processing section [printers] Processing section [tmpdir] Loaded services file OK. Server role: ROLE_STANDALONE kernel oplocks = Yes lock spin time = 200 oplock break wait time = 0 lock directory = /var/samba/locks usershare path = /var/samba/locks/usershares block size = 1024 veto oplock files = blocking locks = Yes fake oplocks = No locking = Yes oplocks = Yes level2 oplocks = Yes oplock contention limit = 2 posix locking = Yes strict locking = Yes Can you please let me know if any of the parameters need something else/need not put? Thanks again, Jeremy. -- Nikhil -- To unsubscribe from this list go to the following URL and read the instructions: https://lists.samba.org/mailman/options/samba
[Samba] Samba 3.2.11 and Windows Vista
-BEGIN PGP SIGNED MESSAGE- Hash: SHA1 Does anyone know why Windows Vista clients will not automatically mount the network share when they authenticate to a samba domain? The Windows XP clients do it just fine, but I noticed that I have to manually add the network share after the client authenticates. Is there something that needs to be appended to the samba config to accommodate Windows Vista clients? If not, and since I am not a Windows person, how would I setup the clients to do this automatically? Thanks. -BEGIN PGP SIGNATURE- Version: GnuPG v1.4.9 (GNU/Linux) Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org iEYEARECAAYFAkpl1ckACgkQ5B+8XEnAvqtvoACgiUaDfkpf0ebwQn1vokgeoxv4 zHMAnj74PgC/2r6Ds3/4Ekw4uyLBwaBO =YdXJ -END PGP SIGNATURE- -- To unsubscribe from this list go to the following URL and read the instructions: https://lists.samba.org/mailman/options/samba
Re: [Samba] Crazied NTLM_AUTH on samba 3.4.0
On Mon, Jul 20, 2009 at 07:59:25PM -0300, Gabriel Cavalcante wrote: I've realized when the error occurs the samba don't log the auth (or the try of auth). PLEASE SOMEONE CAN HELP ME:? ITS a BuG? Log a bug at bugzilla.samba.org and attach the debug level 10 logs from smbd and ntlm_auth please. Jeremy. -- To unsubscribe from this list go to the following URL and read the instructions: https://lists.samba.org/mailman/options/samba
Re: [Samba] Sharing same directory with Samba and NFS
I'm running a single RHEL5 server that is currently serving out home directories and a public share via Samba. My Linux desktop clients would like to access these same shares via NFS. So, the age-old question, is it possible or am I looking at a lifetime of pain and corrupted data? I will eventually be running a cluster of 3 servers, one running Samba, one running NFS and one as a standby. I've read that it's possible but. nothing really specific. Hi. I can only speak anecdotally, but we've been using Samba to serve filesystems to Windows clients from a Solaris server while simultaneously sharing the same filesystems to other Solaris, AIX and Linux boxes using NFS for over ten years without any issues. JR -- To unsubscribe from this list go to the following URL and read the instructions: https://lists.samba.org/mailman/options/samba
Re: [Samba] Sharing same directory with Samba and NFS
On Tue, Jul 21, 2009 at 08:58:27PM +, jrmailgate-sa...@yahoo.co.uk wrote: I'm running a single RHEL5 server that is currently serving out home directories and a public share via Samba. My Linux desktop clients would like to access these same shares via NFS. So, the age-old question, is it possible or am I looking at a lifetime of pain and corrupted data? I will eventually be running a cluster of 3 servers, one running Samba, one running NFS and one as a standby. I've read that it's possible but. nothing really specific. Hi. I can only speak anecdotally, but we've been using Samba to serve filesystems to Windows clients from a Solaris server while simultaneously sharing the same filesystems to other Solaris, AIX and Linux boxes using NFS for over ten years without any issues. It certainly works for most normal cases, it can get a little funny when you need specific behaviors with notifications etc. Jeremy. -- To unsubscribe from this list go to the following URL and read the instructions: https://lists.samba.org/mailman/options/samba
Re: [Samba] Only administrator works in ldapsam:editposix domain
Nevermind, I found it. I needed to add the user to the group in unix (or unix/ldap) first, then to the nt group. -- To unsubscribe from this list go to the following URL and read the instructions: https://lists.samba.org/mailman/options/samba
Re: [Samba] Only administrator works in ldapsam:editposix domain
On Tue, Jul 21, 2009 at 6:53 PM, Kyle Schmittkyleaschm...@gmail.com wrote: Nevermind, I found it. I needed to add the user to the group in unix (or unix/ldap) first, then to the nt group. If you use ldapsam:editposix, that's is automatically done for you with the net command. Are you sure your nsswitch.conf is configured correctly? -- To unsubscribe from this list go to the following URL and read the instructions: https://lists.samba.org/mailman/options/samba
[Samba] File Size Limit - Why/How?
Hello Samba Lists: I am trying to read a 22TB file from a system running OpenSuSE 10.3/x64 (Using whatever version of Samba came out with 10.3/x64). The file is on a 30TB XFS volume. I'm connecting over 10GBit Ethernet from a Windows Server 2003/X64 client. If I try to read the 22TB file, I get the message Access Denied, but if I try to read 100GB files from the same volume, they read with no problems - please help...Note that I'm not trying to write - only read... Lance -- To unsubscribe from this list go to the following URL and read the instructions: https://lists.samba.org/mailman/options/samba
Re: [Samba] File Size Limit - Why/How?
On Tue, Jul 21, 2009 at 04:57:26PM -0700, Lance Gropper wrote: Hello Samba Lists: I am trying to read a 22TB file from a system running OpenSuSE 10.3/x64 (Using whatever version of Samba came out with 10.3/x64). The file is on a 30TB XFS volume. I'm connecting over 10GBit Ethernet from a Windows Server 2003/X64 client. If I try to read the 22TB file, I get the message Access Denied, but if I try to read 100GB files from the same volume, they read with no problems - please help...Note that I'm not trying to write - only read... Can you post a debug level 10 of the smbd log when you try and read a file this size ? Jeremy. -- To unsubscribe from this list go to the following URL and read the instructions: https://lists.samba.org/mailman/options/samba
Re: [Samba] File Size Limit - Why/How?
Hello Jeremy: How do I do that? Lance On Tue, Jul 21, 2009 at 5:04 PM, Jeremy Allison j...@samba.org wrote: On Tue, Jul 21, 2009 at 04:57:26PM -0700, Lance Gropper wrote: Hello Samba Lists: I am trying to read a 22TB file from a system running OpenSuSE 10.3/x64 (Using whatever version of Samba came out with 10.3/x64). The file is on a 30TB XFS volume. I'm connecting over 10GBit Ethernet from a Windows Server 2003/X64 client. If I try to read the 22TB file, I get the message Access Denied, but if I try to read 100GB files from the same volume, they read with no problems - please help...Note that I'm not trying to write - only read... Can you post a debug level 10 of the smbd log when you try and read a file this size ? Jeremy. -- To unsubscribe from this list go to the following URL and read the instructions: https://lists.samba.org/mailman/options/samba
Re: [Samba] File Size Limit - Why/How?
How do I do that? Set your debug level in smb.conf to 10 and post the contents of /var/log/samba/smbd.log You probably want to stop samba delete this file then restart samba and then try your file operation. John -- To unsubscribe from this list go to the following URL and read the instructions: https://lists.samba.org/mailman/options/samba
Re: [Samba] File Size Limit - Why/How?
Hello John and Jeremy: It'll have to be tomorrow - The arrays are busy right now running a test to see if the limit is 2TB...100GB works. Lance On Tue, Jul 21, 2009 at 6:38 PM, John Drescher dresche...@gmail.com wrote: How do I do that? Set your debug level in smb.conf to 10 and post the contents of /var/log/samba/smbd.log You probably want to stop samba delete this file then restart samba and then try your file operation. John -- To unsubscribe from this list go to the following URL and read the instructions: https://lists.samba.org/mailman/options/samba
Build status as of Tue Jul 21 06:00:01 2009
URL: http://build.samba.org/ --- /home/build/master/cache/broken_results.txt.old 2009-07-20 00:00:08.0 -0600 +++ /home/build/master/cache/broken_results.txt 2009-07-21 00:00:05.0 -0600 @@ -1,22 +1,22 @@ -Build status as of Mon Jul 20 06:00:02 2009 +Build status as of Tue Jul 21 06:00:01 2009 Build counts: Tree Total Broken Panic build_farm 0 0 0 -ccache 3 1 0 +ccache 2 1 0 distcc 0 0 0 ldb 33 33 0 -libreplace 29 12 0 +libreplace 31 12 0 lorikeet 0 0 0 -pidl 20 2 0 -ppp 2 0 0 +pidl 22 2 0 +ppp 0 0 0 rsync1 1 0 samba-docs 0 0 0 samba-web0 0 0 -samba_3_current 1 0 0 -samba_3_master 32 27 6 +samba_3_current 0 0 0 +samba_3_master 32 28 7 samba_3_next 32 30 1 -samba_4_0_test 33 26 3 -talloc 29 29 0 -tdb 26 26 0 +samba_4_0_test 33 26 1 +talloc 32 32 0 +tdb 30 30 0
[SCM] Samba Shared Repository - branch v3-4-test updated - release-4-0-0alpha7-1189-gd53cb77
The branch, v3-4-test has been updated via d53cb77ab21cc6edc2f1767bb56a75901c4c1709 (commit) from e7c5f7c924ae40ce3f36d352d55a92a906d92181 (commit) http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-4-test - Log - commit d53cb77ab21cc6edc2f1767bb56a75901c4c1709 Author: Jeremy Allison j...@samba.org Date: Fri Jul 17 17:33:28 2009 -0700 Fix bug #6564 - SetPrinter fails (panics) as non root. Missing become_root()/unbecome_root() around reload_services. Jeremy. --- Summary of changes: source3/rpc_server/srv_spoolss_nt.c |4 source3/smbd/server.c |1 + 2 files changed, 5 insertions(+), 0 deletions(-) Changeset truncated at 500 lines: diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c index 79f0f14..855aa30 100644 --- a/source3/rpc_server/srv_spoolss_nt.c +++ b/source3/rpc_server/srv_spoolss_nt.c @@ -309,7 +309,9 @@ WERROR delete_printer_hook(TALLOC_CTX *ctx, NT_USER_TOKEN *token, const char *sh return WERR_BADFID; /* What to return here? */ /* go ahead and re-read the services immediately */ + become_root(); reload_services(false); + unbecome_root(); if ( lp_servicenumber( sharename ) 0 ) return WERR_ACCESS_DENIED; @@ -6031,7 +6033,9 @@ bool add_printer_hook(TALLOC_CTX *ctx, NT_USER_TOKEN *token, NT_PRINTER_INFO_LEV } /* reload our services immediately */ + become_root(); reload_services(false); + unbecome_root(); numlines = 0; /* Get lines and convert them back to dos-codepage */ diff --git a/source3/smbd/server.c b/source3/smbd/server.c index a6689b8..2c5ce40 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -94,6 +94,7 @@ static void smb_conf_updated(struct messaging_context *msg, { DEBUG(10,(smb_conf_updated: Got message saying smb.conf was updated. Reloading.\n)); + change_to_root_user(); reload_services(False); } -- Samba Shared Repository
Re: [SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha8-494-geba2eb4
Hi Jeremy, Move the initialization of smbd_server_conn from smbd/process, after the accept and fork, to smbd_init_globals(), so it's done immediately on server startup. This is needed as some messages are sent to all active smbd processes (including the master listening daemon). If it gets a message that forces it to scan it's current connections (ie. conn_find()) then it discovers that sconn-smb1.tcons.Connections dereferences null (as sconn == NULL in the parent) and crashes. Yes, I could fix all cases where sconn is used and explicitly check for NULL but this fix is easier. It means that the smbd_event_context() is initialized in the master daemon and then re-initialized after fork, but that should be being done correctly in every fork call anyway. Without this change the previous fix 6a9e0039100b57f9626e87defec6720c476b9789 still panics in the reproducible test case for bug 6564, as this is one case where such a message (MSG_SMB_CONF_UPDATED) is sent to the parent. Metze please check. This change passes valgrind. Jeremy. I think it is thte wrong approach, smbd_server_connection represents the state of a connected client/a smbd child process. I added it so that we strictly separate code that runs in the parent from code that runs in the child. I'd really like to understand what the problem is. From reading the code I can't find where we hit any panic. Can you send me the backtrace please? metze signature.asc Description: OpenPGP digital signature
[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha8-541-g7601041
The branch, master has been updated via 760104188d0d2ed96ec4a70138e6d0bf86d797ed (commit) from 8e04c69e027260e7e1f0a4cf3e58e31ed4084d8b (commit) http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log - commit 760104188d0d2ed96ec4a70138e6d0bf86d797ed Author: Rusty Russell ru...@rustcorp.com.au Date: Tue Jul 21 16:23:35 2009 +0930 tdb: fix locking error 54a51839ea65aa788b18fce8de0ae4f9ba63e4e7 Make tdb transaction lock recursive (samba version) was broken: I cleaned it up and prevented it from ever unlocking. To see the problem: $ bin/tdbtorture -s 1248142523 tdb_brlock failed (fd=3) at offset 8 rw_type=1 lck_type=14 len=1 tdb_transaction_lock: failed to get transaction lock tdb_transaction_start failed: Resource deadlock avoided My testcase relied on the *count* being correct, which it was. Fixing that now. Signed-off-by: Rusty Russell ru...@rustcorp.com.au Signed-off-by: Michael Adam ob...@samba.org --- Summary of changes: lib/tdb/common/lock.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) Changeset truncated at 500 lines: diff --git a/lib/tdb/common/lock.c b/lib/tdb/common/lock.c index d812fbf..2c72ae1 100644 --- a/lib/tdb/common/lock.c +++ b/lib/tdb/common/lock.c @@ -328,7 +328,7 @@ int tdb_transaction_unlock(struct tdb_context *tdb) if (tdb-global_lock.count) { return 0; } - if (tdb-transaction_lock_count 0) { + if (tdb-transaction_lock_count 1) { tdb-transaction_lock_count--; return 0; } -- Samba Shared Repository
[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha8-543-g319a97b
The branch, master has been updated via 319a97bce9f77161e62de9f86ddbec58629238cb (commit) via d5efb38151dea179af920a1a279d974a47b6bfd6 (commit) from 760104188d0d2ed96ec4a70138e6d0bf86d797ed (commit) http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log - commit 319a97bce9f77161e62de9f86ddbec58629238cb Author: Michael Adam ob...@samba.org Date: Tue Jul 21 12:35:48 2009 +0200 s3:dbwrap: use the transaction wrapper in dbwrap_trans_store(). Now dbwrap_util.c contains only one call to each of transaction_start, transaction_commit and transaction_cancel. Michael commit d5efb38151dea179af920a1a279d974a47b6bfd6 Author: Michael Adam ob...@samba.org Date: Tue Jul 21 12:26:14 2009 +0200 s3:dbwrap: use the transaction wrapper in dbwrap_trans_delete(). Michael --- Summary of changes: source3/lib/dbwrap_util.c | 89 ++--- 1 files changed, 35 insertions(+), 54 deletions(-) Changeset truncated at 500 lines: diff --git a/source3/lib/dbwrap_util.c b/source3/lib/dbwrap_util.c index 7dbeb63..c3ab93c 100644 --- a/source3/lib/dbwrap_util.c +++ b/source3/lib/dbwrap_util.c @@ -179,96 +179,77 @@ int32 dbwrap_change_int32_atomic(struct db_context *db, const char *keystr, return 0; } -NTSTATUS dbwrap_trans_store(struct db_context *db, TDB_DATA key, TDB_DATA dbuf, - int flag) +struct dbwrap_store_context { + TDB_DATA *key; + TDB_DATA *dbuf; + int flag; +}; + +static NTSTATUS dbwrap_store_action(struct db_context *db, void *private_data) { - int res; struct db_record *rec = NULL; NTSTATUS status; + struct dbwrap_store_context *store_ctx; - res = db-transaction_start(db); - if (res != 0) { - DEBUG(5, (transaction_start failed\n)); - return NT_STATUS_INTERNAL_DB_CORRUPTION; - } + store_ctx = (struct dbwrap_store_context *)private_data; - rec = db-fetch_locked(db, talloc_tos(), key); + rec = db-fetch_locked(db, talloc_tos(), *(store_ctx-key)); if (rec == NULL) { DEBUG(5, (fetch_locked failed\n)); - status = NT_STATUS_NO_MEMORY; - goto cancel; + return NT_STATUS_NO_MEMORY; } - status = rec-store(rec, dbuf, flag); + status = rec-store(rec, *(store_ctx-dbuf), store_ctx-flag); if (!NT_STATUS_IS_OK(status)) { DEBUG(5, (store returned %s\n, nt_errstr(status))); - goto cancel; } TALLOC_FREE(rec); + return status; +} - res = db-transaction_commit(db); - if (res != 0) { - DEBUG(5, (tdb_transaction_commit failed\n)); - status = NT_STATUS_INTERNAL_DB_CORRUPTION; - TALLOC_FREE(rec); - return status; - } +NTSTATUS dbwrap_trans_store(struct db_context *db, TDB_DATA key, TDB_DATA dbuf, + int flag) +{ + NTSTATUS status; + struct dbwrap_store_context store_ctx; - return NT_STATUS_OK; + store_ctx.key = key; + store_ctx.dbuf = dbuf; + store_ctx.flag = flag; - cancel: - TALLOC_FREE(rec); + status = dbwrap_trans_do(db, dbwrap_store_action, store_ctx); - if (db-transaction_cancel(db) != 0) { - smb_panic(Cancelling transaction failed); - } return status; } -NTSTATUS dbwrap_trans_delete(struct db_context *db, TDB_DATA key) +static NTSTATUS dbwrap_delete_action(struct db_context * db, void *private_data) { - int res; - struct db_record *rec = NULL; NTSTATUS status; + struct db_record *rec; + TDB_DATA *key = (TDB_DATA *)private_data; - res = db-transaction_start(db); - if (res != 0) { - DEBUG(5, (transaction_start failed\n)); - return NT_STATUS_INTERNAL_DB_CORRUPTION; - } - - rec = db-fetch_locked(db, talloc_tos(), key); + rec = db-fetch_locked(db, talloc_tos(), *key); if (rec == NULL) { DEBUG(5, (fetch_locked failed\n)); - status = NT_STATUS_NO_MEMORY; - goto cancel; + return NT_STATUS_NO_MEMORY; } status = rec-delete_rec(rec); if (!NT_STATUS_IS_OK(status)) { DEBUG(5, (delete_rec returned %s\n, nt_errstr(status))); - goto cancel; } - TALLOC_FREE(rec); - - res = db-transaction_commit(db); - if (res != 0) { - DEBUG(5, (tdb_transaction_commit failed\n)); - status = NT_STATUS_INTERNAL_DB_CORRUPTION; - TALLOC_FREE(rec); - return status; - } + talloc_free(rec); + return status; +} - return
Re: [SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha8-494-geba2eb4
On Tue, Jul 21, 2009 at 08:22:46AM +0200, Stefan (metze) Metzmacher wrote: Hi Jeremy, Move the initialization of smbd_server_conn from smbd/process, after the accept and fork, to smbd_init_globals(), so it's done immediately on server startup. This is needed as some messages are sent to all active smbd processes (including the master listening daemon). If it gets a message that forces it to scan it's current connections (ie. conn_find()) then it discovers that sconn-smb1.tcons.Connections dereferences null (as sconn == NULL in the parent) and crashes. Yes, I could fix all cases where sconn is used and explicitly check for NULL but this fix is easier. It means that the smbd_event_context() is initialized in the master daemon and then re-initialized after fork, but that should be being done correctly in every fork call anyway. Without this change the previous fix 6a9e0039100b57f9626e87defec6720c476b9789 still panics in the reproducible test case for bug 6564, as this is one case where such a message (MSG_SMB_CONF_UPDATED) is sent to the parent. Metze please check. This change passes valgrind. Jeremy. I think it is thte wrong approach, smbd_server_connection represents the state of a connected client/a smbd child process. I added it so that we strictly separate code that runs in the parent from code that runs in the child. I'd really like to understand what the problem is. From reading the code I can't find where we hit any panic. Oh, I thought the above description was good enough, sorry :-). Can you send me the backtrace please? Sure, I'll reproduce and send it. I'm glad you're looking at it, it's an ugly fix but I couldn't see an elegant way of fixing it without filling the code with if (!sconn) return statements everywhere. Jeremy.
[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha8-544-g8b6ec5b
The branch, master has been updated via 8b6ec5b82cbc66cf8efd9d0713e36aac63c8c49e (commit) from 319a97bce9f77161e62de9f86ddbec58629238cb (commit) http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log - commit 8b6ec5b82cbc66cf8efd9d0713e36aac63c8c49e Author: Christian Ambach christian.amb...@de.ibm.com Date: Tue Jul 21 13:56:17 2009 +0200 do not log chdir with level 0 if reason is access denied this changes the level of logs caused by users trying to access shares or subdirectories for which they do not have access to in the ACL this can fill up the samba log even with log level 0 and is more an expected kind of logs that IMHO should not be logged with such a high level. All other errors while chdir() will still be logged with level 0 Signed-off-by: Christian Ambach christian.amb...@de.ibm.com --- Summary of changes: source3/smbd/service.c |4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) Changeset truncated at 500 lines: diff --git a/source3/smbd/service.c b/source3/smbd/service.c index 0124b2b..a043288 100644 --- a/source3/smbd/service.c +++ b/source3/smbd/service.c @@ -182,8 +182,8 @@ bool set_current_service(connection_struct *conn, uint16 flags, bool do_chdir) if (do_chdir vfs_ChDir(conn,conn-connectpath) != 0 vfs_ChDir(conn,conn-origpath) != 0) { - DEBUG(0,(chdir (%s) failed\n, -conn-connectpath)); +DEBUG(((errno!=EACCES)?0:3),(chdir (%s) failed, reason: %s\n, + conn-connectpath, strerror(errno))); return(False); } -- Samba Shared Repository
[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha8-548-g424e763
The branch, master has been updated via 424e7636957f07c044ee24a9bbf650b02291939b (commit) via 9d148f75c712d4cf6863f8eb1256f806eac8d38b (commit) via b91156d4ae8f1b0e60a4cdacd1aa34b110b6451a (commit) via 143625661300e7ee52e969bc3790e50a0016b88b (commit) from 8b6ec5b82cbc66cf8efd9d0713e36aac63c8c49e (commit) http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log - commit 424e7636957f07c044ee24a9bbf650b02291939b Author: Stefan Metzmacher me...@samba.org Date: Tue Jul 21 16:48:06 2009 +0200 frsrpc.idl: make the chunk array in frsrpc_CommPktChunkCtr dynamic We add an extra num_chunks to the frsrpc_CommPktChunkCtr structure and use hand modified ndr_push/pull functions to let it not appear on the wire. metze commit 9d148f75c712d4cf6863f8eb1256f806eac8d38b Author: Stefan Metzmacher me...@samba.org Date: Tue Jul 21 16:05:44 2009 +0200 frsrpc.idl: almost complete the idl for the frsrpc_FrsSendCommPkt() function TODO: The amount of chunks is dynamic, we need to fix that metze commit b91156d4ae8f1b0e60a4cdacd1aa34b110b6451a Author: Stefan Metzmacher me...@samba.org Date: Tue Jul 21 16:04:35 2009 +0200 frsapi.idl: fill the frsapi_WriterCommand() function metze commit 143625661300e7ee52e969bc3790e50a0016b88b Author: Stefan Metzmacher me...@samba.org Date: Tue Jul 21 16:04:07 2009 +0200 frsapi.idl: fix some unknown field names metze --- Summary of changes: librpc/idl/frsapi.idl| 23 ++- librpc/idl/frsrpc.idl| 402 +- librpc/ndr/ndr_frsrpc.c | 94 ++ librpc/ndr/ndr_frsrpc.h | 35 source4/librpc/config.mk |2 +- source4/torture/rpc/frsapi.c | 18 +- 6 files changed, 468 insertions(+), 106 deletions(-) create mode 100644 librpc/ndr/ndr_frsrpc.c create mode 100644 librpc/ndr/ndr_frsrpc.h Changeset truncated at 500 lines: diff --git a/librpc/idl/frsapi.idl b/librpc/idl/frsapi.idl index 11593f4..ea7880c 100644 --- a/librpc/idl/frsapi.idl +++ b/librpc/idl/frsapi.idl @@ -98,24 +98,31 @@ interface frsapi WERROR frsapi_IsPathReplicated( [in,unique] [string,charset(UTF16)] uint16 *path, [in] frsapi_ReplicaSetType replica_set_type, - [out] uint32 *unknown1, - [out] uint32 *unknown2, - [out] uint32 *unknown3, + [out] uint32 *replicated, + [out] uint32 *primary, + [out] uint32 *root, [out] GUID *replica_set_guid ); // /* Function 0x09 */ - [todo] void FRSAPI_WRITER_COMMAND(); + typedef [v1_enum] enum { + FRSAPI_WRITER_COMMAND_FREEZE= 0x0001, + FRSAPI_WRITER_COMMAND_THAW = 0x0002 + } frsapi_WriterCommandsValues; + + WERROR frsapi_WriterCommand( + [in] frsapi_WriterCommandsValues command + ); // /* Function 0x0a */ /* not supported before w2k3 sp2 */ WERROR frsapi_ForceReplication( - [in,unique] GUID *guid1, - [in,unique] GUID *guid2, - [in,unique] [charset(UTF16),string] uint16 *replica_set, - [in,unique] [charset(UTF16),string] uint16 *partner_name + [in,unique] GUID *replica_set_guid, + [in,unique] GUID *connection_guid, + [in,unique] [charset(UTF16),string] uint16 *replica_set_name, + [in,unique] [charset(UTF16),string] uint16 *partner_dns_name ); } diff --git a/librpc/idl/frsrpc.idl b/librpc/idl/frsrpc.idl index 1019a25..233fbcb 100644 --- a/librpc/idl/frsrpc.idl +++ b/librpc/idl/frsrpc.idl @@ -7,6 +7,7 @@ import misc.idl; version(1.1), endpoint(ncacn_ip_tcp:, ncalrpc:), helpstring(File Replication Service), + helper(../librpc/ndr/ndr_frsrpc.h), pointer_default(unique) ] interface frsrpc @@ -14,112 +15,337 @@ interface frsrpc /*/ /* Function 0x00 */ - /* TAG:3 this TLV contains a GUID and the name of the server sending -* the call -*/ typedef struct { - [subcontext(4)] GUID unknown1; - [subcontext(4)] nstring source_server; - } frsrpc_FrsSendCommPktChunkDataSSRV; + [subcontext(4)] GUID guid; + [subcontext(4)] nstring name; + } frsrpc_CommPktChunkGuidName; - /* TAG:4 this TLV contains a GUID and the name of the destination -* server the PDU is sent to -*/ typedef struct { - [subcontext(4)] GUID unknown1; - [subcontext(4)] nstring dest_server; - } frsrpc_FrsSendCommPktChunkDataDSRV; + hyper vsn; +
[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha8-554-g605649e
The branch, master has been updated via 605649edc3d3ce4f760b08fd8ee5684007369be8 (commit) via 23c703a01eddfa9103352e0ad43bc9fe39ea0c27 (commit) via 00e267008defe18475115a4300addf3cbcabff5a (commit) via 4860fc4951a7dbd80d8938f4dba49c42a12b4d00 (commit) via 78ce9dd471568773760292ea18478af51c11d71a (commit) via 6b49f28592af5c998642bd5d5f76b77c79a22cd7 (commit) from 424e7636957f07c044ee24a9bbf650b02291939b (commit) http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log - commit 605649edc3d3ce4f760b08fd8ee5684007369be8 Author: Tim Prouty tpro...@samba.org Date: Tue Jul 21 11:37:51 2009 -0700 s3: plumb smb_filename through some of the trans2 posix_* functions commit 23c703a01eddfa9103352e0ad43bc9fe39ea0c27 Author: Tim Prouty tpro...@samba.org Date: Tue Jul 21 11:35:17 2009 -0700 s3: Remove unnecessary callers of get_full_smb_filename This often times means explicitly denying certain operations on a stream as they are not supported or don't make sense at a particular level. At some point in the future these can be enabled, but for now it's better to remove ambiguity commit 00e267008defe18475115a4300addf3cbcabff5a Author: Tim Prouty tpro...@samba.org Date: Tue Jul 21 10:28:28 2009 -0700 s3: Remove the now unused fname parameter from filename_convert() commit 4860fc4951a7dbd80d8938f4dba49c42a12b4d00 Author: Tim Prouty tpro...@samba.org Date: Tue Jul 21 10:19:00 2009 -0700 s3: Fix RENAME_FLAG_RENAME path to stop calling unix_convert twice commit 78ce9dd471568773760292ea18478af51c11d71a Author: Tim Prouty tpro...@samba.org Date: Tue Jul 21 10:18:10 2009 -0700 s3: Remove unnecessary fname argument from callers of filename_convert commit 6b49f28592af5c998642bd5d5f76b77c79a22cd7 Author: Tim Prouty tpro...@samba.org Date: Tue Jul 21 09:29:59 2009 -0700 s3: Plumb smb_filename through map_open_params_to_ntcreate --- Summary of changes: source3/include/proto.h|6 +- source3/modules/vfs_default.c | 58 +++--- source3/rpc_server/srv_srvsvc_nt.c |6 +- source3/smbd/close.c |5 +- source3/smbd/file_access.c | 10 +-- source3/smbd/filename.c| 16 +-- source3/smbd/nttrans.c | 129 - source3/smbd/open.c| 10 +- source3/smbd/reply.c | 132 -- source3/smbd/smb2_create.c |3 +- source3/smbd/trans2.c | 223 +++- 11 files changed, 250 insertions(+), 348 deletions(-) Changeset truncated at 500 lines: diff --git a/source3/include/proto.h b/source3/include/proto.h index c48cebc..77283d9 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -6320,8 +6320,7 @@ NTSTATUS filename_convert(TALLOC_CTX *mem_ctx, connection_struct *conn, bool dfs_path, const char *name_in, - struct smb_filename **pp_smb_fname, - char **pp_name); + struct smb_filename **pp_smb_fname); /* The following definitions come from smbd/filename_utils.c */ @@ -6589,7 +6588,8 @@ NTSTATUS fcb_or_dos_open(struct smb_request *req, uint32 access_mask, uint32 share_access, uint32 create_options); -bool map_open_params_to_ntcreate(const char *fname, int deny_mode, int open_func, +bool map_open_params_to_ntcreate(const struct smb_filename *smb_fname, +int deny_mode, int open_func, uint32 *paccess_mask, uint32 *pshare_mode, uint32 *pcreate_disposition, diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c index d6a66b0..cdfd28c 100644 --- a/source3/modules/vfs_default.c +++ b/source3/modules/vfs_default.c @@ -218,27 +218,17 @@ static int vfswrap_open(vfs_handle_struct *handle, struct smb_filename *smb_fname, files_struct *fsp, int flags, mode_t mode) { - int result; - NTSTATUS status; - char *fname = NULL; + int result = -1; START_PROFILE(syscall_open); - /* -* XXX: Should an error be returned if there is a stream rather than -* trying to open a filename with a ':'? -*/ - status = get_full_smb_filename(talloc_tos(), smb_fname, - fname); - if (!NT_STATUS_IS_OK(status)) { - errno = map_errno_from_nt_status(status); - return -1; + if (smb_fname-stream_name) { + errno = ENOENT; + goto out; } -