All of lore.kernel.org
 help / color / mirror / Atom feed
From: Al Viro <viro@zeniv.linux.org.uk>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: linux-kernel@vger.kernel.org, linux-fsdevel@vger.kernel.org
Subject: [git pull] epoll rework
Date: Mon, 14 Dec 2020 22:34:17 +0000	[thread overview]
Message-ID: <20201214223417.GC3579531@ZenIV.linux.org.uk> (raw)

	Deal with epoll loop check/removal races sanely (among other things).
Solution merged last cycle (pinning a bunch of struct file instances) had
been forced by the wrong data structures; untangling that takes a bunch
of preparations, but it's worth doing - control flow in there is ridiculously
overcomplicated.  Memory footprint has also gone down, while we are at it.
This is not all I want to do in the area, but since I didn't get around to
posting the followups they'll have to wait for the next cycle.

The following changes since commit 3650b228f83adda7e5ee532e2b90429c03f7b9ec:

  Linux 5.10-rc1 (2020-10-25 15:14:11 -0700)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git work.epoll

for you to fetch changes up to 319c15174757aaedacc89a6e55c965416f130e64:

  epoll: take epitem list out of struct file (2020-10-25 20:02:08 -0400)

----------------------------------------------------------------
Al Viro (27):
      epoll: switch epitem->pwqlist to single-linked list
      epoll: get rid of epitem->nwait
      untangling ep_call_nested(): get rid of useless arguments
      untangling ep_call_nested(): it's all serialized on epmutex.
      untangling ep_call_nested(): take pushing cookie into a helper
      untangling ep_call_nested(): move push/pop of cookie into the callbacks
      untangling ep_call_nested(): and there was much rejoicing
      reverse_path_check_proc(): sane arguments
      reverse_path_check_proc(): don't bother with cookies
      clean reverse_path_check_proc() a bit
      ep_loop_check_proc(): lift pushing the cookie into callers
      get rid of ep_push_nested()
      ep_loop_check_proc(): saner calling conventions
      ep_scan_ready_list(): prepare to splitup
      lift the calls of ep_read_events_proc() into the callers
      lift the calls of ep_send_events_proc() into the callers
      ep_send_events_proc(): fold into the caller
      lift locking/unlocking ep->mtx out of ep_{start,done}_scan()
      ep_insert(): don't open-code ep_remove() on failure exits
      ep_insert(): we only need tep->mtx around the insertion itself
      take the common part of ep_eventpoll_poll() and ep_item_poll() into helper
      fold ep_read_events_proc() into the only caller
      ep_insert(): move creation of wakeup source past the fl_ep_links insertion
      convert ->f_ep_links/->fllink to hlist
      lift rcu_read_lock() into reverse_path_check()
      epoll: massage the check list insertion
      epoll: take epitem list out of struct file

 fs/eventpoll.c            | 717 +++++++++++++++++++---------------------------
 fs/file_table.c           |   1 -
 include/linux/eventpoll.h |  11 +-
 include/linux/fs.h        |   5 +-
 4 files changed, 305 insertions(+), 429 deletions(-)

             reply	other threads:[~2020-12-14 22:35 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-14 22:34 Al Viro [this message]
2020-12-16  3:44 ` [git pull] epoll rework pr-tracker-bot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201214223417.GC3579531@ZenIV.linux.org.uk \
    --to=viro@zeniv.linux.org.uk \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.