loop/001: verify all partitions are removed

loop/001 does not test whether all partitions are removed successfully
during loop device partition scanning. As a result, the regression
introduced by 0da03cab87e6 ("loop: Fix deadlock when calling
blkdev_reread_part()") can not be detected.

The regression will generate below message in dmesg:

[  464.414043] __loop_clr_fd: partition scan of loop0 failed (rc=-22)

and leave orphan partitions like below:

- /dev/loop0p1
- /sys/block/loop0/loop0p1

This patch verifies all partitions are removed by checking if there is
/sys/block/loopX/loopXpY left. The expected number of partitions left is 0.

Signed-off-by: Dongli Zhang <dongli.zhang@oracle.com>
[Omar: check devices and sysfs for both before and after]
Signed-off-by: Omar Sandoval <osandov@fb.com>
2 files changed
tree: 2c0fa3a823cb0c3d4d91e28cdb9d1364006ab239
  1. common/
  2. Documentation/
  3. LICENSES/
  4. src/
  5. tests/
  6. .dir-locals.el
  7. .gitignore
  8. .travis.yml
  9. check
  10. CONTRIBUTING.md
  11. Makefile
  12. new
  13. README.md
README.md

blktests

Build Status

blktests is a test framework for the Linux kernel block layer and storage stack. It is inspired by the xfstests filesystem testing framework.

Getting Started

The dependencies are minimal, but make sure you have them installed:

  • bash (>= 4.2)
  • GNU coreutils
  • GNU awk
  • util-linux
  • fio
  • gcc
  • make

Some tests require the following:

  • e2fsprogs and xfsprogs
  • multipath-tools (Debian, openSUSE) or device-mapper-multipath (Fedora)
  • dmsetup (Debian) or device-mapper (Fedora, openSUSE, Arch Linux)

Build blktests with make. Optionally, install it to a known location with make install (/usr/local/blktests by default, but this can be changed by passing DESTDIR and/or prefix).

Add the list of block devices you want to test on in a file named config:

TEST_DEVS=(/dev/nvme0n1 /dev/sdb)

And as root, run the default set of tests with ./check.

Note that these tests are destructive, so don't add anything to the TEST_DEVS array containing data that you want to keep.

See here for more detailed information on configuration and running tests.

Adding Tests

The ./new script creates a new test from a template. The generated template contains more detailed documentation.

Pull requests on GitHub and patches to linux-block@vger.kernel.org are both accepted. See here for more information on contributing.