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