bcache: pr_err: more meaningful error message when nr_stripes is invalid
authorEric Wheeler <git@linux.ewheeler.net>
Fri, 19 Aug 2016 03:15:26 +0000 (20:15 -0700)
committerEric Wheeler <git@linux.ewheeler.net>
Fri, 19 Aug 2016 03:31:03 +0000 (20:31 -0700)
The original error was thought to be corruption, but was actually caused by:
make-bcache --data-offset N
where N was in bytes and should have been in sectors.  While userspace
tools should be updated to check --data-offset beyond end of volume,
hopefully this will help others that might not have noticed the units.

Signed-off-by: Eric Wheeler <bcache@linux.ewheeler.net>
Cc: Kent Overstreet <kent.overstreet@gmail.com>
drivers/md/bcache/super.c

index 6b93e1b77767b3e29171b5935c99c7f047cbc41f..849ad441cd76ba6b04ba2fa2aaac51471acdfd67 100644 (file)
@@ -760,7 +760,8 @@ static int bcache_device_init(struct bcache_device *d, unsigned block_size,
        if (!d->nr_stripes ||
            d->nr_stripes > INT_MAX ||
            d->nr_stripes > SIZE_MAX / sizeof(atomic_t)) {
-               pr_err("nr_stripes too large");
+               pr_err("nr_stripes too large or invalid: %u (start sector beyond end of disk?)",
+                       (unsigned)d->nr_stripes);
                return -ENOMEM;
        }