public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v1 0/7] block: reread partitions changes and fix for loop
@ 2015-04-08 15:52 Ming Lei
  2015-04-08 15:52 ` [PATCH v1 1/7] block: export blkdev_reread_part() and __blkdev_reread_part() Ming Lei
                   ` (7 more replies)
  0 siblings, 8 replies; 12+ messages in thread
From: Ming Lei @ 2015-04-08 15:52 UTC (permalink / raw)
  To: Jens Axboe, linux-kernel, Christoph Hellwig, Tejun Heo
  Cc: Andrew Morton, Alexander Viro, Jarod Wilson, David Herrmann,
	Markus Pargmann, nbd-general, Stefan Haberland, Sebastian Ott,
	Fabian Frederick, Peter Zijlstra, linux-s390

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.

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            |   49 +++++++++++++++++++++++++++++----------
 drivers/block/loop.h            |    2 +-
 drivers/block/nbd.c             |    2 +-
 drivers/s390/block/dasd_genhd.c |   20 ++++------------
 include/linux/fs.h              |    3 +++
 6 files changed, 79 insertions(+), 34 deletions(-)


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

Thanks,
Ming Lei


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2015-04-09  1:06 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-04-08 15:52 [PATCH v1 0/7] block: reread partitions changes and fix for loop Ming Lei
2015-04-08 15:52 ` [PATCH v1 1/7] block: export blkdev_reread_part() and __blkdev_reread_part() Ming Lei
2015-04-08 15:52 ` [PATCH v1 2/7] block: loop: don't hold lo_ctl_mutex in lo_open Ming Lei
2015-04-08 15:53 ` [PATCH v1 3/7] block: loop: fix another reread part failure Ming Lei
2015-04-08 15:53 ` [PATCH v1 4/7] block: nbd: convert to blkdev_reread_part() Ming Lei
2015-04-08 15:53 ` [PATCH v1 5/7] block: dasd_genhd: convert to blkdev_reread_part Ming Lei
2015-04-08 15:53 ` [PATCH v1 6/7] block: replace trylock with mutex_lock in blkdev_reread_part() Ming Lei
2015-04-08 15:53 ` [PATCH v1 7/7] s390/block/dasd: remove obsolete while -EBUSY loop Ming Lei
2015-04-08 17:32   ` Sebastian Ott
2015-04-08 18:00     ` Jarod Wilson
2015-04-09  1:06       ` Ming Lei
2015-04-08 16:52 ` [PATCH v1 0/7] block: reread partitions changes and fix for loop Jarod Wilson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox