All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ming Lei <ming.lei@canonical.com>
To: Jens Axboe <axboe@kernel.dk>,
	linux-kernel@vger.kernel.org,
	Christoph Hellwig <hch@infradead.org>, Tejun Heo <tj@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Jarod Wilson <jarod@redhat.com>,
	David Herrmann <dh.herrmann@gmail.com>,
	Markus Pargmann <mpa@pengutronix.de>,
	nbd-general@lists.sourceforge.net,
	Stefan Haberland <stefan.haberland@de.ibm.com>,
	Sebastian Ott <sebott@linux.vnet.ibm.com>,
	Fabian Frederick <fabf@skynet.be>,
	Peter Zijlstra <peterz@infradead.org>,
	linux-s390@vger.kernel.org
Subject: [PATCH v3 0/7] block: reread partitions changes and fix for loop
Date: Wed,  6 May 2015 12:26:21 +0800	[thread overview]
Message-ID: <1430886389-26878-1-git-send-email-ming.lei@canonical.com> (raw)

Hi Guys,

Recently there are several reports about loop partition scanning
failure[1][2].

For loop, the root cause is one ABBA and one AA lock dependency
issue, and the two are fixed by patch 2 and patch 3 each.

Another reason is from the trylock in blkdev_reread_part(), which
may cause partition scanning failure too sometimes when another task
is holding the bd_mutex. In the discussion[1], both Tejun and Christoph
suggests to replace the trylock with mutex_lock in blkdev_reread_part(),
also Christoph suggests to export blkdev_reread_part.

Following the discussion, this patchset exports blkdev_reread_part(), and
introduces __blkdev_reread_part() for fixing loop's AA lock issue.
Then ioctl_by_bdev(BLKRRPART) in loop, nbd and dasd is replaced with
blkdev_reread_part(). In the last patch, trylock in blkdev_reread_part()
is replaced with mutex_lock, and some analysis is provided about the conversion.

V3:
	- fix lock unbalance in loop (2/7)
	- add reviewed-by from Christoph
	- run xfstest over loop and it passed
	- enable lockdep for verifying lock changes, and no warning
	with some common tests over loop block 

V2:
	- only print debug message in case of error (7/7)
	- add tested-by, acked-by

V1:
	- introduce __blkdev_reread_part(), and use lockdep_assert_held()(1/7)
	- replace lo_open_mutex with atomic reference count, plus freezing queue(2/7)
	- add comment about detecting release path(3/7)
	- remove dead code in dasd(7/7)

 block/ioctl.c                   | 37 ++++++++++++++++++++++++++++++++-----
 drivers/block/loop.c            | 51 ++++++++++++++++++++++++++++++++++++++-------------
 drivers/block/loop.h            |  2 +-
 drivers/block/nbd.c             |  2 +-
 drivers/s390/block/dasd_genhd.c | 19 +++++--------------
 include/linux/fs.h              |  3 +++
 6 files changed, 80 insertions(+), 34 deletions(-)


[1], https://lkml.org/lkml/2015/1/26/137
[2], https://lkml.org/lkml/2015/3/31/888

Thanks,
Ming Lei



             reply	other threads:[~2015-05-06  4:26 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-06  4:26 Ming Lei [this message]
2015-05-06  4:26 ` [PATCH v3 1/7] block: export blkdev_reread_part() and __blkdev_reread_part() Ming Lei
2015-05-06  4:26 ` [PATCH v3 2/7] block: loop: don't hold lo_ctl_mutex in lo_open Ming Lei
2015-05-06  4:26 ` [PATCH v3 3/7] block: loop: fix another reread part failure Ming Lei
2015-05-06  4:26 ` [PATCH v3 4/7] block: nbd: convert to blkdev_reread_part() Ming Lei
2015-05-06  4:26 ` [PATCH v3 5/7] block: dasd_genhd: convert to blkdev_reread_part Ming Lei
2015-05-06  4:26 ` [PATCH v3 6/7] block: replace trylock with mutex_lock in blkdev_reread_part() Ming Lei
2015-05-06  4:26 ` [PATCH v3 7/7] s390/block/dasd: remove obsolete while -EBUSY loop Ming Lei
2015-05-18 16:11 ` [PATCH v3 0/7] block: reread partitions changes and fix for loop Christoph Hellwig
2015-05-20  9:17   ` Ming Lei
2015-05-20  9:17     ` Ming Lei
2015-05-20 15:03     ` Jens Axboe
2015-05-20 15:03       ` Jens Axboe

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=1430886389-26878-1-git-send-email-ming.lei@canonical.com \
    --to=ming.lei@canonical.com \
    --cc=akpm@linux-foundation.org \
    --cc=axboe@kernel.dk \
    --cc=dh.herrmann@gmail.com \
    --cc=fabf@skynet.be \
    --cc=hch@infradead.org \
    --cc=jarod@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-s390@vger.kernel.org \
    --cc=mpa@pengutronix.de \
    --cc=nbd-general@lists.sourceforge.net \
    --cc=peterz@infradead.org \
    --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.