On Thu, 13 Nov 2008, Tejun Heo wrote:
Yeah, I see the problems.
> Why do you think using separate poll handle would be better? And do you
Because it would be a change in the semantics of the file handle.
Previously it was just an opaque cookie that the kernel stored for the
filesystem, not making any assumptions about it (like uniqueness).
OK, we can say that if the filesystems wants to implement poll, it has
to make the file handle unique. Also now the filesystem (or
something) has to deal with races between poll notification and
reuse of the file handle (release/open).
With a new poll handle we'd have more room to properly deal with these
without overloading the file handle with extra requirements.
How about this: the poll handle is allocated by the kernel, not by the
filesystem. This guarantees uniqueness, so the filesystem cannot get
this wrong. Releasing the poll handle is still tricky, there could be
various races... only the userspace filesystem knows if it has no
outstanding notificiatons on a poll handle, so the release has to come
after all outstanding notifications have been ack'ed. Something like
this:
(userspace <- kernel)
<- POLL-request(pollhandle) (alloc handle)
-> POLL-reply
...
-> POLL-notification(pollhandle)
<- POLL-ack
...
<- POLL_RELEASE(pollhandle)
-> POLL_RELEASE-reply (free handle)
Thanks,
Miklos
--
| Greg Kroah-Hartman | [PATCH 002/196] Chinese: rephrase English introduction in HOWTO |
| Kok, Auke | Re: Linux 2.6.21-rc1 |
| Greg KH | Re: Dual-Licensing Linux Kernel with GPL V2 and GPL V3 |
| Jeff Garzik | Re: [Patch v2] Make PCI extended config space (MMCONFIG) a driver opt-in |
git: | |
| David Miller | [GIT]: Networking |
| Gerrit Renker | [PATCH 15/37] dccp: Set per-connection CCIDs via socket options |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Eric Dumazet | [PATCH] net: remove superfluous call to synchronize_net() |
