Bug 32062 - unable to mount root because of: "block: Require subsystems to explicitly allocate bio_set integrity mempool"
Summary: unable to mount root because of: "block: Require subsystems to explicitly all...
Status: CLOSED CODE_FIX
Alias: None
Product: IO/Storage
Classification: Unclassified
Component: Block Layer (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: Jens Axboe
URL:
Keywords:
Depends on:
Blocks: 32012
  Show dependency tree
 
Reported: 2011-03-28 17:11 UTC by Giacomo Catenazzi
Modified: 2011-04-17 12:36 UTC (History)
7 users (show)

See Also:
Kernel Version: 2.6.38-08184-gd39dd11
Subsystem:
Regression: Yes
Bisected commit-id:


Attachments
dmsg for good kernel (40.63 KB, text/plain)
2011-03-28 17:40 UTC, Giacomo Catenazzi
Details
dmesg for bad kernel (26.81 KB, text/plain)
2011-03-28 17:43 UTC, Giacomo Catenazzi
Details

Description Giacomo Catenazzi 2011-03-28 17:11:37 UTC
Hello,

the commit a91a2785b200864aef2270ed6a3babac7a253a20 break mounting of my root (on LVM on a RAID10).

Reverting the above commit with last available kernel (2.6.38-08817-g45699a7) will solve the situation.

See #24012 for some info about my configuration (and previous good dmesg). In next hours I will post also the good and bad dmesg.

ciao
     cate
Comment 1 Giacomo Catenazzi 2011-03-28 17:40:27 UTC
Created attachment 52362 [details]
dmsg for good kernel
Comment 2 Giacomo Catenazzi 2011-03-28 17:43:42 UTC
Created attachment 52372 [details]
dmesg for bad kernel

On console I saw:

mdadm: failed to RUN_ARRAY /dev/md0: Input/output error
Failure: failed to start /dev/md0
done
  Volume group "cateee" not found
  Skipping volume group cateee
Unable to find LVM volume cateee/root
done.

Then "usual" sulogin
Comment 3 Mike Snitzer 2011-03-28 18:28:34 UTC
commit a91a2785b20086 changed drivers/md/raid10.c (and other md_integrity_register callers) to check/propagate the md_integrity_register return value -- previously the return was ignored.

In contrast to DM, MD now requires a device be integrity capable by checking bdev_get_integrity().

It is fine to have md_integrity_register() fail with error but it should _not_ prevent the ability to start the MD array.

Long story short, seems the elevated importance of md_integrity_register()'s return needs to be reverted throughout all MD callers.
Comment 4 Martin K. Petersen 2011-03-28 18:45:17 UTC
Well, I'd rather handle the none-of-the-devices-are-capable case correctly.

I'll conjure up a patch...
Comment 5 Mike Snitzer 2011-03-28 18:52:27 UTC
(In reply to comment #4)
> Well, I'd rather handle the none-of-the-devices-are-capable case correctly.
> 
> I'll conjure up a patch...

Sure, I was suggesting reverting the error propagation as a stop-gap.  A real fix is even better ;)
Comment 6 Rafael J. Wysocki 2011-03-28 21:40:22 UTC
First-Bad-Commit : a91a2785b200864aef2270ed6a3babac7a253a20
Comment 7 Giacomo Catenazzi 2011-03-29 05:34:56 UTC
Fixed by commit 89078d572eb9ce8d4c04264b8b0ba86de0d74c8f md: Fix integrity registration error when no devices are capable

Note You need to log in before you can comment on or make changes to this bug.