Re: A suggestion for error value, and question regarding EINTR for user-space system calls.

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

 



Your argument for mapping ENOMEM (returned from the server) to an
error which indicates server problems (EIO? or better EREMOTEIO?)
seems reasonable.

On Thu, Nov 7, 2013 at 10:03 AM, Jeff Layton <jlayton@xxxxxxxxxx> wrote:
> On Fri, 08 Nov 2013 00:20:38 +0900
> "ISHIKAWA,chiaki" <ishikawa@xxxxxxxxxxxx> wrote:
>
>> I am a newcomer to linux-cifs.
>>
>> Thank you for offering the great software package, which has improved
>> greatly over the last few years.
>>
>> I have a suggestion and a question.
>>
>> 1. Suggestion: Change the return value ENOMEM -> EREMOTEIO for an error
>> scenario.
>>
>> There was a discussion to changeerror code returned to user-level system
>> calls when the remote server providing CIFS-share
>> failing due to the allocation failure of non-paged resources, especially
>> Windows 7:
>>
>> Currently the returned errno value is ENOMEM.
>>
>> See the discussion here, for example;
>> http://thread.gmane.org/gmane.linux.kernel.cifs/4281
>>
>> especially the following one:
>> http://article.gmane.org/gmane.linux.kernel.cifs/4303
>>
>> The suggestion there was to change this value to EREMOTEIO.
>>
>> I wonder what came out of the discussion.
>> CIFS client in linux kernel still seems to return ENOMEM instead of
>> EREMOTEIO.
>>
>> I will go for EREMOTEIO change any time.
>>
>> ENOMEM suggests to me that there is a LOCAL resource shortage,
>> and it is difficult to gauge that system is telling us that there is
>> something missing in the remote end.
>>
>> EREMOTEIO is much better in this regard, I think.
>>
>> I wasted looking at local log files and dmesg output before
>> I got wiser and checked the remote Windows 7 system log when I saw
>> "Cannot allocate memory." message.
>>
>> By the way, EREMOTEIO is not defined in POSIX.
>> Under linux it is defined as
>> #define       EREMOTEIO       121     /* Remote I/O error */
>>
>> (at least in my copy of
>> Linux vm-debian-amd64 3.10-3-amd64 #1 SMP Debian 3.10.11-1 (2013-09-10)
>> x86_64 GNU/Linux )
>>
>> Since linux-cifs is for linux obviously, I think it is OK to return
>> EREMOTEIO without bothering the conformance to POSIX here.
>>
>> Decreasing the chance of user confusion when they see the message of
>> "Cannot allocate memory" printed as the error message when mount fails
>> due to ENOMEM being returned for this error
>> on the remote side of the connection is more important IMHO.
>>
>
> Agreed. It's terribly confusing. Steve (the maintainer) seemed to be
> skeptical about the change, so I never actually proposed a patch. Feel
> free to do so, or I may do it when I get some time.
>
>> 2. Question:  Can read()/write()/close() against CIFS-share return EINTR
>> in errno?
>>
>> This may involve a few assumptions regarding the
>>  - mount parameter: soft (default) vs hard
>>  - program's signal setting
>>
>> Assuming that mount parameter is soft (default),
>> can read/write/close end up returning EINTR in errno?
>>
>> I have seen EHOSTDOWN stored in errno by failing read() when I simulated
>> network error by disabling network card of a VM in which a copy of
>> linux runs and when it was mounting a host Windows7 CIFS-share.
>> (close() returned -1, too. But I forgot to record the errno value then.)
>>
>> My question is whether linux CIFS client can return EINTR  in errno by
>> interrupted read/write/close, and if so, I think I should retry
>> these system calls up to a certain amount of time (so that the failure
>> will not block the program forever...)
>> Currently, there is no clear documentation about the error code returned
>> to the user-level system calls, and so I am asking the mailing list.
>>
>>
>
> It's not clear to me what you're asking here. EINTR implies that the
> process was signaled.
>
> Processes stuck in cifs code should generally respond well to SIGKILL
> since we do put them to sleep in such a way that they respond to that
> signal. Handling other signals in data-integrity codepaths is quite
> tricky.
>
>>
>> Thank you, whoever those would be, again for the improved CIFS
>> package. After I gave up on using CIFS under linux due to its very
>> slow speed against office server, I was quite pleasantly surprised
>> with the transfer speed this week when I tried it for the first time
>> in a few years. (If only my windows7 server didn't hiccup due to the
>> well known issue.)
>>
>
> Glad it's working well for you.
>
> --
> Jeff Layton <jlayton@xxxxxxxxxx>
> --
> 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



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