All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Snitzer <snitzer@redhat.com>
To: Mikulas Patocka <mpatocka@redhat.com>,
	Peter Zijlstra <peterz@infradead.org>
Cc: Christoph Hellwig <hch@infradead.org>,
	linux-rt-users@vger.kernel.org,
	Daniel Wagner <daniel.wagner@bmw-carit.de>,
	linux-kernel@vger.kernel.org, dm-devel@redhat.com,
	Thomas Gleixner <tglx@linutronix.de>
Subject: Re: [PATCH 1/2] swait: export the symbols __prepare_to_swait and __finish_swait
Date: Fri, 18 May 2018 17:03:23 -0400	[thread overview]
Message-ID: <20180518210323.GA6119@redhat.com> (raw)
In-Reply-To: <alpine.LRH.2.02.1711231722440.12809@file01.intranet.prod.int.rdu2.redhat.com>

On Thu, Nov 23 2017 at  5:27pm -0500,
Mikulas Patocka <mpatocka@redhat.com> wrote:

> 
> 
> On Thu, 23 Nov 2017, Christoph Hellwig wrote:
> 
> > Please run this past the swait authors.  It is supposed to be a simple
> > and self-contained API so I'd expect this patch to be seen critical.
> 
> I already sent it to Peter Zijlstra and didn't get a response yet.
> 
> > You might be better off to just use the normal complex waitqueues if
> > you want to micro-optimize like this.
> 
> If we wanted to micro-optimize, we should use the simpler wait queue 
> variant.
> 
> 
> If these functions are not supposed to be used by others, then
> - why are they in in file swait.h?
> - why does the implementation export swake_up_locked which assumes that 
> someone else will lock the spinlock before calling it?

Hi,

I'd like to get this patch upstream.  I'm happy to send it to Linus via
linux-dm.git but I wanted to check with others who might care more
deeply about swait interfaces to get their Ack (or otherwise):
https://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git/commit/?h=dm-4.18&id=4a2ec3f321f83db09da4824025420586c9ef1612

Here is Mikulas' DM driver code that makes use of __prepare_to_swait()
and __finish_swait():

static int writecache_endio_thread(void *data)
{
        struct dm_writecache *wc = data;

        while (1) {
                DECLARE_SWAITQUEUE(wait);
                struct list_head list;

                raw_spin_lock_irq(&wc->endio_thread_wait.lock);
continue_locked:
                if (!list_empty(&wc->endio_list))
                        goto pop_from_list;
                set_current_state(TASK_INTERRUPTIBLE);
                __prepare_to_swait(&wc->endio_thread_wait, &wait);
                raw_spin_unlock_irq(&wc->endio_thread_wait.lock);

                if (unlikely(kthread_should_stop())) {
                        finish_swait(&wc->endio_thread_wait, &wait);
                        break;
                }

                schedule();

                raw_spin_lock_irq(&wc->endio_thread_wait.lock);
                __finish_swait(&wc->endio_thread_wait, &wait);
                goto continue_locked;

pop_from_list:
                list = wc->endio_list;
                list.next->prev = list.prev->next = &list;
                INIT_LIST_HEAD(&wc->endio_list);
                raw_spin_unlock_irq(&wc->endio_thread_wait.lock);
                ...

      reply	other threads:[~2018-05-18 21:03 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-23  2:35 [PATCH 1/2] swait: export the symbols __prepare_to_swait and __finish_swait Mikulas Patocka
2017-11-23  8:28 ` [dm-devel] " Christoph Hellwig
2017-11-23 22:27   ` Mikulas Patocka
2018-05-18 21:03     ` Mike Snitzer [this message]

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=20180518210323.GA6119@redhat.com \
    --to=snitzer@redhat.com \
    --cc=daniel.wagner@bmw-carit.de \
    --cc=dm-devel@redhat.com \
    --cc=hch@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rt-users@vger.kernel.org \
    --cc=mpatocka@redhat.com \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    /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.