Messages in this thread | | | Date | Thu, 27 Nov 2008 20:35:48 -0800 (PST) | From | Davide Libenzi <> | Subject | Re: [PATCH] poll: allow f_op->poll to sleep, take#6 |
| |
On Thu, 27 Nov 2008, Tejun Heo wrote:
> f_op->poll is the only vfs operation which is not allowed to sleep. It's > because poll and select implementation used task state to synchronize > against wake ups, which doesn't have to be the case anymore as wait/wake > interface can now use custom wake up functions. The non-sleep restriction > can be a bit tricky because ->poll is not called from an atomic context > and the result of accidentally sleeping in ->poll only shows up as > temporary busy looping when the timing is right or rather wrong. > > This patch converts poll/select to use custom wake up function and use > separate triggered variable to synchronize against wake up events. The > only added overhead is an extra function call during wake up and > negligible. > > This patch removes the one non-sleep exception from vfs locking rules and > is beneficial to userland filesystem implementations like FUSE, 9p or > peculiar fs like spufs as it's very difficult for those to implement > non-sleeping poll method.
Looks OK to me, although it'd be better if some more folks eye it, in order to avoid painful mistakes. Did you test it al all in a live system?
- Davide
| |