[lkml]   [2015]   [Apr]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Subject[PATCH v2 0/7] block: reread partitions changes and fix for loop
Hi Guys,

Recently there are several reports about loop partition scanning

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.

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

- 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 | 19 ++++-----------
include/linux/fs.h | 3 +++
6 files changed, 79 insertions(+), 33 deletions(-)


Ming Lei

 \ /
  Last update: 2015-04-11 14:01    [W:0.116 / U:7.640 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site