summaryrefslogtreecommitdiffstats
path: root/sys/geom/raid/md_ddf.c
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2014-04-28 15:03:52 +0000
committermav <mav@FreeBSD.org>2014-04-28 15:03:52 +0000
commitb384f8775fb9dac291a6c48827c9f7c4bd2bc455 (patch)
tree8ef1dbcf0bf2748d8dd96a8f0489bf36ec905653 /sys/geom/raid/md_ddf.c
parent12ae7f74a071f0439763986026525094a7032dfd (diff)
downloadFreeBSD-src-b384f8775fb9dac291a6c48827c9f7c4bd2bc455.zip
FreeBSD-src-b384f8775fb9dac291a6c48827c9f7c4bd2bc455.tar.gz
Reduce number of opens by REOM RAID during provider taste.
Instead opening/closing provider by each of metadata classes, do it only once in core code. Since for SCSI disks open/close means sending some SCSI commands to the device, this change reduces taste time. MFC after: 2 weeks Sponsored by: iXsystems, Inc.
Diffstat (limited to 'sys/geom/raid/md_ddf.c')
-rw-r--r--sys/geom/raid/md_ddf.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/geom/raid/md_ddf.c b/sys/geom/raid/md_ddf.c
index 63d767d..eed048d 100644
--- a/sys/geom/raid/md_ddf.c
+++ b/sys/geom/raid/md_ddf.c
@@ -2120,13 +2120,10 @@ g_raid_md_taste_ddf(struct g_raid_md_object *md, struct g_class *mp,
pp = cp->provider;
/* Read metadata from device. */
- if (g_access(cp, 1, 0, 0) != 0)
- return (G_RAID_MD_TASTE_FAIL);
g_topology_unlock();
bzero(&meta, sizeof(meta));
error = ddf_meta_read(cp, &meta);
g_topology_lock();
- g_access(cp, -1, 0, 0);
if (error != 0)
return (G_RAID_MD_TASTE_FAIL);
be = meta.bigendian;
@@ -2164,6 +2161,9 @@ g_raid_md_taste_ddf(struct g_raid_md_object *md, struct g_class *mp,
geom = sc->sc_geom;
}
+ /* There is no return after this point, so we close passed consumer. */
+ g_access(cp, -1, 0, 0);
+
rcp = g_new_consumer(geom);
rcp->flags |= G_CF_DIRECT_RECEIVE;
g_attach(rcp, pp);
OpenPOWER on IntegriCloud