Re: oplock break problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2012/7/18 Pavel Shilovsky <piastryyy@xxxxxxxxx>:
> 2012/7/16 Jeff Layton <jlayton@xxxxxxxxx>:
>> On Fri, 13 Jul 2012 17:12:51 +0400
>> Pavel Shilovsky <piastryyy@xxxxxxxxx> wrote:
>>
>>> 2012/7/13 Pavel Shilovsky <piastryyy@xxxxxxxxx>:
>>> > Hi there!
>>> >
>>> > I faced with an interesting problem:
>>> > Windows 7 send lease break just after granted lease on open - so, we
>>> > don't have time to populate cifsFileInfo structure and can't determine
>>> > oplock break because we simply don't find appropriate fid. I think
>>> > this problem can be happen for CIFS/SMB2.0 too (e.g. if another client
>>> > opens the file just after us).
>>> >
>>> > So, what do you think about creating delegating the oplock break
>>> > processing to workqueue and return to demultiplex thread immideately?
>>> > It give us a small timeout itself and we can set another defined
>>> > timeout explicitly.
>>> >
>>> > --
>>> > Best regards,
>>> > Pavel Shilovsky.
>>>
>>> I created a patch that fixes the problem for lease breaks - we can do
>>> smth similiar for oplock breaks too:
>>>
>>> http://git.altlinux.org/people/piastry/public/?p=cifs-2.6.git;a=commit;h=b918551247997057f4467dfc332d47c547449ddd
>>>
>>
>> What guarantee is there that this fid will be on the list by the time
>> the work runs? It seems to me that this just narrows the race window a
>> bit without fully closing it.
>
> Yes, nothing guarantees that this fid will be on the list - it's like
> a midterm fix. We really need to be sure that open/create call ends
> cifs_new_fileinfo before oplock break comes. We can round open/create
> calls with rw mutex: allow several open/create calls process in
> parallel (by holding read lock) but only one oplock break call can
> process in the one time (write lock). So, it's a bit tricky but can be
> commented as well:
> "read lock" - sending open request and populating cifsFileInfo structure
> "write lock" - oplock break processing
>

I tried this approach and it brings a significant reduce in
performance - need to find another way to handle it.

-- 
Best regards,
Pavel Shilovsky.
--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux