Lines Matching defs:zcw
1320 zil_commit_waiter_skip(zil_commit_waiter_t *zcw)
1322 mutex_enter(&zcw->zcw_lock);
1323 ASSERT3B(zcw->zcw_done, ==, B_FALSE);
1324 zcw->zcw_done = B_TRUE;
1325 cv_broadcast(&zcw->zcw_cv);
1326 mutex_exit(&zcw->zcw_lock);
1336 zil_commit_waiter_link_lwb(zil_commit_waiter_t *zcw, lwb_t *lwb)
1351 ASSERT(!list_link_active(&zcw->zcw_node));
1352 list_insert_tail(&lwb->lwb_waiters, zcw);
1353 ASSERT3P(zcw->zcw_lwb, ==, NULL);
1354 zcw->zcw_lwb = lwb;
1363 zil_commit_waiter_link_nolwb(zil_commit_waiter_t *zcw, list_t *nolwb)
1365 ASSERT(!list_link_active(&zcw->zcw_node));
1366 list_insert_tail(nolwb, zcw);
1367 ASSERT3P(zcw->zcw_lwb, ==, NULL);
1457 zil_commit_waiter_t *zcw;
1486 while ((zcw = list_remove_head(&lwb->lwb_waiters)) != NULL) {
1487 mutex_enter(&zcw->zcw_lock);
1489 ASSERT3P(zcw->zcw_lwb, ==, lwb);
1490 zcw->zcw_lwb = NULL;
1506 zcw->zcw_zio_error = zio->io_error;
1508 ASSERT3B(zcw->zcw_done, ==, B_FALSE);
1509 zcw->zcw_done = B_TRUE;
1510 cv_broadcast(&zcw->zcw_cv);
1512 mutex_exit(&zcw->zcw_lock);
2890 zil_process_commit_list(zilog_t *zilog, zil_commit_waiter_t *zcw, list_t *ilwbs)
3006 } else if ((zcw->zcw_lwb != NULL &&
3007 zcw->zcw_lwb != lwb) || zcw->zcw_done) {
3049 zil_commit_waiter_t *zcw;
3050 while ((zcw = list_remove_head(&nolwb_waiters)) != NULL)
3051 zil_commit_waiter_skip(zcw);
3137 zil_commit_writer(zilog_t *zilog, zil_commit_waiter_t *zcw)
3149 if (zcw->zcw_lwb != NULL || zcw->zcw_done) {
3173 zil_process_commit_list(zilog, zcw, &ilwbs);
3184 zil_commit_waiter_timeout(zilog_t *zilog, zil_commit_waiter_t *zcw)
3187 ASSERT(MUTEX_HELD(&zcw->zcw_lock));
3188 ASSERT3B(zcw->zcw_done, ==, B_FALSE);
3190 lwb_t *lwb = zcw->zcw_lwb;
3211 mutex_exit(&zcw->zcw_lock);
3213 mutex_enter(&zcw->zcw_lock);
3223 if (zcw->zcw_done) {
3228 ASSERT3P(lwb, ==, zcw->zcw_lwb);
3262 mutex_exit(&zcw->zcw_lock);
3290 mutex_enter(&zcw->zcw_lock);
3313 zil_commit_waiter(zilog_t *zilog, zil_commit_waiter_t *zcw)
3319 mutex_enter(&zcw->zcw_lock);
3332 while (!zcw->zcw_done) {
3333 ASSERT(MUTEX_HELD(&zcw->zcw_lock));
3335 lwb_t *lwb = zcw->zcw_lwb;
3351 * "zcw" variable) to be found in this "in between" state;
3367 int rc = cv_timedwait_hires(&zcw->zcw_cv,
3368 &zcw->zcw_lock, wakeup, USEC2NSEC(1),
3371 if (rc != -1 || zcw->zcw_done)
3375 zil_commit_waiter_timeout(zilog, zcw);
3377 if (!zcw->zcw_done) {
3386 ASSERT3P(lwb, ==, zcw->zcw_lwb);
3408 cv_wait(&zcw->zcw_cv, &zcw->zcw_lock);
3412 mutex_exit(&zcw->zcw_lock);
3418 zil_commit_waiter_t *zcw = kmem_cache_alloc(zil_zcw_cache, KM_SLEEP);
3420 cv_init(&zcw->zcw_cv, NULL, CV_DEFAULT, NULL);
3421 mutex_init(&zcw->zcw_lock, NULL, MUTEX_DEFAULT, NULL);
3422 list_link_init(&zcw->zcw_node);
3423 zcw->zcw_lwb = NULL;
3424 zcw->zcw_done = B_FALSE;
3425 zcw->zcw_zio_error = 0;
3427 return (zcw);
3431 zil_free_commit_waiter(zil_commit_waiter_t *zcw)
3433 ASSERT(!list_link_active(&zcw->zcw_node));
3434 ASSERT3P(zcw->zcw_lwb, ==, NULL);
3435 ASSERT3B(zcw->zcw_done, ==, B_TRUE);
3436 mutex_destroy(&zcw->zcw_lock);
3437 cv_destroy(&zcw->zcw_cv);
3438 kmem_cache_free(zil_zcw_cache, zcw);
3448 zil_commit_itx_assign(zilog_t *zilog, zil_commit_waiter_t *zcw)
3462 itx->itx_private = zcw;
3667 zil_commit_waiter_t *zcw = zil_alloc_commit_waiter();
3668 zil_commit_itx_assign(zilog, zcw);
3670 uint64_t wtxg = zil_commit_writer(zilog, zcw);
3671 zil_commit_waiter(zilog, zcw);
3673 if (zcw->zcw_zio_error != 0) {
3684 zilog_t *, zilog, zil_commit_waiter_t *, zcw);
3691 zil_free_commit_waiter(zcw);