All of lore.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 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.