All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Snitzer <snitzer@redhat.com>
To: Mikulas Patocka <mpatocka@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
	wagi@monom.org, Christoph Hellwig <hch@infradead.org>,
	dm-devel@redhat.com, Dan Williams <dan.j.williams@intel.com>,
	tglx@linutronix.de
Subject: Re: [PATCH v2] swait: export symbols __prepare_to_swait and __finish_swait
Date: Wed, 23 May 2018 17:51:40 -0400	[thread overview]
Message-ID: <20180523215140.GA32285@redhat.com> (raw)
In-Reply-To: <alpine.LRH.2.02.1805231633060.17160@file01.intranet.prod.int.rdu2.redhat.com>

On Wed, May 23 2018 at  4:38pm -0400,
Mikulas Patocka <mpatocka@redhat.com> wrote:

> 
> 
> On Wed, 23 May 2018, Mike Snitzer wrote:
> 
> > [Peter, in this v2 I switched to using _GPL for the exports and updated
> > the patch header.  As covered in previous mail, please let me know if
> > you're OK with me staging this change for 4.18 via linux-dm.git with
> > your Ack, thanks]
> > 
> > From: Mikulas Patocka <mpatocka@redhat.com>
> > Subject: [PATCH] swait: export symbols __prepare_to_swait and __finish_swait
> > 
> > __prepare_to_swait and __finish_swait are declared in
> > include/linux/swait.h but they are not exported; so they are not useable
> > from kernel modules.
> > 
> > A new consumer of swait (in dm-writecache) reduces its locking overhead
> > by using the spinlock in swait_queue_head to protect not only the wait
> > queue, but also the list of events.  Consequently, this swait consuming
> > kernel module needs to use these unlocked functions.
> > 
> > Peter Zijlstra explained:
> >   "The reason swait exists is to be deterministic (for RT) -- something
> >   that regular wait code cannot be.
> >   And by (ab)using / exporting the wait internal lock you risk losing
> >   that. So I don't think the proposed [dm-writecache] usage is bad, it
> >   is possible to create badness.
> >   So if we're going to export them; someone needs to keep an eye on things
> >   and ensure the lock isn't abused."
> > 
> > So while this new use of the wait internal lock doesn't jeopardize the
> > realtime requirements of swait, these exports do open swait's internal
> > locking up to being abused.  As such, EXPORT_SYMBOL_GPL is used because
> > any future consumers of __prepare_to_swait and __finish_swait must
> > always be thoroughly scrutinized.
> > 
> > Cc: Peter Zijlstra <peterz@infradead.org>
> > Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
> > Signed-off-by: Mike Snitzer <snitzer@redhat.com>
> > ---
> >  kernel/sched/swait.c | 2 ++
> >  1 file changed, 2 insertions(+)
> > 
> > diff --git a/kernel/sched/swait.c b/kernel/sched/swait.c
> > index b6fb2c3b3ff7..5d891b65ada5 100644
> > --- a/kernel/sched/swait.c
> > +++ b/kernel/sched/swait.c
> > @@ -75,6 +75,7 @@ void __prepare_to_swait(struct swait_queue_head *q, struct swait_queue *wait)
> >  	if (list_empty(&wait->task_list))
> >  		list_add(&wait->task_list, &q->task_list);
> >  }
> > +EXPORT_SYMBOL_GPL(__prepare_to_swait);
> >  
> >  void prepare_to_swait(struct swait_queue_head *q, struct swait_queue *wait, int state)
> >  {
> > @@ -104,6 +105,7 @@ void __finish_swait(struct swait_queue_head *q, struct swait_queue *wait)
> >  	if (!list_empty(&wait->task_list))
> >  		list_del_init(&wait->task_list);
> >  }
> > +EXPORT_SYMBOL_GPL(__finish_swait);
> >  
> >  void finish_swait(struct swait_queue_head *q, struct swait_queue *wait)
> >  {
> > -- 
> > 2.15.0
> 
> Then - you should export swake_up_locked with EXPORT_SYMBOL_GPL too.
> 
> Because swake_up_locked is unusable without __prepare_to_swait and 
> __finish_swait.

Point taken.  But if swake_up_locked is unusable without them it is
implicitly _GPL once __prepare_to_swait and __finish_swait are exported
via _GPL.  Which is to say, I don't care to get into the games of
switching symbols from EXPORT_SYMBOL to EXPORT_SYMBOL_GPL unless
completely necessary.  Happy to leave well enough alone on this.

So I consider this v2 perfectly adequate for our needs.  And appreciate
any additional review/acks.

Thanks,
Mike

  reply	other threads:[~2018-05-23 21:51 UTC|newest]

Thread overview: 108+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-19  5:25 [patch 0/4] dm-writecache patches Mikulas Patocka
2018-05-19  5:25 ` [patch 1/4] x86: optimize memcpy_flushcache Mikulas Patocka
2018-05-19 14:21   ` Dan Williams
2018-05-24 18:20     ` [PATCH v2] " Mike Snitzer
2018-06-18 13:23       ` [PATCH v2 RESEND] " Mike Snitzer
2018-06-18 13:23         ` Mike Snitzer
2018-06-21 14:31         ` Ingo Molnar
2018-06-22  1:19           ` Mikulas Patocka
2018-06-22  1:19             ` Mikulas Patocka
2018-06-22  1:30             ` Ingo Molnar
2018-08-08 21:22               ` [PATCH v3 " Mikulas Patocka
2018-09-10 13:18                 ` Ingo Molnar
2018-09-11  6:22                 ` [tip:x86/asm] x86/asm: Optimize memcpy_flushcache() tip-bot for Mikulas Patocka
2018-05-19  5:25 ` [patch 2/4] swait: export the symbols __prepare_to_swait and __finish_swait Mikulas Patocka
2018-05-22  6:34   ` Christoph Hellwig
2018-05-22 18:52     ` Mike Snitzer
2018-05-23  9:21       ` Peter Zijlstra
2018-05-23 15:10         ` Mike Snitzer
2018-05-23 18:10           ` [PATCH v2] swait: export " Mike Snitzer
2018-05-23 20:38             ` Mikulas Patocka
2018-05-23 21:51               ` Mike Snitzer [this message]
2018-05-24 14:10             ` Peter Zijlstra
2018-05-24 15:09               ` Mike Snitzer
2018-05-19  5:25 ` [patch 3/4] dm-writecache Mikulas Patocka
2018-05-22  6:37   ` Christoph Hellwig
2018-05-19  5:25 ` [patch 4/4] dm-writecache: use new API for flushing Mikulas Patocka
2018-05-22  6:39   ` [dm-devel] " Christoph Hellwig
2018-05-22  6:39     ` Christoph Hellwig
2018-05-22 18:41     ` Mike Snitzer
2018-05-22 18:41       ` Mike Snitzer
2018-05-22 19:00       ` Dan Williams
2018-05-22 19:00         ` Dan Williams
2018-05-22 19:19         ` Mike Snitzer
2018-05-22 19:19           ` Mike Snitzer
2018-05-22 19:27           ` Dan Williams
2018-05-22 19:27             ` Dan Williams
2018-05-22 20:52             ` Mike Snitzer
2018-05-22 20:52               ` Mike Snitzer
2018-05-22 22:53               ` [dm-devel] " Jeff Moyer
2018-05-22 22:53                 ` Jeff Moyer
2018-05-23 20:57                 ` Mikulas Patocka
2018-05-23 20:57                   ` Mikulas Patocka
2018-05-28 13:52             ` Mikulas Patocka
2018-05-28 13:52               ` Mikulas Patocka
2018-05-28 17:41               ` Dan Williams
2018-05-28 17:41                 ` Dan Williams
2018-05-30 13:42                 ` [dm-devel] " Jeff Moyer
2018-05-30 13:42                   ` Jeff Moyer
2018-05-30 13:51                   ` Mikulas Patocka
2018-05-30 13:51                     ` Mikulas Patocka
2018-05-30 13:52                   ` Jeff Moyer
2018-05-30 13:52                     ` Jeff Moyer
2018-05-24  8:15         ` Mikulas Patocka
2018-05-24  8:15           ` Mikulas Patocka
2018-05-25  3:12   ` Dan Williams
2018-05-25  6:17     ` Mikulas Patocka
2018-05-25 12:51       ` Mike Snitzer
2018-05-25 12:51         ` Mike Snitzer
2018-05-25 15:57         ` Dan Williams
2018-05-25 15:57           ` Dan Williams
2018-05-26  7:02           ` Mikulas Patocka
2018-05-26  7:02             ` Mikulas Patocka
2018-05-26 15:26             ` Dan Williams
2018-05-26 15:26               ` Dan Williams
2018-05-28 13:32               ` Mikulas Patocka
2018-05-28 13:32                 ` Mikulas Patocka
2018-05-28 18:14                 ` Dan Williams
2018-05-28 18:14                   ` Dan Williams
2018-05-30 13:07                   ` Mikulas Patocka
2018-05-30 13:07                     ` Mikulas Patocka
2018-05-30 13:16                     ` Mike Snitzer
2018-05-30 13:16                       ` Mike Snitzer
2018-05-30 13:21                       ` Mikulas Patocka
2018-05-30 13:21                         ` Mikulas Patocka
2018-05-30 13:26                         ` Mike Snitzer
2018-05-30 13:26                           ` Mike Snitzer
2018-05-30 13:33                           ` Mikulas Patocka
2018-05-30 13:33                             ` Mikulas Patocka
2018-05-30 13:54                             ` Mike Snitzer
2018-05-30 13:54                               ` Mike Snitzer
2018-05-30 14:09                               ` Mikulas Patocka
2018-05-30 14:09                                 ` Mikulas Patocka
2018-05-30 14:21                                 ` Mike Snitzer
2018-05-30 14:21                                   ` Mike Snitzer
2018-05-30 14:46                                   ` Mikulas Patocka
2018-05-30 14:46                                     ` Mikulas Patocka
2018-05-31  3:42                                     ` Mike Snitzer
2018-05-31  3:42                                       ` Mike Snitzer
2018-06-03 15:03                                       ` Mikulas Patocka
2018-06-03 15:03                                         ` Mikulas Patocka
2018-05-31  3:39                                 ` Mike Snitzer
2018-05-31  3:39                                   ` Mike Snitzer
2018-05-31  8:16                                   ` Mikulas Patocka
2018-05-31  8:16                                     ` Mikulas Patocka
2018-05-31 12:09                                     ` Mike Snitzer
2018-05-31 12:09                                       ` Mike Snitzer
2018-05-30 15:58                     ` Dan Williams
2018-05-30 15:58                       ` Dan Williams
2018-05-30 22:39                       ` Dan Williams
2018-05-30 22:39                         ` Dan Williams
2018-05-31  8:19                         ` Mikulas Patocka
2018-05-31  8:19                           ` Mikulas Patocka
2018-05-31 14:51                           ` Dan Williams
2018-05-31 14:51                             ` Dan Williams
2018-05-31 15:31                             ` Mikulas Patocka
2018-05-31 15:31                               ` Mikulas Patocka
2018-05-31 16:39                               ` Dan Williams
2018-05-31 16:39                                 ` Dan Williams

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=20180523215140.GA32285@redhat.com \
    --to=snitzer@redhat.com \
    --cc=bigeasy@linutronix.de \
    --cc=dan.j.williams@intel.com \
    --cc=dm-devel@redhat.com \
    --cc=hch@infradead.org \
    --cc=mpatocka@redhat.com \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=wagi@monom.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.