Index: src/user/drbdsetup.c =================================================================== --- src/user/drbdsetup.c (revision 15364) +++ src/user/drbdsetup.c (working copy) @@ -1183,6 +1183,10 @@ drbd_state_t state; char* str; + /* Ignore error replies */ + if (reply->ret_code != NoError) + return 1; + switch (reply->packet_type) { case P_get_state: if(consume_tag_int(T_state_i,reply->tag_list,(int*)&state.i)) { @@ -1249,7 +1253,7 @@ struct drbd_tag_list *tl; struct option *lo; unsigned int seq=0; - int sk_nl,c,cont=1,rr; + int sk_nl,c,cont=1,rr,i,last; int unfiltered=0, all_devices=0; int wfc_timeout=0, degr_wfc_timeout=0,timeout_ms; struct timeval before,after; @@ -1308,11 +1312,22 @@ timeout_ms= 1000 * ( rr ? degr_wfc_timeout : wfc_timeout) - 1; // ask for the current state before waiting for state updates... - tl->drbd_p_header->packet_type = P_get_state; - tl->drbd_p_header->drbd_minor = minor; - tl->drbd_p_header->flags = 0; - send_cn(sk_nl,tl->nl_header,(char*)tl->tag_list_cpos-(char*)tl->nl_header); + if (all_devices) { + i = 0; + last = 255; + } + else { + i = last = minor; + } + while (i <= last) { + tl->drbd_p_header->packet_type = P_get_state; + tl->drbd_p_header->drbd_minor = i; + tl->drbd_p_header->flags = 0; + send_cn(sk_nl,tl->nl_header,(char*)tl->tag_list_cpos-(char*)tl->nl_header); + i++; + } + dt_unlock_drbd(lock_fd); lock_fd=-1;