Commit 0cea9c78 authored by Jonathan Brassow's avatar Jonathan Brassow Committed by Alasdair G Kergon

dm exception store: move dm_target pointer

Move target pointer from snapshot to exception store.
Signed-off-by: default avatarJonathan Brassow <jbrassow@redhat.com>
Signed-off-by: default avatarAlasdair G Kergon <agk@redhat.com>
parent 493df71c
...@@ -137,7 +137,7 @@ int dm_exception_store_type_unregister(struct dm_exception_store_type *type) ...@@ -137,7 +137,7 @@ int dm_exception_store_type_unregister(struct dm_exception_store_type *type)
} }
EXPORT_SYMBOL(dm_exception_store_type_unregister); EXPORT_SYMBOL(dm_exception_store_type_unregister);
int dm_exception_store_create(const char *type_name, int dm_exception_store_create(const char *type_name, struct dm_target *ti,
struct dm_exception_store **store) struct dm_exception_store **store)
{ {
int r = 0; int r = 0;
...@@ -155,6 +155,7 @@ int dm_exception_store_create(const char *type_name, ...@@ -155,6 +155,7 @@ int dm_exception_store_create(const char *type_name,
} }
tmp_store->type = type; tmp_store->type = type;
tmp_store->ti = ti;
r = type->ctr(tmp_store, 0, NULL); r = type->ctr(tmp_store, 0, NULL);
if (r) { if (r) {
......
...@@ -95,6 +95,7 @@ struct dm_exception_store_type { ...@@ -95,6 +95,7 @@ struct dm_exception_store_type {
struct dm_exception_store { struct dm_exception_store {
struct dm_exception_store_type *type; struct dm_exception_store_type *type;
struct dm_target *ti;
struct dm_snapshot *snap; struct dm_snapshot *snap;
...@@ -147,7 +148,7 @@ static inline void dm_consecutive_chunk_count_inc(struct dm_snap_exception *e) ...@@ -147,7 +148,7 @@ static inline void dm_consecutive_chunk_count_inc(struct dm_snap_exception *e)
int dm_exception_store_type_register(struct dm_exception_store_type *type); int dm_exception_store_type_register(struct dm_exception_store_type *type);
int dm_exception_store_type_unregister(struct dm_exception_store_type *type); int dm_exception_store_type_unregister(struct dm_exception_store_type *type);
int dm_exception_store_create(const char *type_name, int dm_exception_store_create(const char *type_name, struct dm_target *ti,
struct dm_exception_store **store); struct dm_exception_store **store);
void dm_exception_store_destroy(struct dm_exception_store *store); void dm_exception_store_destroy(struct dm_exception_store *store);
......
...@@ -615,7 +615,6 @@ static int snapshot_ctr(struct dm_target *ti, unsigned int argc, char **argv) ...@@ -615,7 +615,6 @@ static int snapshot_ctr(struct dm_target *ti, unsigned int argc, char **argv)
atomic_set(&s->pending_exceptions_count, 0); atomic_set(&s->pending_exceptions_count, 0);
init_rwsem(&s->lock); init_rwsem(&s->lock);
spin_lock_init(&s->pe_lock); spin_lock_init(&s->pe_lock);
s->ti = ti;
/* Allocate hash table for COW data */ /* Allocate hash table for COW data */
if (init_hash_tables(s)) { if (init_hash_tables(s)) {
...@@ -624,7 +623,7 @@ static int snapshot_ctr(struct dm_target *ti, unsigned int argc, char **argv) ...@@ -624,7 +623,7 @@ static int snapshot_ctr(struct dm_target *ti, unsigned int argc, char **argv)
goto bad3; goto bad3;
} }
r = dm_exception_store_create(argv[2], &s->store); r = dm_exception_store_create(argv[2], ti, &s->store);
if (r) { if (r) {
ti->error = "Couldn't create exception store"; ti->error = "Couldn't create exception store";
r = -EINVAL; r = -EINVAL;
...@@ -820,7 +819,7 @@ static void __invalidate_snapshot(struct dm_snapshot *s, int err) ...@@ -820,7 +819,7 @@ static void __invalidate_snapshot(struct dm_snapshot *s, int err)
s->valid = 0; s->valid = 0;
dm_table_event(s->ti->table); dm_table_event(s->store->ti->table);
} }
static void get_pending_exception(struct dm_snap_pending_exception *pe) static void get_pending_exception(struct dm_snap_pending_exception *pe)
...@@ -1196,7 +1195,7 @@ static int __origin_write(struct list_head *snapshots, struct bio *bio) ...@@ -1196,7 +1195,7 @@ static int __origin_write(struct list_head *snapshots, struct bio *bio)
goto next_snapshot; goto next_snapshot;
/* Nothing to do if writing beyond end of snapshot */ /* Nothing to do if writing beyond end of snapshot */
if (bio->bi_sector >= dm_table_get_size(snap->ti->table)) if (bio->bi_sector >= dm_table_get_size(snap->store->ti->table))
goto next_snapshot; goto next_snapshot;
/* /*
......
...@@ -25,7 +25,6 @@ struct exception_table { ...@@ -25,7 +25,6 @@ struct exception_table {
struct dm_snapshot { struct dm_snapshot {
struct rw_semaphore lock; struct rw_semaphore lock;
struct dm_target *ti;
struct dm_dev *origin; struct dm_dev *origin;
struct dm_dev *cow; struct dm_dev *cow;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment