* [PATCH] use snapshot metadata usage to determine if snapshot is empty
@ 2009-10-09 20:17 Mike Snitzer
0 siblings, 0 replies; only message in thread
From: Mike Snitzer @ 2009-10-09 20:17 UTC (permalink / raw)
To: lvm-devel
Future dm-snapshot will append metadata sectors used to a snapshot's
status. This patch allows LVM2 to accurately determine if the snapshot
store is empty. Knowing when a snapshot store is empty is important in
the context of snapshot-merge (means merge is complete).
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
---
diff --git a/lib/snapshot/snapshot.c b/lib/snapshot/snapshot.c
index d5bac31..6c61cf0 100644
--- a/lib/snapshot/snapshot.c
+++ b/lib/snapshot/snapshot.c
@@ -95,15 +95,17 @@ static int _snap_target_percent(void **target_state __attribute((unused)),
char *params, uint64_t *total_numerator,
uint64_t *total_denominator)
{
- uint64_t numerator, denominator;
+ uint64_t total_sectors, sectors_allocated, metadata_sectors = 0;
+ int r;
- if (sscanf(params, "%" PRIu64 "/%" PRIu64,
- &numerator, &denominator) == 2) {
- *total_numerator += numerator;
- *total_denominator += denominator;
- if (!numerator)
+ r = sscanf(params, "%" PRIu64 "/%" PRIu64 " %" PRIu64,
+ §ors_allocated, &total_sectors, &metadata_sectors);
+ if (r == 2 || r == 3) {
+ *total_numerator += sectors_allocated;
+ *total_denominator += total_sectors;
+ if (sectors_allocated == metadata_sectors)
*percent_range = PERCENT_0;
- else if (numerator == denominator)
+ else if (sectors_allocated == total_sectors)
*percent_range = PERCENT_100;
else
*percent_range = PERCENT_0_TO_100;
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2009-10-09 20:17 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-10-09 20:17 [PATCH] use snapshot metadata usage to determine if snapshot is empty Mike Snitzer
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.