All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jarod Wilson <jarod@redhat.com>
To: Ming Lei <ming.lei@canonical.com>
Cc: Christoph Hellwig <hch@infradead.org>,
	Jens Axboe <axboe@kernel.dk>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Tejun Heo <tj@kernel.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	David Herrmann <dh.herrmann@gmail.com>,
	Markus Pargmann <mpa@pengutronix.de>,
	"nbd-general@lists.sourceforge.net"
	<nbd-general@lists.sourceforge.net>,
	Stefan Haberland <stefan.haberland@de.ibm.com>,
	Sebastian Ott <sebott@linux.vnet.ibm.com>,
	Fabian Frederick <fabf@skynet.be>,
	linux-s390@vger.kernel.org
Subject: Re: [PATCH 1/6] block: export blkdev_reread_part()
Date: Mon, 6 Apr 2015 09:48:43 -0400	[thread overview]
Message-ID: <20150406134843.GF14217@redhat.com> (raw)
In-Reply-To: <20150406134227.GC14217@redhat.com>

On Mon, Apr 06, 2015 at 09:42:27AM -0400, Jarod Wilson wrote:
> On Mon, Apr 06, 2015 at 12:40:12AM +0800, Ming Lei wrote:
> > On Mon, Apr 6, 2015 at 12:12 AM, Christoph Hellwig <hch@infradead.org> wrote:
> > >> +/*
> > >> + * This is exported as API for block driver, can be called
> > >> + * with requiring bd_mutex or not.
> > >> + */
> > >> +int __blkdev_reread_part(struct block_device *bdev, bool lock)
> > >>  {
> > >>       struct gendisk *disk = bdev->bd_disk;
> > >>       int res;
> > >> @@ -159,12 +163,14 @@ static int blkdev_reread_part(struct block_device *bdev)
> > >>               return -EINVAL;
> > >>       if (!capable(CAP_SYS_ADMIN))
> > >>               return -EACCES;
> > >> -     if (!mutex_trylock(&bdev->bd_mutex))
> > >> +     if (lock && !mutex_trylock(&bdev->bd_mutex))
> > >>               return -EBUSY;
> > >
> > > Please don't add funtions that do conditional locking, instead move
> > > all the code into blkdev_reread_part_nolock, and then wrap it:
> > >
> > > int blkdev_reread_part(struct block_device *bdev)
> > > {
> > >         if (!mutex_trylock(&bdev->bd_mutex))
> > >                 return -EBUSY;
> > >         blkdev_reread_part_nolock(bdev);
> > >         mutex_unlock(&bdev->bd_mutex);
> > > }
> > 
> > Yes, it is more clean, but with extra acquiring lock cost for the
> > failure cases, especially when we replace trylock with mutex_lock().
> 
> I was working on a version of this myself over the past few days, I
> actually removed blkdev_reread_part() entirely, renamed
> fs/partition-generic.c::reread_partitions() to __reread_partitions(), then

Sorry, that was block/partition-generic.c, not fs/.

-- 
Jarod Wilson
jarod@redhat.com

  reply	other threads:[~2015-04-06 13:48 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-05  7:24 [PATCH 0/6] block: reread partitions changes and fix for loop Ming Lei
2015-04-05  7:24 ` [PATCH 1/6] block: export blkdev_reread_part() Ming Lei
2015-04-05 16:12   ` Christoph Hellwig
2015-04-05 16:40     ` Ming Lei
2015-04-06 13:42       ` Jarod Wilson
2015-04-06 13:48         ` Jarod Wilson [this message]
2015-04-07  2:43         ` Ming Lei
2015-04-06 14:50       ` Christoph Hellwig
2015-04-07  2:11         ` Ming Lei
2015-04-05  7:24 ` [PATCH 2/6] block: loop: don't hold lo_ctl_mutex in lo_open Ming Lei
2015-04-05 16:28   ` Ming Lei
2015-04-06 14:49     ` Christoph Hellwig
2015-04-05  7:24 ` [PATCH 3/6] block: loop: fix another reread part failure Ming Lei
2015-04-05  7:24 ` [PATCH 4/6] block: nbd: convert to blkdev_reread_part() Ming Lei
2015-04-05  7:24 ` [PATCH 5/6] block: dasd_genhd: convert to blkdev_reread_part Ming Lei
2015-04-06 13:46   ` Jarod Wilson
2015-04-06 13:51     ` Jarod Wilson
2015-04-07  1:59       ` Ming Lei
2015-04-07  0:47     ` Ming Lei
2015-04-05  7:24 ` [RFC PATCH 6/6] block: replace trylock with mutex_lock in __blkdev_reread_part() Ming Lei
2015-04-08  6:23 ` [PATCH 0/7] block: reread partitions improvements Jarod Wilson
2015-04-08  6:23   ` [PATCH 1/7] block: export blkdev_reread_part() and __blkdev_reread_part() Jarod Wilson
2015-04-08 14:50     ` Ming Lei
2015-04-08 15:03       ` Peter Zijlstra
2015-04-08 15:27         ` Jarod Wilson
2015-04-08 15:28         ` Ming Lei
2015-04-08  6:23   ` [PATCH 2/7] block: loop: don't hold lo_ctl_mutex in lo_open Jarod Wilson
2015-04-08  6:50     ` Ming Lei
2015-04-08 13:40       ` Jarod Wilson
2015-04-08 14:00         ` Jarod Wilson
2015-04-08 14:20           ` Ming Lei
2015-04-08 15:28             ` Jarod Wilson
2015-04-08  6:23   ` [PATCH 3/7] block: loop: fix another reread part failure Jarod Wilson
2015-04-08  6:23   ` [PATCH 4/7] block: nbd: convert to blkdev_reread_part() Jarod Wilson
2015-04-08  6:23   ` [PATCH 5/7] block: dasd_genhd: convert to blkdev_reread_part Jarod Wilson
2015-04-08  6:23   ` [PATCH 6/7] block: replace trylock with mutex_lock in blkdev_reread_part() Jarod Wilson
2015-04-08  6:23   ` [PATCH 7/7] s390/block/dasd: remove obsolete while -EBUSY loop Jarod Wilson

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=20150406134843.GF14217@redhat.com \
    --to=jarod@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=axboe@kernel.dk \
    --cc=dh.herrmann@gmail.com \
    --cc=fabf@skynet.be \
    --cc=hch@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=ming.lei@canonical.com \
    --cc=mpa@pengutronix.de \
    --cc=nbd-general@lists.sourceforge.net \
    --cc=sebott@linux.vnet.ibm.com \
    --cc=stefan.haberland@de.ibm.com \
    --cc=tj@kernel.org \
    --cc=viro@zeniv.linux.org.uk \
    /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.