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