I have a box with 2 disks in RAID1. I probably set it up in 2006 under NetBSD 3, but I don't remember clearly. I just updated to netbsd-5 (from netbsd-5 last December or so) and on boot got: raid0: cooldown 218828043 out of range and there was a bunch of parity rewriting, but not the whole disk. I have swapoff=YES and have not had parity rewriting in general. So I figured that the place that has the cooldown parameter was never intialized, and did: raidctl -M set 8 40000 0 raid0 I now see $ raidctl -m raid0 raid0: parity map enabled with 4096 regions of 93MB raid0: regions marked clean after 8 intervals of 40.000s raid0: write/sync/clean counters 386/5/4 raid0: 28 dirty regions raid0: parity map will remain enabled on next configure which seems reasonable, but it matches what was before. So, I wonder if the code that objects to 218828043 should assume 8 if the value is bad, rather than exiting? Specifically in rf_paritymap_set_params(), it seems like parameters should be validated and objected to when writing, but when reading from disk we should make the most of a messy situation. Also, I don't see any guidance in raidctl(8) for setting cooldown and tickms. It seems the answer is 8 and 40000, but this doesn't make sense to me. Is it to avoid rewriting the parity map, figuring that redoing 28/4096 of the disk at boot isn't bad, especially since if the system is shut down cleanly no rewriting is necessary? So it really means a region is marked clean after 320s of not being written to?
Attachment:
pgpQKeDvFTkbO.pgp
Description: PGP signature