Lines Matching +defs:link +defs:flags

163 	struct scsi_link		*link = sa->sa_sc_link;
167 SC_DEBUG(link, SDEV_DB2, ("sdattach:\n"));
175 sc->sc_link = link;
176 link->interpret_sense = sd_interpret_sense;
177 link->device_softc = sc;
179 if (ISSET(link->flags, SDEV_ATAPI) && ISSET(link->flags,
181 SET(link->quirks, SDEV_NOSYNCCACHE);
189 scsi_xsh_set(&sc->sc_xsh, link, sdstart);
192 if (!ISSET(link->flags, SDEV_UMASS))
193 scsi_start(link, SSS_START, sd_autoconf);
199 if (ISSET(link->flags, SDEV_REMOVABLE))
200 scsi_prevent(link, PR_PREVENT, sd_autoconf);
208 if (ISSET(link->flags, SDEV_REMOVABLE))
209 scsi_prevent(link, PR_ALLOW, sd_autoconf);
216 if (ISSET(sc->flags, SDF_THIN)) {
220 if (ISSET(link->flags, SDEV_READONLY))
247 struct scsi_link *link;
250 if (ISSET(sc->flags, SDF_DYING))
252 link = sc->sc_link;
260 if (ISSET(sc->flags, SDF_DIRTY))
270 if (ISSET(sc->flags, SDF_DIRTY))
273 scsi_start(link, SSS_STOP,
278 scsi_start(link, SSS_START,
282 SET(sc->flags, SDF_DYING);
290 sddetach(struct device *self, int flags)
311 struct scsi_link *link;
323 if (ISSET(sc->flags, SDF_DYING)) {
327 link = sc->sc_link;
329 SC_DEBUG(link, SDEV_DB1,
333 if (ISSET(flag, FWRITE) && ISSET(link->flags, SDEV_READONLY)) {
341 if (ISSET(sc->flags, SDF_DYING)) {
351 if (!ISSET(link->flags, SDEV_MEDIA_LOADED)) {
359 if (!ISSET(link->flags, SDEV_UMASS))
360 scsi_start(link, SSS_START, (rawopen ? SCSI_SILENT :
371 if (ISSET(sc->flags, SDF_DYING)) {
375 SET(link->flags, SDEV_OPEN);
382 if (ISSET(link->flags, SDEV_REMOVABLE)) {
383 scsi_prevent(link, PR_PREVENT, SCSI_SILENT |
389 if (ISSET(sc->flags, SDF_DYING)) {
393 error = scsi_test_unit_ready(link,
405 if (ISSET(sc->flags, SDF_DYING)) {
409 SET(link->flags, SDEV_MEDIA_LOADED);
411 if (ISSET(sc->flags, SDF_DYING)) {
415 CLR(link->flags, SDEV_MEDIA_LOADED);
419 SC_DEBUG(link, SDEV_DB3, ("Params loaded\n"));
425 SC_DEBUG(link, SDEV_DB3, ("Disklabel loaded\n"));
432 SC_DEBUG(link, SDEV_DB3, ("open complete\n"));
437 if (ISSET(sc->flags, SDF_DYING)) {
441 if (ISSET(link->flags, SDEV_REMOVABLE))
442 scsi_prevent(link, PR_ALLOW, SCSI_SILENT |
445 if (ISSET(sc->flags, SDF_DYING)) {
449 CLR(link->flags, SDEV_OPEN | SDEV_MEDIA_LOADED);
465 struct scsi_link *link;
473 if (ISSET(sc->flags, SDF_DYING)) {
477 link = sc->sc_link;
484 ISSET(sc->flags, SDF_DIRTY))
488 if (ISSET(sc->flags, SDF_DYING)) {
492 if (ISSET(link->flags, SDEV_REMOVABLE))
493 scsi_prevent(link, PR_ALLOW,
496 if (ISSET(sc->flags, SDF_DYING)) {
500 CLR(link->flags, SDEV_OPEN | SDEV_MEDIA_LOADED);
502 if (ISSET(link->flags, SDEV_EJECTING)) {
503 scsi_start(link, SSS_STOP|SSS_LOEJ, 0);
504 if (ISSET(sc->flags, SDF_DYING)) {
508 CLR(link->flags, SDEV_EJECTING);
528 struct scsi_link *link;
537 if (ISSET(sc->flags, SDF_DYING)) {
541 link = sc->sc_link;
543 SC_DEBUG(link, SDEV_DB2, ("sdstrategy: %ld bytes @ blk %lld\n",
548 if (!ISSET(link->flags, SDEV_MEDIA_LOADED)) {
549 if (ISSET(link->flags, SDEV_OPEN))
651 struct scsi_link *link = xs->sc_link;
652 struct sd_softc *sc = link->device_softc;
659 if (ISSET(sc->flags, SDF_DYING)) {
663 if (!ISSET(link->flags, SDEV_MEDIA_LOADED)) {
676 SET(xs->flags, (read ? SCSI_DATA_IN : SCSI_DATA_OUT));
688 if (!ISSET(link->flags, SDEV_ATAPI | SDEV_UMASS) &&
689 (SID_ANSII_REV(&link->inqdata) < SCSI_REV_2) &&
705 SET(sc->flags, SDF_DIRTY);
779 struct scsi_link *link;
786 if (ISSET(sc->flags, SDF_DYING)) {
790 link = sc->sc_link;
803 if (!ISSET(link->flags, SDEV_ATAPI | SDEV_UMASS) &&
804 SID_ANSII_REV(&link->inqdata) < SCSI_REV_2) {
811 if (link->bus->sb_adapter->dev_minphys != NULL)
812 (*link->bus->sb_adapter->dev_minphys)(bp, link);
838 struct scsi_link *link;
847 if (ISSET(sc->flags, SDF_DYING)) {
851 link = sc->sc_link;
853 SC_DEBUG(link, SDEV_DB2, ("sdioctl 0x%lx\n", cmd));
858 if (!ISSET(link->flags, SDEV_MEDIA_LOADED)) {
869 if (!ISSET(link->flags, SDEV_OPEN)) {
923 error = scsi_prevent(link,
934 if (!ISSET(link->flags, SDEV_REMOVABLE)) {
938 SET(link->flags, SDEV_EJECTING);
942 error = scsi_do_ioctl(link, cmd, addr, flag);
963 if (ISSET(sc->flags, SDF_DIRTY) || *(int *)addr != 0)
972 error = scsi_do_ioctl(link, cmd, addr, flag);
983 struct scsi_link *link;
988 if (ISSET(sc->flags, SDF_DYING)) {
992 link = sc->sc_link;
995 scsi_strvis(di->vendor, link->inqdata.vendor,
996 sizeof(link->inqdata.vendor));
997 scsi_strvis(di->product, link->inqdata.product,
998 sizeof(link->inqdata.product));
999 scsi_strvis(di->revision, link->inqdata.revision,
1000 sizeof(link->inqdata.revision));
1003 if (scsi_inquire_vpd(link, vpd, sizeof(*vpd), SI_PG_SERIAL, 0) == 0)
1015 struct scsi_link *link;
1021 if (ISSET(sc->flags, SDF_DYING))
1023 link = sc->sc_link;
1025 if (ISSET(link->flags, SDEV_UMASS))
1029 rv = scsi_do_ioctl(link, cmd, (caddr_t)dkc, 0);
1037 if (ISSET(sc->flags, SDF_DYING)) {
1041 rv = scsi_do_mode_sense(link, PAGE_CACHING_MODE, buf, (void **)&mode,
1048 wrcache = (ISSET(mode->flags, PG_CACHE_FL_WCE) ? 1 : 0);
1049 rdcache = (ISSET(mode->flags, PG_CACHE_FL_RCD) ? 0 : 1);
1062 SET(mode->flags, PG_CACHE_FL_WCE);
1064 CLR(mode->flags, PG_CACHE_FL_WCE);
1067 CLR(mode->flags, PG_CACHE_FL_RCD);
1069 SET(mode->flags, PG_CACHE_FL_RCD);
1071 if (ISSET(sc->flags, SDF_DYING)) {
1076 rv = scsi_mode_select_big(link, SMS_PF,
1079 rv = scsi_mode_select(link, SMS_PF,
1099 struct scsi_link *link;
1102 if (ISSET(sc->flags, SDF_DYING))
1104 link = sc->sc_link;
1118 if (ISSET(link->flags, SDEV_UFI)) {
1124 if ((link->inqdata.device & SID_TYPE) == T_OPTICAL)
1137 viscpy(vendor, link->inqdata.vendor, 8);
1138 viscpy(product, link->inqdata.product, 16);
1173 struct scsi_link *link = xs->sc_link;
1181 if ((!ISSET(link->flags, SDEV_OPEN)) ||
1183 ((sense->flags & SSD_KEY) != SKEY_NOT_READY) ||
1187 if (ISSET(xs->flags, SCSI_IGNORE_NOT_READY))
1192 SC_DEBUG(link, SDEV_DB1, ("becoming ready.\n"));
1197 SC_DEBUG(link, SDEV_DB1, ("spinning up\n"));
1198 retval = scsi_start(link, SSS_START,
1206 SC_DEBUG(link, SDEV_DB1, ("spin up failed (%#x)\n",
1229 if (ISSET(sc->flags, SDF_DYING)) {
1243 if (ISSET(sc->flags, SDF_DYING)) {
1247 if (!ISSET(sc->sc_link->flags, SDEV_MEDIA_LOADED))
1304 if (!ISSET(sc->sc_link->flags, SDEV_MEDIA_LOADED))
1387 sd_read_cap_10(struct sd_softc *sc, int flags)
1392 rdcap = dma_alloc(sizeof(*rdcap), (ISSET(flags, SCSI_NOSLEEP) ?
1397 if (ISSET(sc->flags, SDF_DYING)) {
1402 rv = scsi_read_cap_10(sc->sc_link, rdcap, flags);
1410 CLR(sc->flags, SDF_THIN);
1419 sd_read_cap_16(struct sd_softc *sc, int flags)
1424 rdcap = dma_alloc(sizeof(*rdcap), (ISSET(flags, SCSI_NOSLEEP) ?
1429 if (ISSET(sc->flags, SDF_DYING)) {
1434 rv = scsi_read_cap_16(sc->sc_link, rdcap, flags);
1443 SET(sc->flags, SDF_THIN);
1445 CLR(sc->flags, SDF_THIN);
1454 sd_read_cap(struct sd_softc *sc, int flags)
1458 CLR(flags, SCSI_IGNORE_ILLEGAL_REQUEST);
1468 rv = sd_read_cap_16(sc, flags);
1470 rv = sd_read_cap_10(sc, flags);
1472 rv = sd_read_cap_10(sc, flags);
1474 rv = sd_read_cap_16(sc, flags);
1481 sd_thin_pages(struct sd_softc *sc, int flags)
1488 pg = dma_alloc(sizeof(*pg), (ISSET(flags, SCSI_NOSLEEP) ?
1493 if (ISSET(sc->flags, SDF_DYING)) {
1498 SI_PG_SUPPORTED, flags);
1505 pg = dma_alloc(sizeof(*pg) + len, (ISSET(flags, SCSI_NOSLEEP) ?
1510 if (ISSET(sc->flags, SDF_DYING)) {
1515 SI_PG_SUPPORTED, flags);
1543 sd_vpd_block_limits(struct sd_softc *sc, int flags)
1548 pg = dma_alloc(sizeof(*pg), (ISSET(flags, SCSI_NOSLEEP) ?
1553 if (ISSET(sc->flags, SDF_DYING)) {
1558 SI_PG_DISK_LIMITS, flags);
1574 sd_vpd_thin(struct sd_softc *sc, int flags)
1579 pg = dma_alloc(sizeof(*pg), (ISSET(flags, SCSI_NOSLEEP) ?
1584 if (ISSET(sc->flags, SDF_DYING)) {
1589 SI_PG_DISK_THIN, flags);
1594 if (ISSET(pg->flags, VPD_DISK_THIN_TPU))
1596 else if (ISSET(pg->flags, VPD_DISK_THIN_TPWS)) {
1609 sd_thin_params(struct sd_softc *sc, int flags)
1613 rv = sd_thin_pages(sc, flags);
1617 rv = sd_vpd_block_limits(sc, flags);
1621 rv = sd_vpd_thin(sc, flags);
1636 sd_get_parms(struct sd_softc *sc, int flags)
1639 struct scsi_link *link = sc->sc_link;
1647 if (sd_read_cap(sc, flags) != 0)
1650 if (ISSET(sc->flags, SDF_THIN) && sd_thin_params(sc, flags) != 0) {
1652 CLR(sc->flags, SDF_THIN);
1665 if (ISSET(sc->flags, SDF_DYING))
1674 err = scsi_do_mode_sense(link, 0, buf, (void **)&page0, 1,
1675 flags | SCSI_SILENT, &big);
1676 if (ISSET(sc->flags, SDF_DYING))
1680 SET(link->flags, SDEV_READONLY);
1682 SET(link->flags, SDEV_READONLY);
1684 CLR(link->flags, SDEV_READONLY);
1692 if (ISSET(link->flags, SDEV_UMASS) && dp.disksize > 0)
1695 switch (link->inqdata.device & SID_TYPE) {
1702 err = scsi_do_mode_sense(link, PAGE_REDUCED_GEOMETRY, buf,
1703 (void **)&reduced, sizeof(*reduced), flags | SCSI_SILENT,
1706 scsi_parse_blkdesc(link, buf, big, NULL, NULL,
1726 if (!ISSET(link->flags, SDEV_ATAPI) ||
1727 !ISSET(link->flags, SDEV_REMOVABLE))
1728 err = scsi_do_mode_sense(link, PAGE_RIGID_GEOMETRY, buf,
1730 flags | SCSI_SILENT, &big);
1732 scsi_parse_blkdesc(link, buf, big, NULL, NULL,
1742 if (ISSET(sc->flags, SDF_DYING))
1744 err = scsi_do_mode_sense(link, PAGE_FLEX_GEOMETRY, buf,
1746 flags | SCSI_SILENT, &big);
1748 scsi_parse_blkdesc(link, buf, big, NULL, NULL,
1846 sd_flush(struct sd_softc *sc, int flags)
1848 struct scsi_link *link;
1853 if (ISSET(sc->flags, SDF_DYING))
1855 link = sc->sc_link;
1857 if (ISSET(link->quirks, SDEV_NOSYNCCACHE))
1866 xs = scsi_xs_get(link, flags | SCSI_IGNORE_ILLEGAL_REQUEST);
1868 SC_DEBUG(link, SDEV_DB1, ("cache sync failed to get xs\n"));
1883 SC_DEBUG(link, SDEV_DB1, ("cache sync failed\n"));
1885 CLR(sc->flags, SDF_DIRTY);