Bunch of small bugfixes and cleanups.

Found with:     Coverity Prevent(tm)
CID:            9656, 9658, 9693, 9705, 9706, 9707, 9808, 9809, 9810,
		9711, 9712, 9713, 9714
This commit is contained in:
Alexander Motin 2011-03-31 16:14:35 +00:00
parent 73171433c5
commit 636076752a
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=220209
6 changed files with 24 additions and 29 deletions

View File

@ -541,9 +541,9 @@ intel_meta_write_spare(struct g_consumer *cp, struct intel_raid_disk *d)
/* Fill anchor and single disk. */ /* Fill anchor and single disk. */
meta = malloc(INTEL_MAX_MD_SIZE(1), M_MD_INTEL, M_WAITOK | M_ZERO); meta = malloc(INTEL_MAX_MD_SIZE(1), M_MD_INTEL, M_WAITOK | M_ZERO);
memcpy(&meta->intel_id[0], INTEL_MAGIC, sizeof(INTEL_MAGIC)); memcpy(&meta->intel_id[0], INTEL_MAGIC, sizeof(INTEL_MAGIC) - 1);
memcpy(&meta->version[0], INTEL_VERSION_1000, memcpy(&meta->version[0], INTEL_VERSION_1000,
sizeof(INTEL_VERSION_1000)); sizeof(INTEL_VERSION_1000) - 1);
meta->config_size = INTEL_MAX_MD_SIZE(1); meta->config_size = INTEL_MAX_MD_SIZE(1);
meta->config_id = arc4random(); meta->config_id = arc4random();
meta->generation = 1; meta->generation = 1;
@ -1881,10 +1881,8 @@ g_raid_md_ctl_intel(struct g_raid_md_object *md,
/* If disk was assigned, just update statuses. */ /* If disk was assigned, just update statuses. */
if (pd->pd_disk_pos >= 0) { if (pd->pd_disk_pos >= 0) {
g_raid_change_disk_state(disk, G_RAID_DISK_S_OFFLINE); g_raid_change_disk_state(disk, G_RAID_DISK_S_OFFLINE);
if (disk->d_consumer) { g_raid_kill_consumer(sc, disk->d_consumer);
g_raid_kill_consumer(sc, disk->d_consumer); disk->d_consumer = NULL;
disk->d_consumer = NULL;
}
TAILQ_FOREACH(sd, &disk->d_subdisks, sd_next) { TAILQ_FOREACH(sd, &disk->d_subdisks, sd_next) {
g_raid_change_subdisk_state(sd, g_raid_change_subdisk_state(sd,
G_RAID_SUBDISK_S_NONE); G_RAID_SUBDISK_S_NONE);
@ -2049,7 +2047,7 @@ g_raid_md_write_intel(struct g_raid_md_object *md, struct g_raid_volume *tvol,
/* Fill anchor and disks. */ /* Fill anchor and disks. */
meta = malloc(INTEL_MAX_MD_SIZE(numdisks), meta = malloc(INTEL_MAX_MD_SIZE(numdisks),
M_MD_INTEL, M_WAITOK | M_ZERO); M_MD_INTEL, M_WAITOK | M_ZERO);
memcpy(&meta->intel_id[0], INTEL_MAGIC, sizeof(INTEL_MAGIC)); memcpy(&meta->intel_id[0], INTEL_MAGIC, sizeof(INTEL_MAGIC) - 1);
meta->config_size = INTEL_MAX_MD_SIZE(numdisks); meta->config_size = INTEL_MAX_MD_SIZE(numdisks);
meta->config_id = mdi->mdio_config_id; meta->config_id = mdi->mdio_config_id;
meta->generation = mdi->mdio_generation; meta->generation = mdi->mdio_generation;
@ -2214,7 +2212,7 @@ g_raid_md_write_intel(struct g_raid_md_object *md, struct g_raid_volume *tvol,
meta->total_volumes = vi; meta->total_volumes = vi;
if (strcmp(version, INTEL_VERSION_1300) != 0) if (strcmp(version, INTEL_VERSION_1300) != 0)
meta->attributes &= INTEL_ATTR_CHECKSUM; meta->attributes &= INTEL_ATTR_CHECKSUM;
memcpy(&meta->version[0], version, sizeof(INTEL_VERSION_1000)); memcpy(&meta->version[0], version, sizeof(INTEL_VERSION_1000) - 1);
/* We are done. Print meta data and store them to disks. */ /* We are done. Print meta data and store them to disks. */
g_raid_md_intel_print(meta); g_raid_md_intel_print(meta);

View File

@ -431,7 +431,10 @@ g_raid_md_jmicron_start_disk(struct g_raid_disk *disk)
olddisk = NULL; olddisk = NULL;
/* Find disk position in metadata by it's serial. */ /* Find disk position in metadata by it's serial. */
disk_pos = jmicron_meta_find_disk(meta, pd->pd_disk_id); if (pd->pd_meta != NULL)
disk_pos = jmicron_meta_find_disk(meta, pd->pd_disk_id);
else
disk_pos = -1;
if (disk_pos < 0) { if (disk_pos < 0) {
G_RAID_DEBUG1(1, sc, "Unknown, probably new or stale disk"); G_RAID_DEBUG1(1, sc, "Unknown, probably new or stale disk");
/* If we are in the start process, that's all for now. */ /* If we are in the start process, that's all for now. */
@ -522,7 +525,7 @@ g_raid_md_jmicron_start_disk(struct g_raid_disk *disk)
* Different disks may have different sizes/offsets, * Different disks may have different sizes/offsets,
* especially in concat mode. Update. * especially in concat mode. Update.
*/ */
if (pd->pd_meta != NULL && !resurrection) { if (!resurrection) {
sd->sd_offset = sd->sd_offset =
(off_t)pd->pd_meta->offset * 16 * 512; //ZZZ (off_t)pd->pd_meta->offset * 16 * 512; //ZZZ
sd->sd_size = sd->sd_size =
@ -1300,10 +1303,8 @@ g_raid_md_ctl_jmicron(struct g_raid_md_object *md,
/* If disk was assigned, just update statuses. */ /* If disk was assigned, just update statuses. */
if (pd->pd_disk_pos >= 0) { if (pd->pd_disk_pos >= 0) {
g_raid_change_disk_state(disk, G_RAID_DISK_S_OFFLINE); g_raid_change_disk_state(disk, G_RAID_DISK_S_OFFLINE);
if (disk->d_consumer) { g_raid_kill_consumer(sc, disk->d_consumer);
g_raid_kill_consumer(sc, disk->d_consumer); disk->d_consumer = NULL;
disk->d_consumer = NULL;
}
TAILQ_FOREACH(sd, &disk->d_subdisks, sd_next) { TAILQ_FOREACH(sd, &disk->d_subdisks, sd_next) {
g_raid_change_subdisk_state(sd, g_raid_change_subdisk_state(sd,
G_RAID_SUBDISK_S_NONE); G_RAID_SUBDISK_S_NONE);

View File

@ -1311,10 +1311,8 @@ g_raid_md_ctl_nvidia(struct g_raid_md_object *md,
/* If disk was assigned, just update statuses. */ /* If disk was assigned, just update statuses. */
if (pd->pd_disk_pos >= 0) { if (pd->pd_disk_pos >= 0) {
g_raid_change_disk_state(disk, G_RAID_DISK_S_OFFLINE); g_raid_change_disk_state(disk, G_RAID_DISK_S_OFFLINE);
if (disk->d_consumer) { g_raid_kill_consumer(sc, disk->d_consumer);
g_raid_kill_consumer(sc, disk->d_consumer); disk->d_consumer = NULL;
disk->d_consumer = NULL;
}
TAILQ_FOREACH(sd, &disk->d_subdisks, sd_next) { TAILQ_FOREACH(sd, &disk->d_subdisks, sd_next) {
g_raid_change_subdisk_state(sd, g_raid_change_subdisk_state(sd,
G_RAID_SUBDISK_S_NONE); G_RAID_SUBDISK_S_NONE);
@ -1435,7 +1433,7 @@ g_raid_md_write_nvidia(struct g_raid_md_object *md, struct g_raid_volume *tvol,
meta = malloc(sizeof(*meta), M_MD_NVIDIA, M_WAITOK | M_ZERO); meta = malloc(sizeof(*meta), M_MD_NVIDIA, M_WAITOK | M_ZERO);
if (mdi->mdio_meta) if (mdi->mdio_meta)
memcpy(meta, mdi->mdio_meta, sizeof(*meta)); memcpy(meta, mdi->mdio_meta, sizeof(*meta));
memcpy(meta->nvidia_id, NVIDIA_MAGIC, sizeof(NVIDIA_MAGIC)); memcpy(meta->nvidia_id, NVIDIA_MAGIC, sizeof(NVIDIA_MAGIC) - 1);
meta->config_size = 30; meta->config_size = 30;
meta->version = 0x0064; meta->version = 0x0064;
meta->total_sectors = vol->v_mediasize / vol->v_sectorsize; meta->total_sectors = vol->v_mediasize / vol->v_sectorsize;

View File

@ -398,7 +398,8 @@ promise_meta_write(struct g_consumer *cp,
&off, &size)) { &off, &size)) {
/* Optionally add record for unused space. */ /* Optionally add record for unused space. */
meta = (struct promise_raid_conf *)buf; meta = (struct promise_raid_conf *)buf;
memcpy(&meta->promise_id[0], PROMISE_MAGIC, sizeof(PROMISE_MAGIC)); memcpy(&meta->promise_id[0], PROMISE_MAGIC,
sizeof(PROMISE_MAGIC) - 1);
meta->dummy_0 = 0x00020000; meta->dummy_0 = 0x00020000;
meta->integrity = PROMISE_I_VALID; meta->integrity = PROMISE_I_VALID;
meta->disk.flags = PROMISE_F_ONLINE | PROMISE_F_VALID; meta->disk.flags = PROMISE_F_ONLINE | PROMISE_F_VALID;
@ -462,7 +463,7 @@ promise_meta_write_spare(struct g_consumer *cp)
int error; int error;
meta = malloc(sizeof(*meta), M_MD_PROMISE, M_WAITOK | M_ZERO); meta = malloc(sizeof(*meta), M_MD_PROMISE, M_WAITOK | M_ZERO);
memcpy(&meta->promise_id[0], PROMISE_MAGIC, sizeof(PROMISE_MAGIC)); memcpy(&meta->promise_id[0], PROMISE_MAGIC, sizeof(PROMISE_MAGIC) - 1);
meta->dummy_0 = 0x00020000; meta->dummy_0 = 0x00020000;
meta->integrity = PROMISE_I_VALID; meta->integrity = PROMISE_I_VALID;
meta->disk.flags = PROMISE_F_SPARE | PROMISE_F_ONLINE | PROMISE_F_VALID; meta->disk.flags = PROMISE_F_SPARE | PROMISE_F_ONLINE | PROMISE_F_VALID;
@ -818,10 +819,10 @@ g_raid_md_promise_refill(struct g_raid_softc *sc)
} else } else
update = 0; update = 0;
if (update) { if (update) {
updated = 1;
g_raid_md_write_promise(md, vol, NULL, disk); g_raid_md_write_promise(md, vol, NULL, disk);
break; break;
} }
updated += update;
} }
} }
if (updated) if (updated)
@ -1684,7 +1685,8 @@ g_raid_md_write_promise(struct g_raid_md_object *md, struct g_raid_volume *tvol,
meta = malloc(sizeof(*meta), M_MD_PROMISE, M_WAITOK | M_ZERO); meta = malloc(sizeof(*meta), M_MD_PROMISE, M_WAITOK | M_ZERO);
if (pv->pv_meta != NULL) if (pv->pv_meta != NULL)
memcpy(meta, pv->pv_meta, sizeof(*meta)); memcpy(meta, pv->pv_meta, sizeof(*meta));
memcpy(meta->promise_id, PROMISE_MAGIC, sizeof(PROMISE_MAGIC)); memcpy(meta->promise_id, PROMISE_MAGIC,
sizeof(PROMISE_MAGIC) - 1);
meta->dummy_0 = 0x00020000; meta->dummy_0 = 0x00020000;
meta->integrity = PROMISE_I_VALID; meta->integrity = PROMISE_I_VALID;

View File

@ -1389,10 +1389,8 @@ g_raid_md_ctl_sii(struct g_raid_md_object *md,
/* If disk was assigned, just update statuses. */ /* If disk was assigned, just update statuses. */
if (pd->pd_disk_pos >= 0) { if (pd->pd_disk_pos >= 0) {
g_raid_change_disk_state(disk, G_RAID_DISK_S_OFFLINE); g_raid_change_disk_state(disk, G_RAID_DISK_S_OFFLINE);
if (disk->d_consumer) { g_raid_kill_consumer(sc, disk->d_consumer);
g_raid_kill_consumer(sc, disk->d_consumer); disk->d_consumer = NULL;
disk->d_consumer = NULL;
}
TAILQ_FOREACH(sd, &disk->d_subdisks, sd_next) { TAILQ_FOREACH(sd, &disk->d_subdisks, sd_next) {
g_raid_change_subdisk_state(sd, g_raid_change_subdisk_state(sd,
G_RAID_SUBDISK_S_NONE); G_RAID_SUBDISK_S_NONE);

View File

@ -720,8 +720,6 @@ g_raid_tr_iodone_raid1(struct g_raid_tr_object *tr,
bp->bio_error); bp->bio_error);
bp->bio_cmd = BIO_WRITE; bp->bio_cmd = BIO_WRITE;
bp->bio_cflags = G_RAID_BIO_FLAG_SYNC; bp->bio_cflags = G_RAID_BIO_FLAG_SYNC;
bp->bio_offset = bp->bio_offset;
bp->bio_length = bp->bio_length;
G_RAID_LOGREQ(4, bp, "Queueing rebuild write."); G_RAID_LOGREQ(4, bp, "Queueing rebuild write.");
g_raid_subdisk_iostart(trs->trso_failed_sd, bp); g_raid_subdisk_iostart(trs->trso_failed_sd, bp);
} else { } else {