Re: [PATCH 1/1] fanotify: read(2) error handling

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

 



Hi Heinrich

What were your thoughts on the below?

Cheers,

Michael


On Sun, May 4, 2014 at 11:19 AM, Michael Kerrisk (man-pages)
<mtk.manpages@xxxxxxxxx> wrote:
> On Sun, May 4, 2014 at 10:31 AM, Heinrich Schuchardt <xypron.glpk@xxxxxx> wrote:
>> On 03.05.2014 21:21, Michael Kerrisk (man-pages) wrote:
>>>
>>> [CC += Eric]
>>>
>>> Hello Heinrich,
>>>
>>> On 05/03/2014 06:57 PM, Heinrich Schuchardt wrote:
>>>>
>>>> The last lines of fanotify_read() in fanotify_user.c are:
>>>>         if (start != buf && ret != -EFAULT)
>>>>                 ret = buf - start;
>>>>         return ret;
>>>>
>>>> This implies that an error code is only returned, if reading the first
>>>> event on the queue fails or if EFAULT occurs.
>>>
>>>
>>> I'm not quite sure if this text is needed. What sort of errors
>>> are we talking about here that are not reported?
>>
>>
>> EMFILE The per-process limit on the number of open files has been reached.
>> See the description of RLIMIT_NOFILE in getrlimit(2).
>>
>> ENFILE The system-wide limit on the number of open files has been reached.
>> See /proc/sys/fs/file-max in proc(5).
>>
>> ETXTBSY This error is returned by read(2) if O_RDWR or O_WRONLY was
>> specified in the event_f_flags argument when calling fanotify_init(2) and
>> an event occurred for a monitored file that is currently being executed.
>
> But, then won't we see something like this
>
> 1. First read() reads the events up to the point of the error.
> 2. The next read reports the event that has an error.
>
> This is just my expectation of reasonable behavior, I have not checked
> what actually does happen.
>
> Or are you saying that some events will actually be lost (i.e., won't
> appear as events in read() buffers and won't be reported as errors
> from read()) in this scenario? If so, that sounds like (another) bug
> to me.
>
> Cheers,
>
> Michael
>
>
>>>> Signed-off-by: Heinrich Schuchardt <xypron.glpk@xxxxxx>
>>>> ---
>>>>   man7/fanotify.7 | 8 ++++++++
>>>>   1 file changed, 8 insertions(+)
>>>>
>>>> diff --git a/man7/fanotify.7 b/man7/fanotify.7
>>>> index 083244f..6936b88 100644
>>>> --- a/man7/fanotify.7
>>>> +++ b/man7/fanotify.7
>>>> @@ -131,6 +131,14 @@ until either a file event occurs or the call is
>>>> interrupted by a signal
>>>>   The return value of
>>>>   .BR read (2)
>>>>   is the length of the filled buffer, or \-1 in case of an error.
>>>> +If multiple events are on the fanotify queue,
>>>> +.BR read (2)
>>>> +will only report an error, if reading the first event fails or an error
>>>> +.B EFAULT
>>>> +occurs.
>>>> +If reading the first event is successful but reading any further event
>>>> fails,
>>>> +.BR read (2)
>>>> +returns the length of the buffer filled with all prior events.
>>>>   After a successful
>>>>   .BR read (2),
>>>>   the read buffer contains one or more of the following structures:
>>>>
>>>
>>>
>>
>
>
>
> --
> Michael Kerrisk
> Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
> Linux/UNIX System Programming Training: http://man7.org/training/



-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/
--
To unsubscribe from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Kernel Documentation]     [Netdev]     [Linux Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux