Messages in this thread | | | From | Linus Torvalds <> | Date | Sun, 9 Dec 2018 10:01:51 -0800 | Subject | Re: [GIT PULL] dax fixes for 4.20-rc6 |
| |
On Sat, Dec 8, 2018 at 10:26 PM Williams, Dan J <dan.j.williams@intel.com> wrote: > > git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm tags/dax-fixes-4.20-rc6
What's going on with the odd non-exclusive exclusive wait?
prepare_to_wait_exclusive(wq, &ewait.wait, TASK_UNINTERRUPTIBLE); ... /* * Entry lock waits are exclusive. Wake up the next waiter since * we aren't sure we will acquire the entry lock and thus wake * the next waiter up on unlock. */ if (waitqueue_active(wq)) __wake_up(wq, TASK_NORMAL, 1, &ewait.key);
that seems to make little or no sense.
Why isn't that prepare_to_wait_exclusive() just a regular prepare_to_wait(), and then the whole "let's wake up anybody else" can be removed?
I've pulled it, but am awaiting explanation of what looks like some pretty crazy code. I *suspect* it's a copy-and-paste situation where you took the exclusive wait from somewhere else.
Linus
| |