Re: [PATCH] cifs: fix cifs stable patch cifs-fix-oplock-break-handling-try-2.patch

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

 



On 12/02/2011 02:35 PM, Pavel Shilovsky wrote:
> 2011/12/2 Suresh Jayaraman <sjayaraman@xxxxxxxx>:
>>>>  fs/cifs/misc.c |    3 +++
>>>>  1 files changed, 3 insertions(+), 0 deletions(-)
>>>>
>>>> diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c
>>>> index d27d4ec..7055827 100644
>>>> --- a/fs/cifs/misc.c
>>>> +++ b/fs/cifs/misc.c
>>>> @@ -584,6 +584,9 @@ is_valid_oplock_break(struct smb_hdr *buf, struct TCP_Server_Info *srv)
>>>>                                pCifsInode->clientCanCacheAll = false;
>>>>                                if (pSMB->OplockLevel == 0)
>>>>                                        pCifsInode->clientCanCacheRead = false;
>>>> +                               else if (pSMB->OplockLevel == OPLOCK_READ)
>>> pSMB->OplockLevel can either be 0 or 1 here but OPLOCK_READ is 3 -
>>> this should be:
>>> "else if (pSMB->OplockLevel)"
>>>
>>>> +                                       pCifsInode->clientCanCacheRead = true;
>>>> +
>>
>> Hmm.. if OplockLevel is OPLOCK_EXCLUSIVE, the we should set both
>> clientCanCacheAll and clientCanCacheRead, no?
> 
> OplockLevel field in the oplock break request (SMB_COM_LOCKING_ANDX
> command) can be:
> 0 - oplock downgrades to None
> 1 - oplock downgrades to READ.
> 
> (see http://msdn.microsoft.com/en-us/library/ee442004(v=PROT.13).aspx
> for further details)
> 

Ok thanks. Here's the updated patch. Greg, could you please consider this
patch for next 2.6.32.y

From: Suresh Jayaraman <sjayaraman@xxxxxxxx>

The stable release 2.6.32.32 added the upstream commit
12fed00de963433128b5366a21a55808fab2f756. However, one of the hunks of
the original patch seems missing from the stable backport which can be
found here:
   http://permalink.gmane.org/gmane.linux.kernel.stable/5676

This hunk corresponds to the change in is_valid_oplock_break() at
fs/cifs/misc.c.

This patch backports the missing hunk and is against
linux-2.6.32.y stable kernel.


Cc: Steve French <sfrench@xxxxxxxxxx>
Signed-off-by: Pavel Shilovsky <piastry@xxxxxxxxxxx>
Signed-off-by: Suresh Jayaraman <sjayaraman@xxxxxxxx>
---
 fs/cifs/misc.c |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/fs/cifs/misc.c b/fs/cifs/misc.c
index d27d4ec..95b82e8 100644
--- a/fs/cifs/misc.c
+++ b/fs/cifs/misc.c
@@ -584,6 +584,9 @@ is_valid_oplock_break(struct smb_hdr *buf, struct TCP_Server_Info *srv)
 				pCifsInode->clientCanCacheAll = false;
 				if (pSMB->OplockLevel == 0)
 					pCifsInode->clientCanCacheRead = false;
+				else if (pSMB->OplockLevel)
+					pCifsInode->clientCanCacheRead = true;
+
 				rc = slow_work_enqueue(&netfile->oplock_break);
 				if (rc) {
 					cERROR(1, ("failed to enqueue oplock "
--
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