aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorJonathan Brassow <jbrassow@redhat.com>2009-04-02 14:55:35 -0400
committerAlasdair G Kergon <agk@redhat.com>2009-04-02 14:55:35 -0400
commit1e302a929e2da6e8448e2058e4b07b07252b57fe (patch)
tree3345d31926a2254a2041d62d270cba76b2590bae /drivers
parentfee1998e9c690f9920671e1e0ef187a48cfbbde4 (diff)
dm snapshot: move status to exception store
Let the exception store types print out their status through the new API, rather than having the snapshot code do it. Adjust the buffer position to allow for the preceding DMEMIT in the arguments to type->status(). Signed-off-by: Jonathan Brassow <jbrassow@redhat.com> Signed-off-by: Alasdair G Kergon <agk@redhat.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/md/dm-exception-store.h5
-rw-r--r--drivers/md/dm-snap-persistent.c16
-rw-r--r--drivers/md/dm-snap-transient.c16
-rw-r--r--drivers/md/dm-snap.c8
4 files changed, 29 insertions, 16 deletions
diff --git a/drivers/md/dm-exception-store.h b/drivers/md/dm-exception-store.h
index 023a707503c4..0a2e6e7f67b3 100644
--- a/drivers/md/dm-exception-store.h
+++ b/drivers/md/dm-exception-store.h
@@ -79,8 +79,9 @@ struct dm_exception_store_type {
79 */ 79 */
80 void (*drop_snapshot) (struct dm_exception_store *store); 80 void (*drop_snapshot) (struct dm_exception_store *store);
81 81
82 int (*status) (struct dm_exception_store *store, status_type_t status, 82 unsigned (*status) (struct dm_exception_store *store,
83 char *result, unsigned int maxlen); 83 status_type_t status, char *result,
84 unsigned maxlen);
84 85
85 /* 86 /*
86 * Return how full the snapshot is. 87 * Return how full the snapshot is.
diff --git a/drivers/md/dm-snap-persistent.c b/drivers/md/dm-snap-persistent.c
index 3907c4ce2ae5..1799205cd945 100644
--- a/drivers/md/dm-snap-persistent.c
+++ b/drivers/md/dm-snap-persistent.c
@@ -688,11 +688,19 @@ static int persistent_ctr(struct dm_exception_store *store,
688 return 0; 688 return 0;
689} 689}
690 690
691static int persistent_status(struct dm_exception_store *store, 691static unsigned persistent_status(struct dm_exception_store *store,
692 status_type_t status, char *result, 692 status_type_t status, char *result,
693 unsigned int maxlen) 693 unsigned maxlen)
694{ 694{
695 int sz = 0; 695 unsigned sz = 0;
696
697 switch (status) {
698 case STATUSTYPE_INFO:
699 break;
700 case STATUSTYPE_TABLE:
701 DMEMIT(" %s P %llu", store->cow->name,
702 (unsigned long long)store->chunk_size);
703 }
696 704
697 return sz; 705 return sz;
698} 706}
diff --git a/drivers/md/dm-snap-transient.c b/drivers/md/dm-snap-transient.c
index a883d6e658be..cde5aa558e6d 100644
--- a/drivers/md/dm-snap-transient.c
+++ b/drivers/md/dm-snap-transient.c
@@ -81,11 +81,19 @@ static int transient_ctr(struct dm_exception_store *store,
81 return 0; 81 return 0;
82} 82}
83 83
84static int transient_status(struct dm_exception_store *store, 84static unsigned transient_status(struct dm_exception_store *store,
85 status_type_t status, char *result, 85 status_type_t status, char *result,
86 unsigned maxlen) 86 unsigned maxlen)
87{ 87{
88 int sz = 0; 88 unsigned sz = 0;
89
90 switch (status) {
91 case STATUSTYPE_INFO:
92 break;
93 case STATUSTYPE_TABLE:
94 DMEMIT(" %s N %llu", store->cow->name,
95 (unsigned long long)store->chunk_size);
96 }
89 97
90 return sz; 98 return sz;
91} 99}
diff --git a/drivers/md/dm-snap.c b/drivers/md/dm-snap.c
index 974916b9ea21..981a0413068f 100644
--- a/drivers/md/dm-snap.c
+++ b/drivers/md/dm-snap.c
@@ -70,9 +70,6 @@ struct dm_snapshot {
70 /* Origin writes don't trigger exceptions until this is set */ 70 /* Origin writes don't trigger exceptions until this is set */
71 int active; 71 int active;
72 72
73 /* Used for display of table */
74 char type;
75
76 mempool_t *pending_pool; 73 mempool_t *pending_pool;
77 74
78 atomic_t pending_exceptions_count; 75 atomic_t pending_exceptions_count;
@@ -1166,9 +1163,8 @@ static int snapshot_status(struct dm_target *ti, status_type_t type,
1166 * make sense. 1163 * make sense.
1167 */ 1164 */
1168 DMEMIT("%s", snap->origin->name); 1165 DMEMIT("%s", snap->origin->name);
1169 DMEMIT(" %s %s %llu", snap->store->cow->name, 1166 snap->store->type->status(snap->store, type, result + sz,
1170 snap->store->type->name, 1167 maxlen - sz);
1171 (unsigned long long)snap->store->chunk_size);
1172 break; 1168 break;
1173 } 1169 }
1174 1170