[dm-devel] [Patch 1/1] dm-mpath.c: tidy status method
Joe Thornber
thornber at redhat.com
Wed Feb 25 08:38:01 UTC 2004
dm-mpath.c: define an EMIT macro to tidy the status method a bit
--- diff/drivers/md/dm-mpath.c 2004-02-25 13:29:18.000000000 +0000
+++ source/drivers/md/dm-mpath.c 2004-02-25 13:00:00.000000000 +0000
@@ -631,55 +631,44 @@ static int multipath_status(struct dm_ta
struct path *p;
char buffer[32];
+#define EMIT(x...) sz += ((sz >= maxlen) ? \
+ 0 : snprintf(result + sz, maxlen - sz, x))
+
switch (type) {
case STATUSTYPE_INFO:
- sz += snprintf(result + sz, maxlen - sz, "%u ", m->nr_priority_groups);
+ EMIT("%u ", m->nr_priority_groups);
list_for_each_entry(pg, &m->priority_groups, list) {
- sz += snprintf(result + sz, maxlen - sz, "%u %u ",
- pg->nr_paths,
- pg->ps->type->info_args);
+ EMIT("%u %u ", pg->nr_paths, pg->ps->type->info_args);
list_for_each_entry(p, &pg->paths, list) {
format_dev_t(buffer, p->dev->bdev->bd_dev);
spin_lock_irqsave(&p->failed_lock, flags);
- sz += snprintf(result + sz, maxlen - sz,
- "%s %s %u ", buffer,
- p->has_failed ? "F" : "A",
- p->fail_count);
+ EMIT("%s %s %u ", buffer,
+ p->has_failed ? "F" : "A", p->fail_count);
pg->ps->type->status(pg->ps, p, type,
result + sz, maxlen - sz);
spin_unlock_irqrestore(&p->failed_lock, flags);
-
- sz = strlen(result);
- if (sz >= maxlen)
- break;
}
}
-
break;
case STATUSTYPE_TABLE:
- sz += snprintf(result + sz, maxlen - sz, "%u ", m->nr_priority_groups);
+ EMIT("%u ", m->nr_priority_groups);
list_for_each_entry(pg, &m->priority_groups, list) {
- sz += snprintf(result + sz, maxlen - sz, "%u %s %u %u ",
- pg->priority, pg->ps->type->name,
- pg->nr_paths, pg->ps->type->table_args);
+ EMIT("%u %s %u %u ",
+ pg->priority, pg->ps->type->name,
+ pg->nr_paths, pg->ps->type->table_args);
list_for_each_entry(p, &pg->paths, list) {
format_dev_t(buffer, p->dev->bdev->bd_dev);
- sz += snprintf(result + sz, maxlen - sz,
- "%s ", buffer);
+ EMIT("%s ", buffer);
pg->ps->type->status(pg->ps, p, type,
result + sz, maxlen - sz);
- sz = strlen(result);
- if (sz >= maxlen)
- break;
}
}
-
break;
}
More information about the dm-devel
mailing list