Summary: | fuse filesystem syscall deadlocks | ||
---|---|---|---|
Product: | [Developer tools] valgrind | Reporter: | Mike Shal <marfey> |
Component: | general | Assignee: | Julian Seward <jseward> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | jeremy |
Priority: | NOR | ||
Version: | 3.7 SVN | ||
Target Milestone: | --- | ||
Platform: | Compiled Sources | ||
OS: | Unspecified | ||
Latest Commit: | Version Fixed In: | ||
Attachments: |
Patch against svn r11899 to fix the issue.
Additional fuse callback compatibility via command line argument. Adds sys_chdir() and sys_stat64() to the fuse clo patch. Adds sys_newfstatat() and sys_fstatat64(). Add a 'fuse-compatible' sym-hint |
Description
Mike Shal
2011-07-18 23:21:39 UTC
Created attachment 61989 [details]
Additional fuse callback compatibility via command line argument.
Added --fuse-compatible as a command-line argument which turns on the MayBlock flag for the following calls:
fstatfs
fstatfs64
mknod
chmod
chown
lchown
close
fchdir
fchown
fchmod
newfstat
readlink
rename
utimes
Those syscalls can block in a number of circumstances, not just fuse. They're all considered to be "fast" syscalls (ie, they generally won't fail with EINTR when used on normal file objects), but network/fuse filesystems can and do break the rules (close, in particular, can block for unbounded times on some network filesystems). It would be better to give the clo a more generic name along the lines of "blocking fast syscalls". Created attachment 61998 [details] Adds sys_chdir() and sys_stat64() to the fuse clo patch. Updated attachment 61989 [details] to fix the syscalls that still block in my particular fuse file-system. Created attachment 62521 [details]
Adds sys_newfstatat() and sys_fstatat64().
This updated patch adds new syscalls to work with x86_64, and fstatat().
(In reply to comment #4) > This updated patch adds new syscalls to work with x86_64, and fstatat(). Looks good to me. Only comment is, I'd prefer not to have another command line argument, and instead use the existing --sim-hints= option to request this minor modification of behaviour, as that's what it's for. Grep for clo_sim_hints. In this case it'll be --sim-hints=fuse-compatible, I suppose. Hence: * rm clo_fuse_compatible; use clo_sim_hints instead * add a suitable 1-liner description of it in the --sim-hints section in docs/xml/manual-core.xml * add it to the --help text Good to land asap w/ the above changes. Created attachment 62785 [details]
Add a 'fuse-compatible' sym-hint
Committed, r11993. Thanks, and sorry for the delay. |