[Gluster-devel] Spurious termination of fuse invalidation notifier thread

Xavier Hernandez xhernandez at datalab.es
Mon Sep 5 07:16:43 UTC 2016


Hi Raghavendra,

On 03/09/16 05:42, Raghavendra Gowdappa wrote:
> Hi Xavi/Kaleb/Pranith,
>
> During few of our older conversations (like [1], but not only one), some of you had reported that the thread which writes invalidation notifications (of inodes, entries) to /dev/fuse terminates spuriously. Csaba tried to reproduce the issue, but without success. It would be helpful if you provide any information on reproducer and/or possible reasons for the behavior.

I didn't found what really caused the problem. I only saw the 
termination message on a production server after some days working but 
hadn't had the opportunity to debug it.

Looking at the code, the only conclusion I got is that the result from 
the write to /dev/fuse was unexpected. The patch solves this and I 
haven't seen the problem again.

The old code only manages ENOENT error. It exits the thread for any 
other error. I guess that in some situations a write to /dev/fuse can 
return other "non fatal" errors.

As a guess, I think it may be a failure in an entry invalidation. 
Looking at the code of fuse, it may return ENOTDIR if parent of the 
entry is not a directory and some race happens doing rm/create while 
sending invalidations in the background. Another possibility is 
ENOTEMPTY if the entry references a non empty directory (again probably 
caused by races between user mode operations and background 
invalidations). Anyway this is only a guess, I have no more information.

Xavi

>
> [1] http://review.gluster.org/#/c/13274/1/xlators/mount/fuse/src/fuse-bridge.c
>
> regards,
> Raghavendra
>


More information about the Gluster-devel mailing list