This patch goes over the first round of exception store API patches. Prerequisites are: 1) dm-exception-store-introduce-registry.patch 2) dm-exception-store-move-dm_target-pointer.patch 3) dm-exception-store-move-chunk_fields.patch 4) dm-exception-store-move-cow-pointer.patch 5) dm-snapshot-remove-dm_snap-header-use.patch 6) dm-snapshot-remove-dm_snap-header.patch 7) dm-snapshot-use-DMEMIT-macro-for-status.patch 8) dm-snapshot-move-ctr-parsing-to-exception-store.patch 9) dm-snapshot-move-status-to-exception-store.patch 10) dm-exception-store-generalize-table-args.patch 11) dm-snapshot-new-ctr-table-format.patch 12) dm-snapshot-cleanup.patch 13) dm-snap-minor-fix.patch brassow Failure to take into account what has already been put into the status buffer via 'DMEMIT' will result in the exception store status printing over what snapshot_status put into the buffer. Signed-off-by: Jonathan Brassow <jbrassow@xxxxxxxxxx> Index: linux-2.6/drivers/md/dm-snap.c =================================================================== --- linux-2.6.orig/drivers/md/dm-snap.c +++ linux-2.6/drivers/md/dm-snap.c @@ -1193,7 +1193,7 @@ static void snapshot_resume(struct dm_ta static int snapshot_status(struct dm_target *ti, status_type_t type, char *result, unsigned int maxlen) { - int sz = 0; + unsigned int sz = 0; struct dm_snapshot *snap = ti->private; switch (type) { @@ -1221,8 +1221,9 @@ static int snapshot_status(struct dm_tar * to make private copies if the output is to * make sense. */ - DMEMIT("%s", snap->origin->name); - snap->store->type->status(snap->store, type, result, maxlen); + DMEMIT("%s ", snap->origin->name); + snap->store->type->status(snap->store, type, + result+sz, maxlen-sz); break; } -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel