Deleted Added
full compact
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 ---