Re: [RFC][PATCH] md: avoid fullsync if a faulty member missed a dirty transition
From: Mike Snitzer <hidden>
Date: 2008-05-09 05:27:19
Also in:
lkml
On Fri, May 9, 2008 at 1:08 AM, Mike Snitzer [off-list ref] wrote:
On Fri, May 9, 2008 at 12:42 AM, Mike Snitzer [off-list ref] wrote: > Was I supposed to use this latest patch in combination with your > previous patch (to validate_super)? Because you'll note that with > your most recent patch nbd0's events (ev1) is still one less than > sdq's events_cleared. As such the validate_super's "ev1 < > mddev->bitmap->events_cleared" check triggers a full rebuild. > > The kernel log shows: > md: md0 stopped. > md: bind<nbd0> > md: bind<sdq> > md: kicking non-fresh nbd0 from array! > md: unbind<nbd0> > md: export_rdev(nbd0) > raid1: raid set md0 active with 1 out of 2 mirrors > md0: bitmap initialized from disk: read 13/13 pages, set 0 bits, status: 0 Also, no bits were set in the bitmap.. bitmap_create() must've thrown away the dirty bits. Given your latest patch, does bitmap_create()'s "bitmap->events_cleared == mddev->events" check need to be adjusted? Before I would always see something like: md0: bitmap initialized from disk: read 13/13 pages, set 1 bits, status: 0
Actually, the mdadm -X output I provided shows that sdq's bitmap doesn't have any bits set: Bitmap : 409600 bits (chunks), 0 dirty (0.0%) This can't be right, considering nbd0 was marked faulty and the array became degraded, can it?