• T
    9p-trans_fd: use single poller · 992b3f1d
    Tejun Heo 提交于
    trans_fd used pool of upto 100 pollers to monitor the r/w fds.  The
    approach makes sense in userspace back when the only available
    interfaces were poll(2) and select(2).  As each event monitor -
    trigger - handling iteration took O(n) where `n' is the number of
    watched fds, it makes sense to spread them to many pollers such that
    the `n' can be divided by the number of pollers.  However, this
    doesn't make any sense in kernel because persistent edge triggered
    event monitoring is how the whole thing is implemented in the kernel
    in the first place.
    
    This patch converts trans_fd to use single poller which watches all
    the fds instead of the poll of pollers approach.  All the fds are
    registered for monitoring on creation and only the fds with pending
    events are scanned when something happens much like how epoll is
    implemented.
    
    This change makes trans_fd fd monitoring more efficient and simpler.
    Signed-off-by: NTejun Heo <tj@kernel.org>
    Signed-off-by: NEric Van Hensbergen <ericvh@gmail.com>
    992b3f1d
trans_fd.c 33.4 KB