Re: Samba and kernel oplocks - Solved.

Stephen Lee
2002-09-02T23:08:05Z

On Wed, 2002-08-28 at 23:21, Sergey Suleymanov wrote:
> >>>>> Anderson Pereira Ataides writes:
>
> Anderson> I thing problem is not only samba because nfs also have
> Anderson> problem. I have two Linux workstations and when I lock
> Anderson> record in one of them, the other one can't see this lock.
>
> Anderson> Like you I'm waiting for a solution to this problem.
>
> Well, I'm just try locks with samba, and it seems work.
> oplocks = no in smb.conf and this hack to mfs.c
>
> --- src/dosext/mfs/mfs.c.orig Thu Aug 29 10:09:33 2002
> +++ src/dosext/mfs/mfs.c Thu Aug 29 10:08:31 2002
> @@ -3823,11 +3823,16 @@
> the top two bits are set. Shift the top ones by two bits. This
> still allows OLE2 apps to operate, but should stop lockd from
> dieing */
> +#if 0
> if ((larg.l_start & mask) != 0)
> larg.l_start = (larg.l_start & ~mask) | ((larg.l_start & mask) >> 2);
> +#else
> + larg.l_start &= 0x7fffffff;
> +#endif
> ret = fcntl (fd,F_SETLK,&larg);
> Debug0((dbg_fd, "lock fd=%x rc=%x type=%x whence=%x start=%lx, len=%lx\n",
> fd, ret, larg.l_type, larg.l_whence, larg.l_start,larg.l_len));
> + if (ret == -1) SETWORD(&(state->eax), ACCESS_DENIED);
> return ret != -1 ? TRUE : FALSE;
> }
> break;
>
> I don't understand that bit magic, maybe this won't work with
> nfs or something else.
>

I'm happy to say that the above patch allows Foxpro/Dosemu file locks to
be recognized by Samba 2.2.4. This means I can run the Foxpro
application via Dosemu and under MSDOS/Win98/Samba simultaneously! The
only issue I had with the above patch is that the line numbers did not
match my version of Dosemu 1.1.3.2 with keyboard patches. I had to
insert the lines manually.

Now onto stress testing to ensure the changes do not affect Dosemu
stability.

Thanks Sergey!

Stephen