On Mon, Oct 10, 2005 at 04:21:15PM +0100, Dragan Krnic wrote:
> I have an intermittent problem with dangling MS Access DB lock files.
> 
> In a productive environment with N batch queus (each on a separate
> Windows XP Professional) a scheduler PC dispatches the work load to
> a free queue by means of modifying a simple MS Access DB file 
> called "PRIM.mdb", which resides on a Samba 3.0.20 share. Each free
> queue PC polls the same MS Access DB file every 60 seconds to see
> if there is a work packet to be executed by it. If there is a work
> package for it it modifies a state value of the respective work packet 
> in this DB when it starts executing it as well as after the job has 
> been done so that the scheduler knows what's going on.

There's a bug in 3.0.20 that might affect this (btw it's also in
3.0.20a). I know about it because it's my fault :-(.

Here's the patch for 3.0.20, and 3.0.20a.

Jeremy.
--- smbd/open.c 2005-07-28 06:19:42.000000000 -0700
+++ smbd/open.c.new     2005-10-10 09:32:25.000000000 -0700
@@ -1585,13 +1585,6 @@
 
        fsp_open = 
open_file(fsp,conn,fname,psbuf,flags|flags2,unx_mode,access_mask);
 
-       if (!fsp_open && (flags == O_RDWR) && (errno != ENOENT)) {
-               if((fsp_open = open_file(fsp,conn,fname,psbuf,
-                                        O_RDONLY,unx_mode,access_mask)) == 
True) {
-                       flags = O_RDONLY;
-               }
-       }
-
        if (!fsp_open) {
                if(file_existed) {
                        unlock_share_entry(conn, dev, inode);
--- smbd/open.c 2005-09-29 14:52:40.000000000 -0700
+++ smbd/open.c.new     2005-10-06 21:45:37.000000000 -0700
@@ -1585,22 +1585,6 @@
 
        fsp_open = 
open_file(fsp,conn,fname,psbuf,flags|flags2,unx_mode,access_mask);
 
-       if (!fsp_open && (flags2 & O_EXCL) && (errno == EEXIST)) {
-               /*
-                * Two smbd's tried to open exclusively, but only one of them
-                * succeeded.
-                */
-               file_free(fsp);
-               return NULL;
-       }
-
-       if (!fsp_open && (flags == O_RDWR) && (errno != ENOENT)) {
-               if((fsp_open = open_file(fsp,conn,fname,psbuf,
-                                        O_RDONLY,unx_mode,access_mask)) == 
True) {
-                       flags = O_RDONLY;
-               }
-       }
-
        if (!fsp_open) {
                if(file_existed) {
                        unlock_share_entry(conn, dev, inode);
-- 
To unsubscribe from this list go to the following URL and read the
instructions:  https://lists.samba.org/mailman/listinfo/samba

Reply via email to