This bug likely exists for some time, guess it's a corner case, but an user ran into it today.
How to reproduce:
Say you have all 2TB data disks, upgrade parity to a larger disk, e.g. 3TB, start the array and cancel the parity sync, stop the array and replace the 3TB parity with a 2TB disk, start array and parity sync will start again but will still show the old 3TB size for total parity size (not the disk itself), then it will error out during the sync when it runs past the actual parity size with an error similar to this one:
May 28 19:04:44 Tower9 kernel: attempt to access beyond end of device
May 28 19:04:44 Tower9 kernel: sdc: rw=1, want=976773176, limit=976773168
May 28 19:04:44 Tower9 kernel: md: disk0 write error, sector=976773104
May 28 19:04:44 Tower9 kernel: attempt to access beyond end of device
May 28 19:04:44 Tower9 kernel: sdc: rw=1, want=976773184, limit=976773168
May 28 19:04:45 Tower9 kernel: md: disk0 write error, sector=976773112
May 28 19:04:45 Tower9 kernel: md: recovery thread: exit status: -4
This will result in parity disk being disabled, and the user will need to sync it again.
I guess there will also be a problem if a small disk is used first and then replaced with a larger one, likely parity will say valid but it won't be synced past the end of the smaller device.
- 1
Recommended Comments
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.