[DRBD-cvs] svn commit by phil - r2141 - trunk/user - Reworked the
format of drbdsetup /dev/drbdX show, in or
drbd-cvs at lists.linbit.com
drbd-cvs at lists.linbit.com
Thu Apr 6 22:35:37 CEST 2006
Author: phil
Date: 2006-04-06 22:35:37 +0200 (Thu, 06 Apr 2006)
New Revision: 2141
Modified:
trunk/user/drbdsetup.c
Log:
Reworked the format of drbdsetup /dev/drbdX show, in order
to make a sane implementation of drbdadm adjust possible.
Modified: trunk/user/drbdsetup.c
===================================================================
--- trunk/user/drbdsetup.c 2006-04-06 16:31:56 UTC (rev 2140)
+++ trunk/user/drbdsetup.c 2006-04-06 20:35:37 UTC (rev 2141)
@@ -1309,6 +1309,7 @@
struct ioctl_get_config cn;
struct sockaddr_in *other_addr;
struct sockaddr_in *my_addr;
+ struct stat sb;
int err;
err=ioctl(drbd_fd,DRBD_IOCTL_GET_CONFIG,&cn);
@@ -1318,86 +1319,103 @@
return 20;
}
- if( cn.state.conn == StandAlone && cn.state.disk == Diskless)
- {
- printf("Not configured\n");
- return 0;
- }
+#define SHOW_I(T,U,M,D) \
+if(M==D) printf("\t# "); \
+else printf("\t"); \
+printf( T "\t%d; # " U "\n",M)
+#define SHOW_H(T,M,D,H) \
+if(M==D) printf("\t# "); \
+else printf("\t"); \
+printf( T "\t%s;\n",H[M])
+
if( cn.state.disk > Diskless)
{
-
- printf("Lower device: %02d:%02d (%s)\n",
- cn.lower_device_major,
- cn.lower_device_minor,
- check_dev_name(cn.lower_device_name,cn.lower_device_major,
- cn.lower_device_minor));
- if( cn.lower_device_major == cn.meta_device_major &&
- cn.lower_device_minor == cn.meta_device_minor ) {
- printf("Meta device: internal\n");
- } else {
- printf("Meta device: %02d:%02d (%s)\n",
- cn.meta_device_major,
- cn.meta_device_minor,
- check_dev_name(cn.meta_device_name,cn.meta_device_major,
- cn.meta_device_minor));
- printf("Meta index: %d\n",cn.meta_index);
- }
-
- printf("Disk options:\n");
- if( cn.disk_size_user ) printf(" size = %lu KB\n",
+ printf("disk {\n");
+ SHOW_H("on-io-error",cn.on_io_error,DEF_ON_IO_ERROR,eh_names);
+ // SHOW_H("fencing",cn.fencing,DEF_FENCING,fencing_names);
+ if( cn.disk_size_user ) printf("\tsize\t%luK;\n",
(unsigned long)cn.disk_size_user);
- if( cn.on_io_error != DEF_ON_IO_ERROR) {
- printf(" on-io-error = %s\n",eh_names[cn.on_io_error]);
- }
-
+ printf("}\n");
}
if( cn.state.conn > StandAlone)
{
- my_addr = (struct sockaddr_in *)cn.nconf.my_addr;
- other_addr = (struct sockaddr_in *)cn.nconf.other_addr;
- printf("Local address: %s:%d\n",
- inet_ntoa(my_addr->sin_addr),
- ntohs(my_addr->sin_port));
- printf("Remote address: %s:%d\n",
- inet_ntoa(other_addr->sin_addr),
- ntohs(other_addr->sin_port));
- printf("Wire protocol: %c\n",'A'-1+cn.nconf.wire_protocol);
- printf("Net options:\n");
- printf(" timeout = %d.%d sec %s\n",cn.nconf.timeout/10,cn.nconf.timeout%10,
- cn.nconf.timeout == DEF_NET_TIMEOUT ? "(default)" : "" );
-
-#define SHOW_I(T,U,M,D) printf(" " T " = %d " U " %s\n", M, M == D ? "(default)" : "")
-
+ printf("net {\n");
+ SHOW_I("timeout","1/10 seconds",cn.nconf.timeout,DEF_NET_TIMEOUT);
SHOW_I("connect-int","sec", cn.nconf.try_connect_int, DEF_NET_TRY_CON_I);
SHOW_I("ping-int","sec", cn.nconf.ping_int, DEF_NET_PING_I);
SHOW_I("max-epoch-size","", cn.nconf.max_epoch_size, DEF_MAX_EPOCH_SIZE);
SHOW_I("max-buffers","", cn.nconf.max_buffers, DEF_MAX_BUFFERS);
SHOW_I("sndbuf-size","", cn.nconf.sndbuf_size, DEF_SNDBUF_SIZE);
SHOW_I("ko-count","", cn.nconf.ko_count, DEF_KO_COUNT);
-
-#define SHOW_H(T,M,D,H) if( M != D ) { printf(" " T " = %s\n",H[M]); }
SHOW_H("on-disconnect",cn.nconf.on_disconnect,DEF_ON_DISCONNECT,dh_names);
-
- if( cn.nconf.two_primaries ) printf(" allow-two-primaries\n");
-
SHOW_H("after-sb-0pri",cn.nconf.after_sb_0p,DEF_AFTER_SB_0P,asb0p_names);
SHOW_H("after-sb-1pri",cn.nconf.after_sb_1p,DEF_AFTER_SB_0P,asb1p_names);
SHOW_H("after-sb-2pri",cn.nconf.after_sb_2p,DEF_AFTER_SB_0P,asb2p_names);
+ if( cn.nconf.two_primaries ) printf("\tallow-two-primaries;\n");
+ if( cn.nconf.want_lose ) printf("\tdiscard-my-data;\n");
+ printf("}\n");
+ }
- if( cn.nconf.want_lose ) printf(" discard-my-data\n");
+ if( cn.state.conn > StandAlone)
+ {
+ printf("syncer {\n");
+ SHOW_I("rate\t","KB/sec", cn.sconf.rate, DEF_SYNC_RATE);
+ SHOW_I("after\t","", cn.sconf.after, DEF_SYNC_AFTER);
+ SHOW_I("al-extents","", cn.sconf.al_extents, DEF_SYNC_AL_EXTENTS);
+ if( cn.sconf.skip ) printf("\tskip-sync;\n");
+ if( cn.sconf.use_csums ) printf("\tuse-csums;\n");
+ printf("}\n");
+ }
- printf("Syncer options:\n");
+ if( cn.state.disk > Diskless || cn.state.conn > StandAlone)
+ {
+ err=fstat(drbd_fd,&sb);
+ if(err)
+ {
+ PERROR("fstat() failed");
+ return 20;
+ }
+ printf("on _localhost_ {\n");
+ printf("\tdevice\t\t\"/dev/drbd%d\";\n",minor(sb.st_rdev));
+ printf("\tdisk\t\t\"/dev/%s\"; # (%d:%d)\n",
+ check_dev_name(cn.lower_device_name,cn.lower_device_major,
+ cn.lower_device_minor),
+ cn.lower_device_major,
+ cn.lower_device_minor);
- SHOW_I("rate","KB/sec", cn.sconf.rate, DEF_SYNC_RATE);
- SHOW_I("after","", cn.sconf.after, DEF_SYNC_AFTER);
- SHOW_I("al-extents","", cn.sconf.al_extents, DEF_SYNC_AL_EXTENTS);
+ if( cn.lower_device_major == cn.meta_device_major &&
+ cn.lower_device_minor == cn.meta_device_minor ) {
+ printf("\tmeta-disk\tinternal;\n");
+ } else {
+ printf("\tmeta-disk\t\"%s\" [%d]; #(%d:%d)\n",
+ check_dev_name(cn.meta_device_name,cn.meta_device_major,
+ cn.meta_device_minor),
+ cn.meta_index,
+ cn.meta_device_major,
+ cn.meta_device_minor);
+ }
- if( cn.sconf.skip ) printf(" skip-sync\n");
- if( cn.sconf.use_csums ) printf(" use-csums\n");
+ if( cn.state.conn > StandAlone) {
+ my_addr = (struct sockaddr_in *)cn.nconf.my_addr;
+ printf("\taddress\t\t%s:%d;\n",
+ inet_ntoa(my_addr->sin_addr),
+ ntohs(my_addr->sin_port));
+ }
+ printf("}\n");
}
+ if( cn.state.conn > StandAlone)
+ {
+ other_addr = (struct sockaddr_in *)cn.nconf.other_addr;
+ printf("on _remote_ {\n");
+ printf("\taddress\t%s:%d;\n",
+ inet_ntoa(other_addr->sin_addr),
+ ntohs(other_addr->sin_port));
+ printf("}\n");
+ }
+
return 0;
}
More information about the drbd-cvs
mailing list