[DRBD-cvs] user by phil; * First _naive_ implementaion of the det...

drbd-user@lists.linbit.com drbd-user@lists.linbit.com
Fri, 6 Feb 2004 16:44:00 +0100 (CET)


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:
* First _naive_ implementaion of the detach command. 
* Some work on the disk-less-mode

Still a lot to do in this area...

===================================================================
RCS file: /var/lib/cvs/drbd/drbd/user/Attic/drbdadm_main.c,v
retrieving revision 1.1.2.29
retrieving revision 1.1.2.30
diff -u -3 -r1.1.2.29 -r1.1.2.30
--- drbdadm_main.c	12 Jan 2004 19:49:41 -0000	1.1.2.29
+++ drbdadm_main.c	6 Feb 2004 15:43:55 -0000	1.1.2.30
@@ -107,7 +107,7 @@
 
 struct adm_cmd cmds[] = {
   { "attach",            adm_attach,  0                  ,1,1, "FIXME attach help" },
-  //{ "detach",            adm_generic, "??missing??"    ,1,1 },
+  { "detach",            adm_generic, "detach"           ,1,1, "FIXME detach help" },
   { "connect",           adm_connect, 0                  ,1,1, "FIXME connect help" },
   { "disconnect",        adm_generic, "disconnect"       ,1,1, "FIXME disconnect help" },
   { "up",                adm_up,      0                  ,1,1, "FIXME up help" },
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/user/drbdsetup.c,v
retrieving revision 1.54.2.19
retrieving revision 1.54.2.20
diff -u -3 -r1.54.2.19 -r1.54.2.20
--- drbdsetup.c	6 Feb 2004 13:02:48 -0000	1.54.2.19
+++ drbdsetup.c	6 Feb 2004 15:43:55 -0000	1.54.2.20
@@ -105,6 +105,7 @@
 int cmd_disconnect(int drbd_fd,char** argv,int argc,struct option *options);
 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);
 
 struct drbd_cmd commands[] = {
   {"primary", cmd_primary,           0,
@@ -135,6 +136,7 @@
      { "al-extents", required_argument, 0, 'e' },
      { 0,            0,                 0, 0 } } },
   {"down", cmd_down,                 0, 0, },
+  {"detach", cmd_detach,             0, 0, },
   {"net", cmd_net_conf, (char *[]){"local_addr","remote_addr","protocol",0},
    (struct option[]) {
      { "timeout",    required_argument, 0, 't' },
@@ -906,6 +908,25 @@
 	fprintf(stderr,"Device is not configured!\n");
       if(err==EBUSY)
 	fprintf(stderr,"Someone has opened the device!\n");
+      return 20;
+    }
+  return 0;
+}
+
+int cmd_detach(int drbd_fd,char** argv,int argc,struct option *options)
+{
+  int err;
+
+  err=ioctl(drbd_fd,DRBD_IOCTL_UNCONFIG_DISK);
+  if(err)
+    {
+      err=errno;
+      perror("ioctl() failed");
+      if(err==EBUSY)
+	fprintf(stderr,"Not possible during resynchronisation.\n");
+      if(err==ENXIO)
+	fprintf(stderr," - Do not shoot yourself in the foot. -\n"
+		"A system without backing storage is not possible.\n");
       return 20;
     }
   return 0;