Latest leases patchset - getting there !

Jeremy Allison jra at samba.org
Tue Nov 18 09:34:55 MST 2014


On Tue, Nov 18, 2014 at 02:07:14PM +0100, Stefan (metze) Metzmacher wrote:
> >         }
> > +#if 0
> >         if ((num_read_oplocks == 1) && (fsp->oplock_type == LEASE_OPLOCK)) {
> >                 DEBUG(10, ("We're the only reader, don't break\n"));
> >                 return;
> >         }
> > +#endif
> 
> This is just for performance, we'll still skip breaking
> our own lease within do_break_to_none().

Did change behavior though, so I don't thnk that's
right. Also the logic there is incorrect, as we
can have a LEASE_OPLOCK of type SMB_LEASE_NONE
and a LEVEL2 oplock from another smbd as well in
the share mode db for a file. That optimization
removes the break to none needed on write on the
SMB_LEASE_NONE handle.

> I think we need to use smb2_lease_equal() there instead of doing:
> 
>                 if ((l->lease_key.data[0] == state->lease_key.data[0]) &&
>                     (l->lease_key.data[1] == state->lease_key.data[1])) {
>                         DEBUG(10, ("Don't break our own lease\n"));
>                         continue;
>                 }

Agreed.

> Why do we need the fsp at all, can't we hang the timeout on fsp->lease?

I'll take a look.

> I'm also wondering, if you should remember the exiration time in
> the 'breaking' field instead of just a bool.
> 
> If the process trying to send the lease break to the client gets
> disconnected,
> we'll never downgrade when it times out and the lease is still valid
> over another connection.

Yeah, maybe later... I'm trying to finish all the
tests + lease logic first.

Let's get fancy later :-).


More information about the samba-technical mailing list