Re: [PATCH 0/2] cifs: don't perform SMB echoes on un-negotiated socket

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

 



On Mon, Feb 7, 2011 at 3:14 PM, Jeff Layton <jlayton@xxxxxxxxxx> wrote:
> On Mon, 7 Feb 2011 12:36:22 -0600
> Steve French <smfrench@xxxxxxxxx> wrote:
>
>> On Mon, Feb 7, 2011 at 12:20 PM, Jeff Layton <jlayton@xxxxxxxxxx> wrote:
>> > On Mon, 7 Feb 2011 11:42:05 -0600
>> > Steve French <smfrench@xxxxxxxxx> wrote:
>> >
>> >> On Mon, Feb 7, 2011 at 7:54 AM, Jeff Layton <jlayton@xxxxxxxxxx> wrote:
>> >> > Commit 247ec9b4 makes the SMB echo workqueue job skip doing echoes
>> >> > unless the tcpStatus == CifsGood. Problem: tcpStatus == CifsGood is not
>> >> > a reliable indicator of whether the socket has had a NEGOTIATE done on
>> >> > it. This fixes that by adding a new tcpStatus of CifsNeedNegotiate that
>> >> > indicates this. It also cleans up cifs_reconnect_tcon a bit.
>> >> >
>> >> > This is not the only way to fix this issue. As Steve pointed out to me,
>> >> > we could also check to see whether there's a valid SMB session on the
>> >> > list as an indicator of whether a NEGOTIATE has been done. I think the
>> >> > approach I'm proposing clarifies the code better, but I'm willing to go
>> >> > with his approach if that's the general concensus.
>> >>
>> >> Jeff may be right that the code is clearer with this approach (I may try
>> >> to code the alternative to check) but ... we really shouldn't be sending
>> >> an SMBecho between negprot and sessionsetup anyway (so checking for
>> >> sessionsetup may make sense).
>> >>  If a negprot times out or
>> >> sessionsetup times out we don't need to be sending SMBecho
>> >> (on the other hand perhaps a really slow krb5 sessionsetup?)
>> >> Once a sessionsetup is sent, SMBechos make more sense.
>> >>
>> >
>> > Why shouldn't we send one between the negotiate and session setup? The
>> > MS-CIFS spec makes no mention that a session setup is required prior to
>> > doing an echo. You may be correct, but that's not really what the spec
>> > says.
>>
>> I don't remember ever having seen one between negprot and sessionsetup
>> from other clients - but the broader point is that an SMBecho doesn't
>> serve any purpose in between negprot/sessionsetup (once at least one
>> session is setup, checking if the server stays up is more interesting)
>>
>
> I'm not sure I agree there. There's nothing that says that the
> NEGOTIATE and SESSION_SETUP have to be done within a certain amount of
> time of each other. Checking the validity of the connection there seems
> reasonable.
>
> ...but at this point, if you think checking for a valid session is the
> best approach then so be it.

I am not convinced which way is best and it likely doesn't matter.

> Practically, how do you suggest that we check for a valid SMB session?
> I assume the code will need to walk the smb_ses_list. The ses->status
> doesn't appear to actually change on reconnect however. It only sets
> the "need_reconnect" boolean.
>
> It appears that the ses->status is set to CifsGood and never changes
> after the initial session setup. Perhaps that field should be removed?

aah - that makes it tougher to check.  If we don't mark ses->Status ==
NEED_RECONNECT
or something other than CifsGood then your approach is easier.

> We could replace the "need_reconnect" flag with an "established" flag,
> that's a clear indicator of whether the session setup conversation is
> complete.
>
> ...or is there a better way to do this?




-- 
Thanks,

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