https://bugs.kde.org/show_bug.cgi?id=373574

Philippe Waroquiers <philippe.waroqui...@skynet.be> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |philippe.waroquiers@skynet.
                   |                            |be

--- Comment #3 from Philippe Waroquiers <philippe.waroqui...@skynet.be> ---
I took a quick look at this problem.
I have to admit that I do not too much understand the logic used
to mark some syscall as SfMayBlock,
or mark them as  SfMayBlock only if --sim-hints=fuse-compatible
or not marking them.
For example, sys_rename is FUSE_COMPATIBLE_MAY_BLOCK();
while sys_renameat is not marked.
I am guessing that depending on the fs (in particular, network file systems),
all/most file system operations might potentially block. See e.g. bug 278057
comment 2).

That being said, I think the problem you have is because PRE(sys_readlink)
is doing the complete work of the syscall to possibly have some
special logic needed to handle some /proc filenames.

When using fuse-compatible, the syscall is marked as SfMayBlock but that
is not expected when the PRE(sys_*) is doing all the work : effectively,
if the PRE(sys_*) is doing all the work, how can the syscall block later on ?

So, I think there are 2 ways to fix this:
  * if this syscall cannot block, then we can just remove the
    FUSE_COMPATIBLE_MAY_BLOCK.
  * if the readlink syscall can really block, then it is not ok to
    have the PRE(sys_readlink) doing the work. The PRE(sys_readlink)
    should change the first argument when needed, let the async syscall
    handling do the syscall, and then the POST(sys_readlink) should cleanup
    the changed argument (assuming we need some dynamic memory for the
    changed argument).

So, at this point, what is really needed is a better understanding of
the SfMayBlock logic ...

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to