Lines Matching defs:ra
74 * RA disk device driver
113 #include "ra.h"
148 CFATTACH_DECL_NEW(ra, sizeof(struct ra_softc),
232 struct ra_softc *ra = mscp_device_lookup(dev);
237 if (!ra)
242 mutex_enter(&ra->ra_disk.dk_openlock);
248 if (ra->ra_disk.dk_nwedges != 0 && part != RAW_PART) {
257 if (ra->ra_state == DK_CLOSED) {
258 if (ra_putonline(dev, ra) == MSCP_FAILED) {
265 if (ra->ra_havelabel == 0)
266 ra->ra_wlabel = 1;
268 if (part >= ra->ra_disk.dk_label->d_npartitions) {
277 while (ra->ra_state != DK_OPEN)
278 if ((error = tsleep((void *)ra, (PZERO + 1) | PCATCH,
289 ra->ra_disk.dk_copenmask |= mask;
292 ra->ra_disk.dk_bopenmask |= mask;
295 ra->ra_disk.dk_openmask |= mask;
298 mutex_exit(&ra->ra_disk.dk_openlock);
306 struct ra_softc *ra = mscp_device_lookup(dev);
309 mutex_enter(&ra->ra_disk.dk_openlock);
313 ra->ra_disk.dk_copenmask &= ~mask;
316 ra->ra_disk.dk_bopenmask &= ~mask;
319 ra->ra_disk.dk_openmask =
320 ra->ra_disk.dk_copenmask | ra->ra_disk.dk_bopenmask;
327 if (ra->ra_openpart == 0) {
333 ra->ra_state = DK_CLOSED;
334 ra->ra_wlabel = 0;
337 mutex_exit(&ra->ra_disk.dk_openlock);
347 struct ra_softc *ra = mscp_device_lookup(bp->b_dev);
353 if (ra == NULL) {
360 if (ra->ra_state == DK_RDLABEL) {
363 disk_busy(&ra->ra_disk);
365 mscp_strategy(bp, device_parent(ra->ra_dev));
370 if (ra->ra_state == DK_CLOSED)
371 if (ra_putonline(bp->b_dev, ra) == MSCP_FAILED) {
380 if (bounds_check_with_label(&ra->ra_disk, bp, ra->ra_wlabel) <= 0)
385 disk_busy(&ra->ra_disk);
387 mscp_strategy(bp, device_parent(ra->ra_dev));
415 struct ra_softc *ra = mscp_device_lookup(dev);
421 lp = ra->ra_disk.dk_label;
423 error = disk_ioctl(&ra->ra_disk, dev, cmd, data, flag, l);
446 mutex_enter(&ra->ra_disk.dk_openlock);
453 ra->ra_wlabel = 1;
455 ra->ra_wlabel = 0;
457 mutex_exit(&ra->ra_disk.dk_openlock);
465 ra->ra_wlabel = 1;
485 rrmakelabel(tp, ra->ra_mediaid);
514 struct ra_softc *ra = mscp_device_lookup(dev);
516 if (!ra)
519 if (ra->ra_state == DK_CLOSED)
520 if (ra_putonline(dev, ra) == MSCP_FAILED)
523 return ra->ra_disk.dk_label->d_partitions[DISKPART(dev)].p_size *
524 (ra->ra_disk.dk_label->d_secsize / DEV_BSIZE);
602 /* Use almost all ra* routines for racd */
737 ra_set_geometry(struct ra_softc *ra)
742 dl = ra->ra_disk.dk_label;
743 dg = &ra->ra_disk.dk_geom;
753 disk_set_info(ra->ra_dev, &ra->ra_disk, NULL);
964 struct ra_softc *ra = device_private(usc);
966 disk_unbusy(&ra->ra_disk, bp->b_bcount, (bp->b_flags & B_READ));
981 struct ra_softc *ra = device_private(usc);
989 ra->ra_work.ra_usc = usc;
990 ra->ra_work.ra_mw.mw_mi = mi;
991 ra->ra_work.ra_mw.mw_mp = *mp;
992 ra->ra_work.ra_mw.mw_online = true;
993 workqueue_enqueue(mi->mi_wq, (struct work *)&ra->ra_work, NULL);
1004 struct ra_softc *ra = device_private(usc);
1007 wakeup((void *)&ra->ra_state);
1014 ra->ra_state = DK_OPEN;
1016 dl = ra->ra_disk.dk_label;
1027 rrmakelabel(dl, ra->ra_mediaid);
1028 ra_set_geometry(ra);
1101 struct ra_softc *ra = device_private(usc);
1108 ra->ra_state = DK_CLOSED;
1116 ra->ra_state = DK_CLOSED; /* Force another online */
1132 struct ra_softc *ra;
1136 ra = mscp_device_lookup(bp->b_dev);
1137 lp = ra->ra_disk.dk_label;
1140 mp->mscp_unit = ra->ra_hwunit;
1160 ra_putonline(dev_t dev, struct ra_softc *ra)
1165 if (rx_putonline(ra) != MSCP_DONE)
1168 dl = ra->ra_disk.dk_label;
1170 ra->ra_state = DK_RDLABEL;
1171 printf("%s", device_xname(ra->ra_dev));
1173 MAKEDISKDEV(major(dev), device_unit(ra->ra_dev), RAW_PART),
1175 ra->ra_havelabel = 1;
1176 ra->ra_state = DK_OPEN;
1198 struct ra_softc *ra;
1204 ra = device_lookup_private(&ra_cd, unit);
1209 ra = device_lookup_private(&racd_cd, unit);
1214 ra = device_lookup_private(&rx_cd, unit);
1219 return ra;