Lines Matching refs:lwb

84 #define	LWB_EMPTY(lwb) ((BP_GET_LSIZE(&lwb->lwb_blk) - \  argument
85 sizeof (zil_chain_t)) == (lwb->lwb_sz - lwb->lwb_nused))
443 lwb_t *lwb; in zil_alloc_lwb() local
445 lwb = kmem_cache_alloc(zil_lwb_cache, KM_SLEEP); in zil_alloc_lwb()
446 lwb->lwb_zilog = zilog; in zil_alloc_lwb()
447 lwb->lwb_blk = *bp; in zil_alloc_lwb()
448 lwb->lwb_buf = zio_buf_alloc(BP_GET_LSIZE(bp)); in zil_alloc_lwb()
449 lwb->lwb_max_txg = txg; in zil_alloc_lwb()
450 lwb->lwb_zio = NULL; in zil_alloc_lwb()
451 lwb->lwb_tx = NULL; in zil_alloc_lwb()
453 lwb->lwb_nused = sizeof (zil_chain_t); in zil_alloc_lwb()
454 lwb->lwb_sz = BP_GET_LSIZE(bp); in zil_alloc_lwb()
456 lwb->lwb_nused = 0; in zil_alloc_lwb()
457 lwb->lwb_sz = BP_GET_LSIZE(bp) - sizeof (zil_chain_t); in zil_alloc_lwb()
461 list_insert_tail(&zilog->zl_lwb_list, lwb); in zil_alloc_lwb()
464 return (lwb); in zil_alloc_lwb()
505 lwb_t *lwb = NULL; in zil_create() local
548 lwb = zil_alloc_lwb(zilog, &blk, txg); in zil_create()
562 return (lwb); in zil_create()
578 lwb_t *lwb; in zil_destroy() local
606 while ((lwb = list_head(&zilog->zl_lwb_list)) != NULL) { in zil_destroy()
607 list_remove(&zilog->zl_lwb_list, lwb); in zil_destroy()
608 if (lwb->lwb_buf != NULL) in zil_destroy()
609 zio_buf_free(lwb->lwb_buf, lwb->lwb_sz); in zil_destroy()
610 zio_free_zil(zilog->zl_spa, txg, &lwb->lwb_blk); in zil_destroy()
611 kmem_cache_free(zil_lwb_cache, lwb); in zil_destroy()
838 lwb_t *lwb = zio->io_private; in zil_lwb_write_done() local
839 zilog_t *zilog = lwb->lwb_zilog; in zil_lwb_write_done()
840 dmu_tx_t *tx = lwb->lwb_tx; in zil_lwb_write_done()
858 zio_buf_free(lwb->lwb_buf, lwb->lwb_sz); in zil_lwb_write_done()
860 lwb->lwb_buf = NULL; in zil_lwb_write_done()
861 lwb->lwb_tx = NULL; in zil_lwb_write_done()
876 zil_lwb_write_init(zilog_t *zilog, lwb_t *lwb) in zil_lwb_write_init() argument
880 SET_BOOKMARK(&zb, lwb->lwb_blk.blk_cksum.zc_word[ZIL_ZC_OBJSET], in zil_lwb_write_init()
882 lwb->lwb_blk.blk_cksum.zc_word[ZIL_ZC_SEQ]); in zil_lwb_write_init()
888 if (lwb->lwb_zio == NULL) { in zil_lwb_write_init()
889 lwb->lwb_zio = zio_rewrite(zilog->zl_root_zio, zilog->zl_spa, in zil_lwb_write_init()
890 0, &lwb->lwb_blk, lwb->lwb_buf, BP_GET_LSIZE(&lwb->lwb_blk), in zil_lwb_write_init()
891 zil_lwb_write_done, lwb, ZIO_PRIORITY_SYNC_WRITE, in zil_lwb_write_init()
925 zil_lwb_write_start(zilog_t *zilog, lwb_t *lwb) in zil_lwb_write_start() argument
936 if (BP_GET_CHECKSUM(&lwb->lwb_blk) == ZIO_CHECKSUM_ZILOG2) { in zil_lwb_write_start()
937 zilc = (zil_chain_t *)lwb->lwb_buf; in zil_lwb_write_start()
940 zilc = (zil_chain_t *)(lwb->lwb_buf + lwb->lwb_sz); in zil_lwb_write_start()
944 ASSERT(lwb->lwb_nused <= lwb->lwb_sz); in zil_lwb_write_start()
960 lwb->lwb_tx = tx; in zil_lwb_write_start()
991 error = zio_alloc_zil(spa, txg, bp, &lwb->lwb_blk, zil_blksz, in zil_lwb_write_start()
995 bp->blk_cksum = lwb->lwb_blk.blk_cksum; in zil_lwb_write_start()
1004 zil_add_block(zilog, &lwb->lwb_blk); in zil_lwb_write_start()
1007 if (BP_GET_CHECKSUM(&lwb->lwb_blk) == ZIO_CHECKSUM_ZILOG2) { in zil_lwb_write_start()
1009 wsz = P2ROUNDUP_TYPED(lwb->lwb_nused, ZIL_MIN_BLKSZ, uint64_t); in zil_lwb_write_start()
1010 ASSERT3U(wsz, <=, lwb->lwb_sz); in zil_lwb_write_start()
1011 zio_shrink(lwb->lwb_zio, wsz); in zil_lwb_write_start()
1014 wsz = lwb->lwb_sz; in zil_lwb_write_start()
1018 zilc->zc_nused = lwb->lwb_nused; in zil_lwb_write_start()
1019 zilc->zc_eck.zec_cksum = lwb->lwb_blk.blk_cksum; in zil_lwb_write_start()
1024 bzero(lwb->lwb_buf + lwb->lwb_nused, wsz - lwb->lwb_nused); in zil_lwb_write_start()
1026 zio_nowait(lwb->lwb_zio); /* Kick off the write for the old log block */ in zil_lwb_write_start()
1036 zil_lwb_commit(zilog_t *zilog, itx_t *itx, lwb_t *lwb) in zil_lwb_commit() argument
1045 if (lwb == NULL) in zil_lwb_commit()
1048 ASSERT(lwb->lwb_buf != NULL); in zil_lwb_commit()
1058 zil_lwb_write_init(zilog, lwb); in zil_lwb_commit()
1063 if (lwb->lwb_nused + reclen + dlen > lwb->lwb_sz) { in zil_lwb_commit()
1064 lwb = zil_lwb_write_start(zilog, lwb); in zil_lwb_commit()
1065 if (lwb == NULL) in zil_lwb_commit()
1067 zil_lwb_write_init(zilog, lwb); in zil_lwb_commit()
1068 ASSERT(LWB_EMPTY(lwb)); in zil_lwb_commit()
1069 if (lwb->lwb_nused + reclen + dlen > lwb->lwb_sz) { in zil_lwb_commit()
1071 return (lwb); in zil_lwb_commit()
1075 lr_buf = lwb->lwb_buf + lwb->lwb_nused; in zil_lwb_commit()
1099 itx->itx_private, lrw, dbuf, lwb->lwb_zio); in zil_lwb_commit()
1102 return (lwb); in zil_lwb_commit()
1107 return (lwb); in zil_lwb_commit()
1119 lwb->lwb_nused += reclen + dlen; in zil_lwb_commit()
1120 lwb->lwb_max_txg = MAX(lwb->lwb_max_txg, txg); in zil_lwb_commit()
1121 ASSERT3U(lwb->lwb_nused, <=, lwb->lwb_sz); in zil_lwb_commit()
1122 ASSERT0(P2PHASE(lwb->lwb_nused, sizeof (uint64_t))); in zil_lwb_commit()
1124 return (lwb); in zil_lwb_commit()
1458 lwb_t *lwb; in zil_commit_writer() local
1478 lwb = NULL; in zil_commit_writer()
1480 lwb = list_tail(&zilog->zl_lwb_list); in zil_commit_writer()
1481 if (lwb == NULL) in zil_commit_writer()
1482 lwb = zil_create(zilog); in zil_commit_writer()
1491 lwb = zil_lwb_commit(zilog, itx, lwb); in zil_commit_writer()
1499 if (lwb != NULL && lwb->lwb_zio != NULL) in zil_commit_writer()
1500 lwb = zil_lwb_write_start(zilog, lwb); in zil_commit_writer()
1513 if (error || lwb == NULL) in zil_commit_writer()
1523 if (error == 0 && lwb != NULL) in zil_commit_writer()
1595 lwb_t *lwb; in zil_sync() local
1636 while ((lwb = list_head(&zilog->zl_lwb_list)) != NULL) { in zil_sync()
1637 zh->zh_log = lwb->lwb_blk; in zil_sync()
1638 if (lwb->lwb_buf != NULL || lwb->lwb_max_txg > txg) in zil_sync()
1640 list_remove(&zilog->zl_lwb_list, lwb); in zil_sync()
1641 zio_free_zil(spa, txg, &lwb->lwb_blk); in zil_sync()
1642 kmem_cache_free(zil_lwb_cache, lwb); in zil_sync()
1660 sizeof (struct lwb), 0, NULL, NULL, NULL, NULL, NULL, 0); in zil_init()
1788 lwb_t *lwb; in zil_close() local
1800 lwb = list_tail(&zilog->zl_lwb_list); in zil_close()
1801 if (lwb != NULL) in zil_close()
1802 txg = lwb->lwb_max_txg; in zil_close()
1816 lwb = list_head(&zilog->zl_lwb_list); in zil_close()
1817 if (lwb != NULL) { in zil_close()
1818 ASSERT(lwb == list_tail(&zilog->zl_lwb_list)); in zil_close()
1819 list_remove(&zilog->zl_lwb_list, lwb); in zil_close()
1820 zio_buf_free(lwb->lwb_buf, lwb->lwb_sz); in zil_close()
1821 kmem_cache_free(zil_lwb_cache, lwb); in zil_close()