Lines Matching refs:block

144    dcr->block = dcr->ameta_block = new_block(dcr);  in new_dcr_blocks()
149 DEV_BLOCK *block = (DEV_BLOCK *)get_memory(sizeof(DEV_BLOCK)); in new_block() local
152 memset(block, 0, sizeof(DEV_BLOCK)); in new_block()
160 block->dev = this; in new_block()
165 block->buf_len = len; in new_block()
166 block->buf = get_memory(block->buf_len); in new_block()
167 block->rechdr_queue = get_memory(block->buf_len); in new_block()
168 block->rechdr_items = 0; in new_block()
169 Dmsg2(510, "Rechdr len=%d max_items=%d\n", sizeof_pool_memory(block->rechdr_queue), in new_block()
170 sizeof_pool_memory(block->rechdr_queue)/WRITE_ADATA_RECHDR_LENGTH); in new_block()
171 block->filemedia = New(alist(1, owned_by_alist)); in new_block()
172 empty_block(block); in new_block()
173 block->BlockVer = BLOCK_VER; /* default write version */ in new_block()
174 Dmsg3(150, "New block adata=%d len=%d block=%p\n", block->adata, len, block); in new_block()
175 return block; in new_block()
184 DEV_BLOCK *block = (DEV_BLOCK *)get_memory(sizeof(DEV_BLOCK)); in dup_block() local
188 memcpy(block, eblock, sizeof(DEV_BLOCK)); in dup_block()
189 block->buf = get_memory(buf_len); in dup_block()
190 memcpy(block->buf, eblock->buf, buf_len); in dup_block()
192 block->rechdr_queue = get_memory(rechdr_len); in dup_block()
193 memcpy(block->rechdr_queue, eblock->rechdr_queue, rechdr_len); in dup_block()
196 block->filemedia = New(alist(1, owned_by_alist)); in dup_block()
200 block->filemedia->append(fm2); in dup_block()
209 block->bufp = (eblock->bufp - eblock->buf) + block->buf; in dup_block()
212 block->bufp = NULL; in dup_block()
214 return block; in dup_block()
222 if (!is_block_empty(dcr->block)) { in flush_block()
225 dcr->block->BlockAddr, dcr->block->binbuf, dcr->adata_block->adata, dcr->adata_block); in flush_block()
226 dump_block(dcr->dev, dcr->block, "Flush_ameta_block"); in flush_block()
232 empty_block(dcr->block); in flush_block()
242 void print_block_read_errors(JCR *jcr, DEV_BLOCK *block) in print_block_read_errors() argument
244 if (block->read_errors > 1) { in print_block_read_errors()
246 block->read_errors); in print_block_read_errors()
282 if (dcr->block == dcr->ameta_block) { in free_dcr_blocks()
285 free_block(dcr->block); in free_dcr_blocks()
286 dcr->block = NULL; in free_dcr_blocks()
294 void free_block(DEV_BLOCK *block) in free_block() argument
296 if (block) { in free_block()
297 Dmsg1(999, "free_block buffer=%p\n", block->buf); in free_block()
298 if (block->buf) { in free_block()
299 free_memory(block->buf); in free_block()
301 if (block->rechdr_queue) { in free_block()
302 free_memory(block->rechdr_queue); in free_block()
304 delete block->filemedia; in free_block()
305 Dmsg1(999, "=== free_block block %p\n", block); in free_block()
306 free_memory((POOLMEM *)block); in free_block()
310 bool is_block_empty(DEV_BLOCK *block) in is_block_empty() argument
312 if (block->adata) { in is_block_empty()
313 Dmsg1(200, "=== adata=1 binbuf=%d\n", block->binbuf); in is_block_empty()
314 return block->binbuf <= 0; in is_block_empty()
316 Dmsg1(200, "=== adata=0 binbuf=%d\n", block->binbuf-WRITE_BLKHDR_LENGTH); in is_block_empty()
317 return block->binbuf <= WRITE_BLKHDR_LENGTH; in is_block_empty()
322 void empty_block(DEV_BLOCK *block) in empty_block() argument
324 if (block->adata) { in empty_block()
325 block->binbuf = 0; in empty_block()
327 block->binbuf = WRITE_BLKHDR_LENGTH; in empty_block()
330 block->adata, block->buf_len, block->binbuf); in empty_block()
331 block->bufp = block->buf + block->binbuf; in empty_block()
332 block->read_len = 0; in empty_block()
333 block->write_failed = false; in empty_block()
334 block->block_read = false; in empty_block()
335 block->needs_write = false; in empty_block()
336 block->FirstIndex = block->LastIndex = 0; in empty_block()
337 block->RecNum = 0; in empty_block()
338 block->BlockAddr = 0; in empty_block()
339 block->filemedia->destroy(); in empty_block()
340 block->extra_bytes = 0; in empty_block()
348 uint32_t ser_block_header(DEV_BLOCK *block, bool do_checksum) in ser_block_header() argument
351 uint32_t block_len = block->binbuf; in ser_block_header()
353 block->CheckSum = 0; in ser_block_header()
355 if (block->adata) { in ser_block_header()
358 block->CheckSum = bcrc32((uint8_t *)block->buf, block_len); in ser_block_header()
362 ser_begin(block->buf, BLKHDR2_LENGTH); in ser_block_header()
363 ser_uint32(block->CheckSum); in ser_block_header()
365 ser_uint32(block->BlockNumber); in ser_block_header()
368 ser_uint32(block->VolSessionId); in ser_block_header()
369 ser_uint32(block->VolSessionTime); in ser_block_header()
374 block->CheckSum = bcrc32((uint8_t *)block->buf+BLKHDR_CS_LENGTH, in ser_block_header()
377 Dmsg2(160, "ser_block_header: adata=%d checksum=%x\n", block->adata, block->CheckSum); in ser_block_header()
378 ser_begin(block->buf, BLKHDR2_LENGTH); in ser_block_header()
379 ser_uint32(block->CheckSum); /* now add checksum to block header */ in ser_block_header()
381 return block->CheckSum; in ser_block_header()
391 bool unser_block_header(DCR *dcr, DEVICE *dev, DEV_BLOCK *block) in unser_block_header() argument
402 if (block->adata) { in unser_block_header()
404 if (block->block_len <= block->read_len && dev->do_checksum()) { in unser_block_header()
405 BlockCheckSum = dcr->crc32((uint8_t *)block->buf, block->block_len, block->CheckSum); in unser_block_header()
406 if (BlockCheckSum != block->CheckSum) { in unser_block_header()
410 block->BlockAddr, block->BlockNumber, in unser_block_header()
411 block->block_len, BlockCheckSum, block->CheckSum); in unser_block_header()
412 if (block->read_errors == 0 || verbose >= 2) { in unser_block_header()
414 dump_block(dev, block, "with checksum error"); in unser_block_header()
416 block->read_errors++; in unser_block_header()
425 if (block->no_header) { in unser_block_header()
428 unser_begin(block->buf, BLKHDR_LENGTH); in unser_block_header()
429 unser_uint32(block->CheckSum); in unser_block_header()
433 ASSERT(unser_length(block->buf) == BLKHDR1_LENGTH); in unser_block_header()
438 block->BlockVer = 1; in unser_block_header()
439 block->bufp = block->buf + bhl; in unser_block_header()
444 dev->get_hi_addr(block->BlockAddr), in unser_block_header()
445 dev->get_low_addr(block->BlockAddr), in unser_block_header()
447 if (block->read_errors == 0 || verbose >= 2) { in unser_block_header()
450 block->read_errors++; in unser_block_header()
454 unser_uint32(block->VolSessionId); in unser_block_header()
455 unser_uint32(block->VolSessionTime); in unser_block_header()
457 block->BlockVer = 2; in unser_block_header()
458 block->bufp = block->buf + bhl; in unser_block_header()
464 dev->get_hi_addr(block->BlockAddr), in unser_block_header()
465 dev->get_low_addr(block->BlockAddr), in unser_block_header()
467 if (block->read_errors == 0 || verbose >= 2) { in unser_block_header()
470 block->read_errors++; in unser_block_header()
476 dev->get_hi_addr(block->BlockAddr), in unser_block_header()
477 dev->get_low_addr(block->BlockAddr), in unser_block_header()
480 if (block->read_errors == 0 || verbose >= 2) { in unser_block_header()
483 block->read_errors++; in unser_block_header()
484 unser_uint32(block->VolSessionId); in unser_block_header()
485 unser_uint32(block->VolSessionTime); in unser_block_header()
494 if (block->read_errors == 0 || verbose >= 2) { in unser_block_header()
497 block->read_errors++; in unser_block_header()
503 if (block_len > block->read_len) { in unser_block_header()
504 block_end = block->read_len; in unser_block_header()
508 block->binbuf = block_end - bhl; in unser_block_header()
509 Dmsg3(200, "set block=%p adata=%d binbuf=%d\n", block, block->adata, block->binbuf); in unser_block_header()
510 block->block_len = block_len; in unser_block_header()
511 block->BlockNumber = BlockNumber; in unser_block_header()
512 Dmsg3(390, "Read binbuf = %d %d block_len=%d\n", block->binbuf, in unser_block_header()
514 if (block_len <= block->read_len && dev->do_checksum()) { in unser_block_header()
515 BlockCheckSum = dcr->crc32((uint8_t *)block->buf+BLKHDR_CS_LENGTH, in unser_block_header()
517 block->CheckSum); in unser_block_header()
519 if (BlockCheckSum != block->CheckSum) { in unser_block_header()
524 block_len, BlockCheckSum, block->CheckSum); in unser_block_header()
525 if (block->read_errors == 0 || verbose >= 2) { in unser_block_header()
527 dump_block(dev, block, "with checksum error"); in unser_block_header()
529 block->read_errors++; in unser_block_header()
542 uint32_t get_len_and_clear_block(DEV_BLOCK *block, DEVICE *dev, uint32_t &pad) in get_len_and_clear_block() argument
549 wlen = block->binbuf; in get_len_and_clear_block()
550 if (wlen != block->buf_len) { in get_len_and_clear_block()
551 Dmsg2(250, "binbuf=%d buf_len=%d\n", block->binbuf, block->buf_len); in get_len_and_clear_block()
554 if (dev->is_tape() || block->adata) { in get_len_and_clear_block()
557 wlen = block->buf_len; /* fixed block size already rounded */ in get_len_and_clear_block()
566 if (block->adata && dev->padding_size > 0) { in get_len_and_clear_block()
570 ASSERT(wlen <= block->buf_len); in get_len_and_clear_block()
572 if (wlen-block->binbuf > 0) { in get_len_and_clear_block()
573 memset(block->bufp, 0, wlen-block->binbuf); /* clear garbage */ in get_len_and_clear_block()
575 pad = wlen - block->binbuf; /* padding or zeros written */ in get_len_and_clear_block()
577 block->adata, pad, block->buf_len, wlen, block->binbuf); in get_len_and_clear_block()
646 DEV_BLOCK *block = dcr->block; in reread_last_block() local
695 if (dcr->block->BlockNumber != dev->LastBlock) { in reread_last_block()
696 if (dev->LastBlock > (dcr->block->BlockNumber + 1)) { in reread_last_block()
700 dcr->block->BlockNumber, dev->LastBlock); in reread_last_block()
704 dcr->block->BlockNumber, dev->LastBlock); in reread_last_block()
712 dcr->block = block; in reread_last_block()
759 dcr->block->write_failed = true; in terminate_writing_volume()