Lines Matching refs:block
68 * (Private) Allocate a new block. Return NULL on failure and mark
69 * tracing as broken. 'istag' is non-zero if the block is to be
76 tnf_block_header_t *block;
91 * Check reserved area first for tag block allocations
99 * Search for a block, using hint as starting point.
102 bcount = fh->com.block_count; /* total block count */
105 bn = fh->next_alloc.block[gen & TNFW_B_ALLOC_LO];
110 * Calculate next (not this) block to look for.
120 * Try to reserve candidate block
123 block = (tnf_block_header_t *)
126 if (lock_try(&block->A_lock))
127 if (block->generation < gen &&
128 lock_try(&block->B_lock))
131 lock_clear(&block->A_lock);
135 bn = fh->next_alloc.block[gen & TNFW_B_ALLOC_LO];
152 tmp_bn = fh->next_alloc.block[tmp_gen & TNFW_B_ALLOC_LO];
160 fh->next_alloc.block[new_gen & TNFW_B_ALLOC_LO] = new_bn;
167 * Initialize and return the block
169 /* ASSERT(block->tag == TNF_BLOCK_HEADER_TAG); */
170 block->bytes_valid = sizeof (tnf_block_header_t);
171 block->next_block = NULL;
173 block->generation = istag ? TNF_TAG_GENERATION_NUM : gen;
174 /* ASSERT(LOCK_HELD(&block->A_lock); */
175 lock_clear(&block->B_lock);
176 return (block);
180 * Look for a free tag block in reserved area
185 block = (tnf_block_header_t *)
189 * See if block is unclaimed.
191 * block was claimed and released, since it
194 if (lock_try(&block->A_lock) &&
195 block->generation == 0) {
231 tnf_block_header_t *block, *new_block;
236 block = pos->tnfw_w_block;
241 if (block == NULL || offset + size > TNF_BLOCK_SIZE) {
243 /* Get a new block */
253 * If the old block is clean (i.e., we're in a new
257 if (block != NULL) {
258 if (block->bytes_valid == offset &&
260 /* block is clean: release it */
261 lock_clear(&block->A_lock);
263 /* block is dirty */
267 p = (ulong_t *)((char *)block + offset);
269 q = (ulong_t *)((char *)block + TNF_BLOCK_SIZE);
273 /* append block to release list */
274 new_block->next_block = block;
276 /* we have at least one dirty block */
281 /* make new_block the current block */
282 pos->tnfw_w_block = block = new_block;
288 destp = (char *)block + offset;
343 tnf_block_header_t *block;
389 fh->next_alloc.block[0] = 0;
390 fh->next_alloc.block[1] = TNFW_B_DATA_BLOCK_BEGIN >> TNF_BLOCK_SHIFT;
399 block = (tnf_block_header_t *)(buf + (i << TNF_BLOCK_SHIFT));
400 block->tag = (tnf_ref32_t)TNF_BLOCK_HEADER_TAG;
401 block->generation = 0;
402 block->bytes_valid = sizeof (tnf_block_header_t);
403 LOCK_INIT_CLEAR(&block->A_lock);
404 LOCK_INIT_CLEAR(&block->B_lock);