diff options
author | mav <mav@FreeBSD.org> | 2012-10-29 18:04:38 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2012-10-29 18:04:38 +0000 |
commit | a43d540d9efdfd22157e434662f6be55d1437f32 (patch) | |
tree | 3057436f0446cd34f89a0161970b65aabfad7947 /sys/geom/raid/md_nvidia.c | |
parent | 76f8fadfa80a4732a2670b0032c3ac3fc89da8c7 (diff) | |
download | FreeBSD-src-a43d540d9efdfd22157e434662f6be55d1437f32.zip FreeBSD-src-a43d540d9efdfd22157e434662f6be55d1437f32.tar.gz |
Add basic BIO_DELETE support to GEOM RAID class for all RAID levels.
If at least one subdisk in the volume supports it, BIO_DELETE requests
will be propagated down. Unfortunatelly, for RAID levels with redundancy
unmapped blocks will be mapped back during first rebuild/resync process.
Sponsored by: iXsystems, Inc.
MFC after: 1 month
Diffstat (limited to 'sys/geom/raid/md_nvidia.c')
-rw-r--r-- | sys/geom/raid/md_nvidia.c | 31 |
1 files changed, 4 insertions, 27 deletions
diff --git a/sys/geom/raid/md_nvidia.c b/sys/geom/raid/md_nvidia.c index 231caba..92d9f71 100644 --- a/sys/geom/raid/md_nvidia.c +++ b/sys/geom/raid/md_nvidia.c @@ -830,7 +830,7 @@ g_raid_md_taste_nvidia(struct g_raid_md_object *md, struct g_class *mp, struct nvidia_raid_conf *meta; struct g_raid_md_nvidia_perdisk *pd; struct g_geom *geom; - int error, result, spare, len; + int result, spare, len; char name[32]; uint16_t vendor; @@ -939,14 +939,7 @@ search: disk->d_consumer = rcp; rcp->private = disk; - /* Read kernel dumping information. */ - disk->d_kd.offset = 0; - disk->d_kd.length = OFF_MAX; - len = sizeof(disk->d_kd); - error = g_io_getattr("GEOM::kerneldump", rcp, &len, &disk->d_kd); - if (disk->d_kd.di.dumper == NULL) - G_RAID_DEBUG1(2, sc, "Dumping not supported by %s: %d.", - rcp->provider->name, error); + g_raid_get_disk_info(disk); g_raid_md_nvidia_new_disk(disk); @@ -1117,15 +1110,7 @@ g_raid_md_ctl_nvidia(struct g_raid_md_object *md, cp->private = disk; g_topology_unlock(); - /* Read kernel dumping information. */ - disk->d_kd.offset = 0; - disk->d_kd.length = OFF_MAX; - len = sizeof(disk->d_kd); - g_io_getattr("GEOM::kerneldump", cp, &len, &disk->d_kd); - if (disk->d_kd.di.dumper == NULL) - G_RAID_DEBUG1(2, sc, - "Dumping not supported by %s.", - cp->provider->name); + g_raid_get_disk_info(disk); pd->pd_disk_size = pp->mediasize; if (size > pp->mediasize) @@ -1377,15 +1362,7 @@ g_raid_md_ctl_nvidia(struct g_raid_md_object *md, cp->private = disk; g_topology_unlock(); - /* Read kernel dumping information. */ - disk->d_kd.offset = 0; - disk->d_kd.length = OFF_MAX; - len = sizeof(disk->d_kd); - g_io_getattr("GEOM::kerneldump", cp, &len, &disk->d_kd); - if (disk->d_kd.di.dumper == NULL) - G_RAID_DEBUG1(2, sc, - "Dumping not supported by %s.", - cp->provider->name); + g_raid_get_disk_info(disk); /* Welcome the "new" disk. */ update += g_raid_md_nvidia_start_disk(disk); |