--- src/sys/dev/ata/ata-raid.c 2007/08/13 18:46:31 1.124 +++ src/sys/dev/ata/ata-raid.c 2008/03/20 11:54:26 1.125 @@ -910,6 +910,11 @@ ata_raid_config_changed(struct ar_softc } if (rdp->status != status) { + + /* raid status has changed, update metadata */ + writeback = 1; + + /* announce we have trouble ahead */ if (!(rdp->status & AR_S_READY)) { printf("ar%d: FAILURE - %s array broken\n", rdp->lun, ata_raid_type(rdp)); @@ -2272,11 +2277,14 @@ ata_raid_intel_write_meta(struct ar_soft } rdp->generation++; - microtime(×tamp); + if (!rdp->magic_0) { + microtime(×tamp); + rdp->magic_0 = timestamp.tv_sec ^ timestamp.tv_usec; + } bcopy(INTEL_MAGIC, meta->intel_id, sizeof(meta->intel_id)); bcopy(INTEL_VERSION_1100, meta->version, sizeof(meta->version)); - meta->config_id = timestamp.tv_sec; + meta->config_id = rdp->magic_0; meta->generation = rdp->generation; meta->total_disks = rdp->total_disks; meta->total_volumes = 1; /* XXX SOS */