Lines Matching refs:bm

383 	struct dm_block_manager *bm;
385 bm = kmalloc(sizeof(*bm), GFP_KERNEL);
386 if (!bm) {
391 bm->bufio = dm_bufio_client_create(bdev, block_size, max_held_per_thread,
395 if (IS_ERR(bm->bufio)) {
396 r = PTR_ERR(bm->bufio);
397 kfree(bm);
401 bm->read_only = false;
403 return bm;
410 void dm_block_manager_destroy(struct dm_block_manager *bm)
412 dm_bufio_client_destroy(bm->bufio);
413 kfree(bm);
417 unsigned dm_bm_block_size(struct dm_block_manager *bm)
419 return dm_bufio_get_block_size(bm->bufio);
423 dm_block_t dm_bm_nr_blocks(struct dm_block_manager *bm)
425 return dm_bufio_get_device_size(bm->bufio);
428 static int dm_bm_validate_buffer(struct dm_block_manager *bm,
437 r = v->check(v, (struct dm_block *) buf, dm_bufio_get_block_size(bm->bufio));
455 int dm_bm_read_lock(struct dm_block_manager *bm, dm_block_t b,
463 p = dm_bufio_read(bm->bufio, b, (struct dm_buffer **) result);
477 r = dm_bm_validate_buffer(bm, to_buffer(*result), aux, v);
488 int dm_bm_write_lock(struct dm_block_manager *bm,
496 if (dm_bm_is_read_only(bm))
499 p = dm_bufio_read(bm->bufio, b, (struct dm_buffer **) result);
513 r = dm_bm_validate_buffer(bm, to_buffer(*result), aux, v);
524 int dm_bm_read_try_lock(struct dm_block_manager *bm,
532 p = dm_bufio_get(bm->bufio, b, (struct dm_buffer **) result);
547 r = dm_bm_validate_buffer(bm, to_buffer(*result), aux, v);
557 int dm_bm_write_lock_zero(struct dm_block_manager *bm,
565 if (dm_bm_is_read_only(bm))
568 p = dm_bufio_new(bm->bufio, b, (struct dm_buffer **) result);
572 memset(p, 0, dm_bm_block_size(bm));
603 int dm_bm_flush(struct dm_block_manager *bm)
605 if (dm_bm_is_read_only(bm))
608 return dm_bufio_write_dirty_buffers(bm->bufio);
612 void dm_bm_prefetch(struct dm_block_manager *bm, dm_block_t b)
614 dm_bufio_prefetch(bm->bufio, b, 1);
617 bool dm_bm_is_read_only(struct dm_block_manager *bm)
619 return (bm ? bm->read_only : true);
623 void dm_bm_set_read_only(struct dm_block_manager *bm)
625 if (bm)
626 bm->read_only = true;
630 void dm_bm_set_read_write(struct dm_block_manager *bm)
632 if (bm)
633 bm->read_only = false;