dm_snapshot
struct dm_snapshot *snap,
struct dm_snapshot;
struct dm_snapshot *snap;
struct dm_dev *dm_snap_origin(struct dm_snapshot *snap);
struct dm_dev *dm_snap_cow(struct dm_snapshot *snap);
struct dm_snapshot *snap,
static int origin_write_extent(struct dm_snapshot *merging_snap,
static void snapshot_merge_next_chunks(struct dm_snapshot *s)
struct dm_snapshot *s = context;
static void start_merge(struct dm_snapshot *s)
static void stop_merge(struct dm_snapshot *s)
static int parse_snapshot_features(struct dm_arg_set *as, struct dm_snapshot *s,
struct dm_snapshot *s;
static void __free_exceptions(struct dm_snapshot *s)
static void __handover_exceptions(struct dm_snapshot *snap_src,
struct dm_snapshot *snap_dest)
struct dm_snapshot *s = ti->private;
struct dm_snapshot *snap_src = NULL, *snap_dest = NULL;
static void account_start_copy(struct dm_snapshot *s)
static void account_end_copy(struct dm_snapshot *s)
static bool wait_for_in_progress(struct dm_snapshot *s, bool unlock_origins)
static void retry_origin_bios(struct dm_snapshot *s, struct bio *bio)
static void __invalidate_snapshot(struct dm_snapshot *s, int err)
static void invalidate_snapshot(struct dm_snapshot *s, int err)
struct dm_snapshot *s = pe->snap;
struct dm_snapshot *s = pe->snap;
struct dm_snapshot *s = pe->snap;
struct dm_dev *dm_snap_origin(struct dm_snapshot *s)
struct dm_snapshot *s = pe->snap;
struct dm_snapshot *s = pe->snap;
struct dm_dev *dm_snap_cow(struct dm_snapshot *s)
__lookup_pending_exception(struct dm_snapshot *s, chunk_t chunk)
__insert_pending_exception(struct dm_snapshot *s,
__find_pending_exception(struct dm_snapshot *s,
static void remap_exception(struct dm_snapshot *s, struct dm_exception *e,
struct dm_snapshot *s = bio->bi_private;
static void zero_exception(struct dm_snapshot *s, struct dm_exception *e,
static bool io_overlaps_chunk(struct dm_snapshot *s, struct bio *bio)
struct dm_snapshot *s = ti->private;
struct dm_snapshot *s = ti->private;
struct dm_snapshot *snap;
struct dm_snapshot *s = ti->private;
struct dm_snapshot *s = ti->private;
struct dm_snapshot *s = ti->private;
struct dm_snapshot *snap_src = NULL, *snap_dest = NULL;
struct dm_snapshot *s = ti->private;
struct dm_snapshot *snap_src = NULL, *snap_dest = NULL, *snap_merging = NULL;
struct dm_snapshot *s = ti->private;
struct dm_snapshot *snap = ti->private;
struct dm_snapshot *snap = ti->private;
struct dm_snapshot *snap = ti->private;
struct dm_snapshot *snap_src = NULL, *snap_dest = NULL;
struct dm_snapshot *snap;
struct dm_snapshot *s;
static int origin_write_extent(struct dm_snapshot *merging_snap,
static void track_chunk(struct dm_snapshot *s, struct bio *bio, chunk_t chunk)
static void stop_tracking_chunk(struct dm_snapshot *s, struct bio *bio)
static int __chunk_is_tracked(struct dm_snapshot *s, chunk_t chunk)
static void __check_for_conflicting_io(struct dm_snapshot *s, chunk_t chunk)
static int __find_snapshots_sharing_cow(struct dm_snapshot *snap,
struct dm_snapshot **snap_src,
struct dm_snapshot **snap_dest,
struct dm_snapshot **snap_merge)
struct dm_snapshot *s;
static int __validate_exception_handover(struct dm_snapshot *snap)
struct dm_snapshot *snap_src = NULL, *snap_dest = NULL;
struct dm_snapshot *snap_merge = NULL;
static void __insert_snapshot(struct origin *o, struct dm_snapshot *s)
struct dm_snapshot *l;
static int register_snapshot(struct dm_snapshot *snap)
static void reregister_snapshot(struct dm_snapshot *s)
static void unregister_snapshot(struct dm_snapshot *s)
static void dm_exception_table_lock_init(struct dm_snapshot *s, chunk_t chunk,
static struct dm_snap_pending_exception *alloc_pending_exception(struct dm_snapshot *s)
struct dm_snapshot *s = pe->snap;
struct dm_snapshot *s = context;
struct dm_snapshot *snap;
static int init_hash_tables(struct dm_snapshot *s)
static void merge_shutdown(struct dm_snapshot *s)
static struct bio *__release_queued_bios_after_merge(struct dm_snapshot *s)
static int __remove_single_exception_chunk(struct dm_snapshot *s,
static int remove_single_exception_chunk(struct dm_snapshot *s)