参照元

説明

その他

引数

返り値

参考

実装

/**
 * blk_start_queue - restart a previously stopped queue
 * @q:    The &struct request_queue in question
 *
 * Description:
 *   blk_start_queue() will clear the stop flag on the queue, and call
 *   the request_fn for the queue if it was in a stopped state when
 *   entered. Also see blk_stop_queue(). Queue lock must be held.
 **/
void blk_start_queue(struct request_queue *q)
{
        WARN_ON(!irqs_disabled());
        clear_bit(QUEUE_FLAG_STOPPED, &q->queue_flags);
        /*
         * one level of recursion is ok and is much faster than kicking
         * the unplug handling
         */
        if (!test_and_set_bit(QUEUE_FLAG_REENTER, &q->queue_flags)) {
                q->request_fn(q);
                clear_bit(QUEUE_FLAG_REENTER, &q->queue_flags);
        } else {
                blk_plug_device(q);
                kblockd_schedule_work(&q->unplug_work);
        }
}
EXPORT_SYMBOL(blk_start_queue);

コメント


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS