Lines Matching defs:PRIV
70 #define PRIV(ump) ((struct strat_private *) ump->strategy_private)
146 struct strat_private *priv = PRIV(ump);
150 *dscrptr = pool_get(&priv->desc_pool, PR_WAITOK);
162 struct strat_private *priv = PRIV(ump);
164 pool_put(&priv->desc_pool, dscr);
175 struct strat_private *priv = PRIV(ump);
191 *dscrptr = pool_get(&priv->desc_pool, PR_WAITOK);
265 struct strat_private *priv = PRIV(ump);
283 mutex_enter(&priv->discstrat_mutex);
284 bufq_put(priv->queues[queue], nestbuf);
285 vfs_timestamp(&priv->last_queued[queue]);
286 mutex_exit(&priv->discstrat_mutex);
289 cv_signal(&priv->discstrat_cv);
298 struct strat_private *priv = PRIV(ump);
301 if (!priv)
305 priv->sync_req = 1;
306 cv_signal(&priv->discstrat_cv);
308 mutex_enter(&priv->discstrat_mutex);
309 while (priv->sync_req) {
310 cv_timedwait(&priv->discstrat_cv,
311 &priv->discstrat_mutex, hz/8);
313 mutex_exit(&priv->discstrat_mutex);
481 struct strat_private *priv = PRIV(ump);
486 buf = bufq_get(priv->queues[priv->cur_queue]);
489 mutex_exit(&priv->discstrat_mutex);
497 udf_issue_buf(ump, priv->cur_queue, buf);
500 mutex_enter(&priv->discstrat_mutex);
519 last = &priv->last_queued[priv->cur_queue];
527 new_queue = priv->cur_queue;
529 if (bufq_peek(priv->queues[UDF_SHED_READING]))
531 if (bufq_peek(priv->queues[UDF_SHED_WRITING])) /* only for unmount */
533 if (bufq_peek(priv->queues[UDF_SHED_SEQWRITING]))
535 if (priv->cur_queue == UDF_SHED_READING) {
538 mutex_exit(&priv->discstrat_mutex);
547 mutex_enter(&priv->discstrat_mutex);
552 if (new_queue != priv->cur_queue) {
554 priv->cur_queue, new_queue));
559 priv->cur_queue = new_queue;
567 struct strat_private *priv = PRIV(ump);
572 priv->thread_running = 1;
573 cv_broadcast(&priv->discstrat_cv);
575 mutex_enter(&priv->discstrat_mutex);
576 while (priv->run_thread || !empty || priv->sync_req) {
579 empty = (bufq_peek(priv->queues[UDF_SHED_READING]) == NULL);
580 empty &= (bufq_peek(priv->queues[UDF_SHED_WRITING]) == NULL);
581 empty &= (bufq_peek(priv->queues[UDF_SHED_SEQWRITING]) == NULL);
585 if (priv
588 priv->cur_queue = UDF_SHED_READING;
589 priv->sync_req = 0;
591 cv_timedwait(&priv->discstrat_cv,
592 &priv->discstrat_mutex, hz/8);
595 mutex_exit(&priv->discstrat_mutex);
597 priv->thread_running = 0;
598 priv->thread_finished = 1;
599 cv_broadcast(&priv->discstrat_cv);
611 struct strat_private *priv = PRIV(ump);
617 KASSERT(priv == NULL);
625 priv = ump->strategy_private;
626 memset(priv, 0 , sizeof(struct strat_private));
629 cv_init(&priv->discstrat_cv, "udfstrat");
630 mutex_init(&priv->discstrat_mutex, MUTEX_DEFAULT, IPL_NONE);
637 pool_init(&priv->desc_pool, lb_size, 0, 0, 0, "udf_desc_pool", NULL,
646 memset(&priv->old_strategy_setting, 0,
648 VOP_IOCTL(ump->devvp, DIOCGSTRATEGY, &priv->old_strategy_setting,
656 priv->cur_queue = UDF_SHED_READING;
657 bufq_alloc(&priv->queues[UDF_SHED_READING], "disksort",
659 bufq_alloc(&priv->queues[UDF_SHED_WRITING], "disksort",
661 bufq_alloc(&priv->queues[UDF_SHED_SEQWRITING], "fcfs", 0);
662 vfs_timestamp(&priv->last_queued[UDF_SHED_READING]);
663 vfs_timestamp(&priv->last_queued[UDF_SHED_WRITING]);
664 vfs_timestamp(&priv->last_queued[UDF_SHED_SEQWRITING]);
667 priv->thread_finished = 0;
668 priv->thread_running = 0;
669 priv->run_thread = 1;
670 priv->sync_req = 0;
672 udf_discstrat_thread, ump, &priv->queue_lwp,
678 mutex_enter(&priv->discstrat_mutex);
679 while (!priv->thread_running) {
680 cv_timedwait(&priv->discstrat_cv, &priv->discstrat_mutex, hz);
682 mutex_exit(&priv->discstrat_mutex);
690 struct strat_private *priv = PRIV(ump);
696 KASSERT(priv->run_thread == 1);
697 priv->run_thread = 0;
699 mutex_enter(&priv->discstrat_mutex);
700 while (!priv->thread_finished) {
701 cv_broadcast(&priv->discstrat_cv);
702 cv_timedwait(&priv->discstrat_cv, &priv->discstrat_mutex, hz);
704 mutex_exit(&priv->discstrat_mutex);
709 VOP_IOCTL(ump->devvp, DIOCSSTRATEGY, &priv->old_strategy_setting,
713 pool_destroy(&priv->desc_pool);
715 mutex_destroy(&priv->discstrat_mutex);
716 cv_destroy(&priv->discstrat_cv);