cam_xpt.c (431d3a5bfcf04e3b3b4f0ab77c7e83ddc70d0361) cam_xpt.c (c33e40291b9d642929f63f6d595b8fdfc3c80252)
1/*-
2 * Implementation of the Common Access Method Transport (XPT) layer.
3 *
4 * Copyright (c) 1997, 1998, 1999 Justin T. Gibbs.
5 * Copyright (c) 1997, 1998, 1999 Kenneth D. Merry.
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 3142 unchanged lines hidden (view full) ---

3151 if (ccb == NULL &&
3152 (ccb = xpt_get_ccb_nowait(periph)) == NULL) {
3153 if (sleep) {
3154 ccb = xpt_get_ccb(periph);
3155 goto restart;
3156 }
3157 if (periph->flags & CAM_PERIPH_RUN_TASK)
3158 break;
1/*-
2 * Implementation of the Common Access Method Transport (XPT) layer.
3 *
4 * Copyright (c) 1997, 1998, 1999 Justin T. Gibbs.
5 * Copyright (c) 1997, 1998, 1999 Kenneth D. Merry.
6 * All rights reserved.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 3142 unchanged lines hidden (view full) ---

3151 if (ccb == NULL &&
3152 (ccb = xpt_get_ccb_nowait(periph)) == NULL) {
3153 if (sleep) {
3154 ccb = xpt_get_ccb(periph);
3155 goto restart;
3156 }
3157 if (periph->flags & CAM_PERIPH_RUN_TASK)
3158 break;
3159 xpt_lock_buses();
3160 periph->refcount++; /* Unconditionally acquire */
3161 xpt_unlock_buses();
3159 cam_periph_doacquire(periph);
3162 periph->flags |= CAM_PERIPH_RUN_TASK;
3163 taskqueue_enqueue(xsoftc.xpt_taskq,
3164 &periph->periph_run_task);
3165 break;
3166 }
3167 xpt_setup_ccb(&ccb->ccb_h, periph->path, prio);
3168 if (prio == periph->immediate_priority) {
3169 periph->immediate_priority = CAM_PRIORITY_NONE;

--- 2138 unchanged lines hidden ---
3160 periph->flags |= CAM_PERIPH_RUN_TASK;
3161 taskqueue_enqueue(xsoftc.xpt_taskq,
3162 &periph->periph_run_task);
3163 break;
3164 }
3165 xpt_setup_ccb(&ccb->ccb_h, periph->path, prio);
3166 if (prio == periph->immediate_priority) {
3167 periph->immediate_priority = CAM_PRIORITY_NONE;

--- 2138 unchanged lines hidden ---