diff --git a/Detail.c b/Detail.c index daec4f1..24eeba0 100644 --- a/Detail.c +++ b/Detail.c @@ -498,17 +498,20 @@ int Detail(char *dev, struct context *c) } else arrayst = "active"; - printf(" State : %s%s%s%s%s%s \n", + printf(" State : %s%s%s%s%s%s%s \n", arrayst, st, (!e || (e->percent < 0 && e->percent != RESYNC_PENDING && - e->percent != RESYNC_DELAYED)) ? + e->percent != RESYNC_DELAYED && + e->percent != RESYNC_REMOTE)) ? "" : sync_action[e->resync], larray_size ? "": ", Not Started", (e && e->percent == RESYNC_DELAYED) ? " (DELAYED)": "", (e && e->percent == RESYNC_PENDING) ? - " (PENDING)": ""); + " (PENDING)": "", + (e && e->percent == RESYNC_REMOTE) ? + " (REMOTE)": ""); } else if (inactive && !is_container) { printf(" State : inactive\n"); } diff --git a/mdadm.h b/mdadm.h index d94569f..399478b 100644 --- a/mdadm.h +++ b/mdadm.h @@ -1815,7 +1815,8 @@ enum r0layout { #define RESYNC_NONE -1 #define RESYNC_DELAYED -2 #define RESYNC_PENDING -3 -#define RESYNC_UNKNOWN -4 +#define RESYNC_REMOTE -4 +#define RESYNC_UNKNOWN -5 /* When using "GET_DISK_INFO" it isn't certain how high * we need to check. So we impose an absolute limit of diff --git a/mdstat.c b/mdstat.c index 7e600d0..20577a3 100644 --- a/mdstat.c +++ b/mdstat.c @@ -257,6 +257,8 @@ struct mdstat_ent *mdstat_read(int hold, int start) ent->percent = RESYNC_DELAYED; if (l > 8 && strcmp(w+l-8, "=PENDING") == 0) ent->percent = RESYNC_PENDING; + if (l > 7 && strcmp(w+l-7, "=REMOTE") == 0) + ent->percent = RESYNC_REMOTE; } else if (ent->percent == RESYNC_NONE && w[0] >= '0' && w[0] <= '9' &&