Lines Matching full:store
8 #include "dm-exception-store.h"
30 * We need to store a record of which parts of the origin have
33 * of the COW store. It makes sense therefore, to store the
100 * The top level structure for a persistent exception store.
103 struct dm_exception_store *store; member
139 * the exception store because chunks can be committed out of
172 len = ps->store->chunk_size << SECTOR_SHIFT; in alloc_area()
233 .bdev = dm_snap_cow(ps->store->snap)->bdev, in chunk_io()
234 .sector = ps->store->chunk_size * chunk, in chunk_io()
235 .count = ps->store->chunk_size, in chunk_io()
301 memset(ps->area, 0, ps->store->chunk_size << SECTOR_SHIFT); in zero_memory_area()
322 if (!ps->store->chunk_size) { in read_header()
323 ps->store->chunk_size = max(DM_CHUNK_SIZE_DEFAULT_SECTORS, in read_header()
324 bdev_logical_block_size(dm_snap_cow(ps->store->snap)-> in read_header()
326 ps->store->chunk_mask = ps->store->chunk_size - 1; in read_header()
327 ps->store->chunk_shift = __ffs(ps->store->chunk_size); in read_header()
361 if (ps->store->chunk_size == chunk_size) in read_header()
367 chunk_size, ps->store->chunk_size); in read_header()
372 r = dm_exception_store_set_chunk_size(ps->store, chunk_size, in read_header()
392 memset(ps->header_area, 0, ps->store->chunk_size << SECTOR_SHIFT); in write_header()
398 dh->chunk_size = cpu_to_le32(ps->store->chunk_size); in write_header()
502 client = dm_bufio_client_create(dm_snap_cow(ps->store->snap)->bdev, in read_exceptions()
503 ps->store->chunk_size << SECTOR_SHIFT, in read_exceptions()
548 memcpy(ps->area, area, ps->store->chunk_size << SECTOR_SHIFT); in read_exceptions()
570 static struct pstore *get_info(struct dm_exception_store *store) in get_info() argument
572 return (struct pstore *) store->context; in get_info()
575 static void persistent_usage(struct dm_exception_store *store, in persistent_usage() argument
580 struct pstore *ps = get_info(store); in persistent_usage()
582 *sectors_allocated = ps->next_free * store->chunk_size; in persistent_usage()
583 *total_sectors = get_dev_size(dm_snap_cow(store->snap)->bdev); in persistent_usage()
591 store->chunk_size; in persistent_usage()
594 static void persistent_dtr(struct dm_exception_store *store) in persistent_dtr() argument
596 struct pstore *ps = get_info(store); in persistent_dtr()
611 static int persistent_read_metadata(struct dm_exception_store *store, in persistent_read_metadata() argument
617 struct pstore *ps = get_info(store); in persistent_read_metadata()
629 ps->exceptions_per_area = (ps->store->chunk_size << SECTOR_SHIFT) / in persistent_read_metadata()
676 static int persistent_prepare_exception(struct dm_exception_store *store, in persistent_prepare_exception() argument
679 struct pstore *ps = get_info(store); in persistent_prepare_exception()
680 sector_t size = get_dev_size(dm_snap_cow(store->snap)->bdev); in persistent_prepare_exception()
683 if (size < ((ps->next_free + 1) * store->chunk_size)) in persistent_prepare_exception()
699 static void persistent_commit_exception(struct dm_exception_store *store, in persistent_commit_exception() argument
705 struct pstore *ps = get_info(store); in persistent_commit_exception()
765 static int persistent_prepare_merge(struct dm_exception_store *store, in persistent_prepare_merge() argument
769 struct pstore *ps = get_info(store); in persistent_prepare_merge()
811 static int persistent_commit_merge(struct dm_exception_store *store, in persistent_commit_merge() argument
815 struct pstore *ps = get_info(store); in persistent_commit_merge()
844 static void persistent_drop_snapshot(struct dm_exception_store *store) in persistent_drop_snapshot() argument
846 struct pstore *ps = get_info(store); in persistent_drop_snapshot()
853 static int persistent_ctr(struct dm_exception_store *store, char *options) in persistent_ctr() argument
863 ps->store = store; in persistent_ctr()
886 store->userspace_supports_overflow = true; in persistent_ctr()
888 DMERR("Unsupported persistent store option: %s", options); in persistent_ctr()
894 store->context = ps; in persistent_ctr()
906 static unsigned persistent_status(struct dm_exception_store *store, in persistent_status() argument
916 DMEMIT(" %s %llu", store->userspace_supports_overflow ? "PO" : "P", in persistent_status()
917 (unsigned long long)store->chunk_size); in persistent_status()
959 DMERR("Unable to register persistent exception store type"); in dm_persistent_snapshot_init()
966 "store type"); in dm_persistent_snapshot_init()