[DRBD-cvs] user by phil; Finally implemented the 'drbddisk resour...
drbd-user@lists.linbit.com
drbd-user@lists.linbit.com
Mon, 24 May 2004 13:39:50 +0200 (CEST)
DRBD CVS committal
Author : phil
Project : drbd
Module : user
Dir : drbd/user
Modified Files:
Tag: rel-0_7-branch
drbdadm_main.c drbdsetup.c
Log Message:
Finally implemented the 'drbddisk resource status' command.
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/user/Attic/drbdadm_main.c,v
retrieving revision 1.1.2.51
retrieving revision 1.1.2.52
diff -u -3 -r1.1.2.51 -r1.1.2.52
--- drbdadm_main.c 21 May 2004 11:43:05 -0000 1.1.2.51
+++ drbdadm_main.c 24 May 2004 11:39:45 -0000 1.1.2.52
@@ -121,6 +121,7 @@
{ "syncer", adm_syncer, 0 ,1,1 },
{ "adjust", adm_adjust, 0 ,1,1 },
{ "wait_connect", adm_wait_c, 0 ,1,1 },
+ { "state", adm_generic, "state" ,1,1 },
{ "dump", adm_dump, 0 ,1,1 },
{ "sh-devices", sh_devices, 0 ,0,0 },
{ "sh-mod-parms", sh_mod_parms,0 ,0,0 },
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/user/drbdsetup.c,v
retrieving revision 1.54.2.35
retrieving revision 1.54.2.36
diff -u -3 -r1.54.2.35 -r1.54.2.36
--- drbdsetup.c 19 May 2004 19:52:47 -0000 1.54.2.35
+++ drbdsetup.c 24 May 2004 11:39:45 -0000 1.54.2.36
@@ -106,6 +106,7 @@
int cmd_show(int drbd_fd,char** argv,int argc,struct option *options);
int cmd_syncer(int drbd_fd,char** argv,int argc,struct option *options);
int cmd_detach(int drbd_fd,char** argv,int argc,struct option *options);
+int cmd_state(int drbd_fd,char** argv,int argc,struct option *options);
struct drbd_cmd commands[] = {
{"primary", cmd_primary, 0,
@@ -156,6 +157,7 @@
{ "size", required_argument, 0, 'd' },
{ 0, 0, 0, 0 } } },
{"disconnect", cmd_disconnect, 0, 0, },
+ {"state", cmd_state, 0, 0, },
{"show", cmd_show, 0, 0, }
};
@@ -1131,6 +1133,35 @@
if( cn.sconf.skip ) printf(" skip-sync\n");
if( cn.sconf.use_csums ) printf(" use-csums\n");
+
+ return 0;
+}
+
+int cmd_state(int drbd_fd,char** argv,int argc,struct option *options)
+{
+ static const char *state_names[] = {
+ [Primary] = "Primary",
+ [Secondary] = "Secondary",
+ [Unknown] = "Unknown"
+ };
+
+ struct ioctl_get_config cn;
+ int err;
+
+ err=ioctl(drbd_fd,DRBD_IOCTL_GET_CONFIG,&cn);
+ if(err)
+ {
+ perror("ioctl() failed");
+ return 20;
+ }
+
+ if( cn.cstate < StandAlone )
+ {
+ printf("Not configured\n");
+ return 0;
+ }
+
+ printf("%s/%s\n",state_names[cn.state],state_names[cn.peer_state]);
return 0;
}