Re: [PATCH v2 01/11] CIFS: Respect negotiated MaxMpxCount

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

 



18 марта 2012 г. 14:50 пользователь Jeff Layton <jlayton@xxxxxxxxxx> написал:
> On Sat, 17 Mar 2012 10:20:59 -0500
> Steve French <smfrench@xxxxxxxxx> wrote:
>
>> On Sat, Mar 17, 2012 at 9:53 AM, Pavel Shilovsky <piastry@xxxxxxxxxxx> wrote:
>> > 17 марта 2012 г. 15:12 пользователь Jeff Layton <jlayton@xxxxxxxxxx> написал:
>> >> On Fri, 16 Mar 2012 18:09:24 +0300
>> >> Pavel Shilovsky <piastry@xxxxxxxxxxx> wrote:
>> >>
>> >>> Some servers sets this value less than 50 that was hardcoded and
>> >>> we lost the connection if when we exceed this limit. Fix this by
>> >>> respecting this value - not sending more than the server allows.
>> >>>
>> >>> Signed-off-by: Pavel Shilovsky <piastry@xxxxxxxxxxx>
>> >>> ---
>> >>>  fs/cifs/cifsfs.c    |    8 ++++----
>> >>>  fs/cifs/cifsglob.h  |   10 +++-------
>> >>>  fs/cifs/cifssmb.c   |    9 +++++++--
>> >>>  fs/cifs/connect.c   |   11 ++++-------
>> >>>  fs/cifs/dir.c       |    6 ++++--
>> >>>  fs/cifs/file.c      |    4 ++--
>> >>>  fs/cifs/transport.c |    4 ++--
>> >>
>> >> Introducing a behavior change like this at the beginning of the series
>> >> is probably a mistake. You'll have no reasonable way to bisect down
>> >> regressions, so you won't know if a problem is due to the change to a
>> >> credit-based model or due to changing the client to respect the maxmpx.
>> >>
>> >> Instead of doing this, we should instead reorganize the code around a
>> >> credit based model first, while attempting to mimic the existing
>> >> behavior as closely as possible. Once that framework is in place, then
>> >> change the behavior and start respecting the maxmpx.
>> >>
>> >> If you do that, then someone can reasonably bisect between those two
>> >> changes and we can determine the source of a regression.
>> >> --
>> >> Jeff Layton <jlayton@xxxxxxxxxx>
>> >
>> > This was done to push this patch to 3.3 and stable tree as well.
>> > That's why it is in the start of series.
>> >
>> > If we decide not to push it for now, I agree that this patch should be
>> > in the modified version (according to changes from other patches) at
>> > the end of the series.
>> >
>> > Steve, your thoughts?
>> >
>> > --
>> > Best regards,
>> > Pavel Shilovsky.
>>
>> We want to fix the reported (cifs) problem first with a simple patch
>> (that would be suitable for stable too).
>>
>> The most important reported problems are mounts to servers
>> running some versions of Windows Vista and some versions of Windows 7
>> which set maxmpx below 50 and more importantly have maxworkitems
>> (in the windows registry on the server) set at too small a value to handle
>> the 20 or 30 async reads or writes which are now often in flight to them.
>>
>> The fix we need first is to honor the maxmpx that the server sets (and
>> probably remove cifs_max_pending which is obsolete as
>> a global module parm or simply do the minimum of cifs_max_pending
>> and maxmpx as the earlier patch did).
>> If desired (to workaround buggy
>> servers) in a second patch we could add a mount parm if we think there are
>> servers such as windows 7 for which we will need to set the
>> negotiated value lower (due to their maxworkitems registry
>> problem), or Samba for which maxmpx could be ignored
>> (and as JRA and others indicated - we could send
>> a thousand requests in parallel).
>>
>
> By the way...
>
> What's the plan for blocking locks and echoes here? Do you plan to make
> them just ignore the maxmpx limit?

I think we shouldn't play with them for stable. We still don't know
what exactly we should do with them - really risky to make experiments
on stable kernels.

So, as we are sure that exceeding negotiated maxmpx value with any
request except blocking lock and echo is wrong, I suggest to fix this
- it is what this patch (#1) does. When we get more information about
blocking locks and echos we can fix this too.

>
> Another important case to consider is the (apparently common) case
> where maxmpx is 1. We don't really want to make things worse against
> such servers...
>

If server negotiates maxmpx=1 then we simply disable oplocks for now
(that the patch does) - don't think it makes things worse for those
servers.

-- 
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