Add status function to include repeat count in table output. --- diff/drivers/md/dm-round-robin.c 2004-10-29 15:37:40.000000000 +0100 +++ source/drivers/md/dm-round-robin.c 2004-10-29 17:15:38.000000000 +0100 @@ -93,6 +93,31 @@ ps->context = NULL; } +static int rr_status(struct path_selector *ps, struct path *path, + status_type_t type, char *result, unsigned int maxlen) +{ + struct selector *s = (struct selector *) ps->context; + struct path_info *pi; + int sz = 0; + unsigned long flags; + + switch(type) { + case STATUSTYPE_INFO: + break; + case STATUSTYPE_TABLE: + spin_lock_irqsave(&s->lock, flags); + pi = path_lookup(&s->valid_paths, path); + if (!pi) + pi = path_lookup(&s->invalid_paths, path); + spin_unlock_irqrestore(&s->lock, flags); + + DMEMIT("%u ", pi->repeat_count); + break; + } + + return sz; +} + static int rr_add_path(struct path_selector *ps, struct path *path, struct block_device *bdev, int argc, char **argv, char **error) @@ -201,10 +226,11 @@ static struct path_selector_type rr_ps = { .name = "round-robin", .module = THIS_MODULE, - .table_args = 0, + .table_args = 1, .info_args = 0, .ctr = rr_ctr, .dtr = rr_dtr, + .status = rr_status, .add_path = rr_add_path, .fail_path = rr_fail_path, .reinstate_path = rr_reinstate_path,