All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/7] block: reread partitions changes and fix for loop
@ 2015-05-06  4:26 Ming Lei
  2015-05-06  4:26 ` [PATCH v3 1/7] block: export blkdev_reread_part() and __blkdev_reread_part() Ming Lei
                   ` (7 more replies)
  0 siblings, 8 replies; 13+ messages in thread
From: Ming Lei @ 2015-05-06  4:26 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.

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



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

end of thread, other threads:[~2015-05-20 15:03 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-05-06  4:26 [PATCH v3 0/7] block: reread partitions changes and fix for loop Ming Lei
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

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.