Lines Matching full:bm
383 struct dm_block_manager *bm; in dm_block_manager_create() local
385 bm = kmalloc(sizeof(*bm), GFP_KERNEL); in dm_block_manager_create()
386 if (!bm) { in dm_block_manager_create()
391 bm->bufio = dm_bufio_client_create(bdev, block_size, max_held_per_thread, in dm_block_manager_create()
396 if (IS_ERR(bm->bufio)) { in dm_block_manager_create()
397 r = PTR_ERR(bm->bufio); in dm_block_manager_create()
398 kfree(bm); in dm_block_manager_create()
402 bm->read_only = false; in dm_block_manager_create()
404 return bm; in dm_block_manager_create()
411 void dm_block_manager_destroy(struct dm_block_manager *bm) in dm_block_manager_destroy() argument
413 dm_bufio_client_destroy(bm->bufio); in dm_block_manager_destroy()
414 kfree(bm); in dm_block_manager_destroy()
418 unsigned dm_bm_block_size(struct dm_block_manager *bm) in dm_bm_block_size() argument
420 return dm_bufio_get_block_size(bm->bufio); in dm_bm_block_size()
424 dm_block_t dm_bm_nr_blocks(struct dm_block_manager *bm) in dm_bm_nr_blocks() argument
426 return dm_bufio_get_device_size(bm->bufio); in dm_bm_nr_blocks()
429 static int dm_bm_validate_buffer(struct dm_block_manager *bm, in dm_bm_validate_buffer() argument
438 r = v->check(v, (struct dm_block *) buf, dm_bufio_get_block_size(bm->bufio)); in dm_bm_validate_buffer()
456 int dm_bm_read_lock(struct dm_block_manager *bm, dm_block_t b, in dm_bm_read_lock() argument
464 p = dm_bufio_read(bm->bufio, b, (struct dm_buffer **) result); in dm_bm_read_lock()
478 r = dm_bm_validate_buffer(bm, to_buffer(*result), aux, v); in dm_bm_read_lock()
489 int dm_bm_write_lock(struct dm_block_manager *bm, in dm_bm_write_lock() argument
497 if (dm_bm_is_read_only(bm)) in dm_bm_write_lock()
500 p = dm_bufio_read(bm->bufio, b, (struct dm_buffer **) result); in dm_bm_write_lock()
514 r = dm_bm_validate_buffer(bm, to_buffer(*result), aux, v); in dm_bm_write_lock()
525 int dm_bm_read_try_lock(struct dm_block_manager *bm, in dm_bm_read_try_lock() argument
533 p = dm_bufio_get(bm->bufio, b, (struct dm_buffer **) result); in dm_bm_read_try_lock()
548 r = dm_bm_validate_buffer(bm, to_buffer(*result), aux, v); in dm_bm_read_try_lock()
558 int dm_bm_write_lock_zero(struct dm_block_manager *bm, in dm_bm_write_lock_zero() argument
566 if (dm_bm_is_read_only(bm)) in dm_bm_write_lock_zero()
569 p = dm_bufio_new(bm->bufio, b, (struct dm_buffer **) result); in dm_bm_write_lock_zero()
573 memset(p, 0, dm_bm_block_size(bm)); in dm_bm_write_lock_zero()
604 int dm_bm_flush(struct dm_block_manager *bm) in dm_bm_flush() argument
606 if (dm_bm_is_read_only(bm)) in dm_bm_flush()
609 return dm_bufio_write_dirty_buffers(bm->bufio); in dm_bm_flush()
613 void dm_bm_prefetch(struct dm_block_manager *bm, dm_block_t b) in dm_bm_prefetch() argument
615 dm_bufio_prefetch(bm->bufio, b, 1); in dm_bm_prefetch()
618 bool dm_bm_is_read_only(struct dm_block_manager *bm) in dm_bm_is_read_only() argument
620 return (bm ? bm->read_only : true); in dm_bm_is_read_only()
624 void dm_bm_set_read_only(struct dm_block_manager *bm) in dm_bm_set_read_only() argument
626 if (bm) in dm_bm_set_read_only()
627 bm->read_only = true; in dm_bm_set_read_only()
631 void dm_bm_set_read_write(struct dm_block_manager *bm) in dm_bm_set_read_write() argument
633 if (bm) in dm_bm_set_read_write()
634 bm->read_only = false; in dm_bm_set_read_write()