files: Kill struct file_desc_ops::post_open
This make open fds asynchronous. Now we restore them in a poll-style.
Every ->open callback operates like a poll. It returns 1, i.e. "call me again",
if some events have not received yet, or 0, if restoring of a fle
has finished.
We iterate over list of file descriptors and look at its return value.
If there were not progress in restoring of a fle, we sleep on task_st
futex. As all events are sent together with changing task_st, we will
be woken up, when there is a some new work for us.
v6: Add a comment about open method return values
v5: Clear FDS_EVENT every beginning of cycle.
Use 0, -1 and 1 for successful return error and "again" request.
v4: unix: 1)standalone sockets return ORV_AGAIN after first open
to reopen fd by generic code
2)do not call post_open_unix_sk() for !standalone sockets
inet, epoll: return ORV_AGAIN after first open to reopen fd by generic code
autofs: iterate used list instead of fds list
Signed-off-by:
Kirill Tkhai <ktkhai@virtuozzo.com>
Signed-off-by:
Pavel Emelyanov <xemul@virtuozzo.com>
Showing
Please
register
or
sign in
to comment