Patch merged but had to hand merge it since the original was not sent
as plain text email.

On Thu, Feb 7, 2013 at 5:39 AM, Jeff Layton <[email protected]> wrote:
> On Wed, 6 Feb 2013 12:00:08 -0600
> Steve French <[email protected]> wrote:
>
>> Forwarding to the current cifs development mailing list
>>
>>
>> ---------- Forwarded message ----------
>> From:  <[email protected]>
>> Date: Wed, Feb 6, 2013 at 12:26 AM
>> Subject: [PATCH] cifs: bugfix for unreclaimed writeback pages in
>> cifs_writev_requeue()
>> To: Steve French <[email protected]>, [email protected]
>>
>>
>>
>>     This patch applies to the kernel version of linux-3.8-rc6.
>>
>>     Pages get the PG_writeback flag set before cifs sends its request
>> to SMB server
>>     in cifs_writepages(), if the SMB service goes down, cifs may try
>> to recommit the
>>     writing requests in cifs_writev_requeue(). However, it does not
>> clean its PG_writeback
>>     flag and relaimed the pages even if it fails again in
>> cifs_writev_requeue(), which
>>     may lead to the hanging of the processes accessing the cifs
>> directory. This patch
>>     just cleans the PG_writeback flags and reclaims the pages under
>> that circumstances.
>>
>>     Steps to reproduce the bug(trying serveral times may trigger the issue):
>>     1.Write from cifs client continuously.(e.g dd if=/dev/zero of=<cifs 
>> file>)
>>     2.Stop SMB service from server.(e.g service smb stop)
>>     3.Wait for two minutes, and then start SMB service from
>> server.(e.g service smb start)
>>     4.The processes which are accessing cifs directory may hang up.
>>
>>     Signed-off-by: Ouyang Maochun <[email protected]>
>>     Signed-off-by: Jiang Yong <[email protected]>
>>     Tested-by: Zhang Xianwei <[email protected]>
>>     Reviewed-by: Wang Liang <[email protected]>
>>     Reviewed-by: Cai Qu <[email protected]>
>>     Reviewed-by: Jiang Biao <[email protected]>
>>
>> diff -uprN linux-3.8-rc6/fs/cifs/cifssmb.c 
>> linux-3.8-rc6_new/fs/cifs/cifssmb.c
>> --- linux-3.8-rc6/fs/cifs/cifssmb.c        2013-02-01 09:08:14.000000000 
>> +0800
>> +++ linux-3.8-rc6_new/fs/cifs/cifssmb.c        2013-02-04
>> 15:44:09.869254397 +0800
>> @@ -1909,8 +1909,11 @@ cifs_writev_requeue(struct cifs_writedat
>>          } while (rc == -EAGAIN);
>>
>>          for (i = 0; i < wdata->nr_pages; i++) {
>> -                if (rc != 0)
>> +                if (rc != 0){
>>                          SetPageError(wdata->pages[i]);
>> +                         end_page_writeback(wdata->pages[i]);
>> +                         page_cache_release(wdata->pages[i]);
>> +                 }
>>                  unlock_page(wdata->pages[i]);
>>          }
>>
>>
>
> Patch looks correct to me. Nice catch.
>
> Reviewed-by: Jeff Layton <[email protected]>



-- 
Thanks,

Steve
--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to