geom_dev.c (219950) | geom_dev.c (221071) |
---|---|
1/*- 2 * Copyright (c) 2002 Poul-Henning Kamp 3 * Copyright (c) 2002 Networks Associates Technology, Inc. 4 * All rights reserved. 5 * 6 * This software was developed for the FreeBSD Project by Poul-Henning Kamp 7 * and NAI Labs, the Security Research Division of Network Associates, Inc. 8 * under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the --- 20 unchanged lines hidden (view full) --- 29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33 * SUCH DAMAGE. 34 */ 35 36#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 2002 Poul-Henning Kamp 3 * Copyright (c) 2002 Networks Associates Technology, Inc. 4 * All rights reserved. 5 * 6 * This software was developed for the FreeBSD Project by Poul-Henning Kamp 7 * and NAI Labs, the Security Research Division of Network Associates, Inc. 8 * under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the --- 20 unchanged lines hidden (view full) --- 29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33 * SUCH DAMAGE. 34 */ 35 36#include <sys/cdefs.h> |
37__FBSDID("$FreeBSD: head/sys/geom/geom_dev.c 219950 2011-03-24 08:37:48Z mav $"); | 37__FBSDID("$FreeBSD: head/sys/geom/geom_dev.c 221071 2011-04-26 17:01:49Z mav $"); |
38 39#include <sys/param.h> 40#include <sys/systm.h> 41#include <sys/malloc.h> 42#include <sys/kernel.h> 43#include <sys/conf.h> 44#include <sys/bio.h> 45#include <sys/lock.h> --- 62 unchanged lines hidden (view full) --- 108} 109 110 111static struct g_geom * 112g_dev_taste(struct g_class *mp, struct g_provider *pp, int insist __unused) 113{ 114 struct g_geom *gp; 115 struct g_consumer *cp; | 38 39#include <sys/param.h> 40#include <sys/systm.h> 41#include <sys/malloc.h> 42#include <sys/kernel.h> 43#include <sys/conf.h> 44#include <sys/bio.h> 45#include <sys/lock.h> --- 62 unchanged lines hidden (view full) --- 108} 109 110 111static struct g_geom * 112g_dev_taste(struct g_class *mp, struct g_provider *pp, int insist __unused) 113{ 114 struct g_geom *gp; 115 struct g_consumer *cp; |
116 int error; 117 struct cdev *dev; | 116 int error, len; 117 struct cdev *dev, *adev; 118 char buf[64], *val; |
118 119 g_trace(G_T_TOPOLOGY, "dev_taste(%s,%s)", mp->name, pp->name); 120 g_topology_assert(); 121 LIST_FOREACH(cp, &pp->consumers, consumers) 122 if (cp->geom->class == mp) 123 return (NULL); 124 gp = g_new_geomf(mp, pp->name); 125 cp = g_new_consumer(gp); --- 5 unchanged lines hidden (view full) --- 131 if (error != 0) { 132 printf("%s: make_dev_p() failed (gp->name=%s, error=%d)\n", 133 __func__, gp->name, error); 134 g_detach(cp); 135 g_destroy_consumer(cp); 136 g_destroy_geom(gp); 137 return (NULL); 138 } | 119 120 g_trace(G_T_TOPOLOGY, "dev_taste(%s,%s)", mp->name, pp->name); 121 g_topology_assert(); 122 LIST_FOREACH(cp, &pp->consumers, consumers) 123 if (cp->geom->class == mp) 124 return (NULL); 125 gp = g_new_geomf(mp, pp->name); 126 cp = g_new_consumer(gp); --- 5 unchanged lines hidden (view full) --- 132 if (error != 0) { 133 printf("%s: make_dev_p() failed (gp->name=%s, error=%d)\n", 134 __func__, gp->name, error); 135 g_detach(cp); 136 g_destroy_consumer(cp); 137 g_destroy_geom(gp); 138 return (NULL); 139 } |
140 141 /* Search for device alias name and create it if found. */ 142 adev = NULL; 143 for (len = MIN(strlen(gp->name), sizeof(buf) - 15); len > 0; len--) { 144 snprintf(buf, sizeof(buf), "kern.devalias.%s", gp->name); 145 buf[14 + len] = 0; 146 val = getenv(buf); 147 if (val != NULL) { 148 snprintf(buf, sizeof(buf), "%s%s", 149 val, gp->name + len); 150 freeenv(val); 151 adev = make_dev_alias(dev, buf); 152 break; 153 } 154 } 155 |
|
139 if (pp->flags & G_PF_CANDELETE) 140 dev->si_flags |= SI_CANDELETE; 141 dev->si_iosize_max = MAXPHYS; 142 gp->softc = dev; 143 dev->si_drv1 = gp; 144 dev->si_drv2 = cp; | 156 if (pp->flags & G_PF_CANDELETE) 157 dev->si_flags |= SI_CANDELETE; 158 dev->si_iosize_max = MAXPHYS; 159 gp->softc = dev; 160 dev->si_drv1 = gp; 161 dev->si_drv2 = cp; |
162 if (adev != NULL) { 163 if (pp->flags & G_PF_CANDELETE) 164 adev->si_flags |= SI_CANDELETE; 165 adev->si_iosize_max = MAXPHYS; 166 adev->si_drv1 = gp; 167 adev->si_drv2 = cp; 168 } |
|
145 return (gp); 146} 147 148static int 149g_dev_open(struct cdev *dev, int flags, int fmt, struct thread *td) 150{ 151 struct g_geom *gp; 152 struct g_consumer *cp; --- 311 unchanged lines hidden --- | 169 return (gp); 170} 171 172static int 173g_dev_open(struct cdev *dev, int flags, int fmt, struct thread *td) 174{ 175 struct g_geom *gp; 176 struct g_consumer *cp; --- 311 unchanged lines hidden --- |