Lines Matching full:bm
389 struct dm_block_manager *bm; in dm_block_manager_create() local
391 bm = kmalloc(sizeof(*bm), GFP_KERNEL); in dm_block_manager_create()
392 if (!bm) { in dm_block_manager_create()
397 bm->bufio = dm_bufio_client_create(bdev, block_size, max_held_per_thread, in dm_block_manager_create()
402 if (IS_ERR(bm->bufio)) { in dm_block_manager_create()
403 r = PTR_ERR(bm->bufio); in dm_block_manager_create()
404 kfree(bm); in dm_block_manager_create()
408 bm->read_only = false; in dm_block_manager_create()
410 return bm; in dm_block_manager_create()
417 void dm_block_manager_destroy(struct dm_block_manager *bm) in dm_block_manager_destroy() argument
419 dm_bufio_client_destroy(bm->bufio); in dm_block_manager_destroy()
420 kfree(bm); in dm_block_manager_destroy()
424 void dm_block_manager_reset(struct dm_block_manager *bm) in dm_block_manager_reset() argument
426 dm_bufio_client_reset(bm->bufio); in dm_block_manager_reset()
430 unsigned int dm_bm_block_size(struct dm_block_manager *bm) in dm_bm_block_size() argument
432 return dm_bufio_get_block_size(bm->bufio); in dm_bm_block_size()
436 dm_block_t dm_bm_nr_blocks(struct dm_block_manager *bm) in dm_bm_nr_blocks() argument
438 return dm_bufio_get_device_size(bm->bufio); in dm_bm_nr_blocks()
441 static int dm_bm_validate_buffer(struct dm_block_manager *bm, in dm_bm_validate_buffer() argument
451 r = v->check(v, (struct dm_block *) buf, dm_bufio_get_block_size(bm->bufio)); in dm_bm_validate_buffer()
469 int dm_bm_read_lock(struct dm_block_manager *bm, dm_block_t b, in dm_bm_read_lock() argument
477 p = dm_bufio_read(bm->bufio, b, (struct dm_buffer **) result); in dm_bm_read_lock()
491 r = dm_bm_validate_buffer(bm, to_buffer(*result), aux, v); in dm_bm_read_lock()
502 int dm_bm_write_lock(struct dm_block_manager *bm, in dm_bm_write_lock() argument
510 if (dm_bm_is_read_only(bm)) in dm_bm_write_lock()
513 p = dm_bufio_read(bm->bufio, b, (struct dm_buffer **) result); in dm_bm_write_lock()
527 r = dm_bm_validate_buffer(bm, to_buffer(*result), aux, v); in dm_bm_write_lock()
538 int dm_bm_read_try_lock(struct dm_block_manager *bm, in dm_bm_read_try_lock() argument
546 p = dm_bufio_get(bm->bufio, b, (struct dm_buffer **) result); in dm_bm_read_try_lock()
561 r = dm_bm_validate_buffer(bm, to_buffer(*result), aux, v); in dm_bm_read_try_lock()
571 int dm_bm_write_lock_zero(struct dm_block_manager *bm, in dm_bm_write_lock_zero() argument
579 if (dm_bm_is_read_only(bm)) in dm_bm_write_lock_zero()
582 p = dm_bufio_new(bm->bufio, b, (struct dm_buffer **) result); in dm_bm_write_lock_zero()
586 memset(p, 0, dm_bm_block_size(bm)); in dm_bm_write_lock_zero()
616 int dm_bm_flush(struct dm_block_manager *bm) in dm_bm_flush() argument
618 if (dm_bm_is_read_only(bm)) in dm_bm_flush()
621 return dm_bufio_write_dirty_buffers(bm->bufio); in dm_bm_flush()
625 void dm_bm_prefetch(struct dm_block_manager *bm, dm_block_t b) in dm_bm_prefetch() argument
627 dm_bufio_prefetch(bm->bufio, b, 1); in dm_bm_prefetch()
630 bool dm_bm_is_read_only(struct dm_block_manager *bm) in dm_bm_is_read_only() argument
632 return bm ? bm->read_only : true; in dm_bm_is_read_only()
636 void dm_bm_set_read_only(struct dm_block_manager *bm) in dm_bm_set_read_only() argument
638 if (bm) in dm_bm_set_read_only()
639 bm->read_only = true; in dm_bm_set_read_only()
643 void dm_bm_set_read_write(struct dm_block_manager *bm) in dm_bm_set_read_write() argument
645 if (bm) in dm_bm_set_read_write()
646 bm->read_only = false; in dm_bm_set_read_write()