[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;
 }