Skip to contentSkip to conversation

DRBD 8.2.5 to 8.3.0 upgrade with make PREFIX=/usr/local/drbd error: symlink(/usr/local/drbd/etc/drbd.conf, /var/lib/drbd//drbd-minor-1.conf): No such file or directory

Drbd-dev GAUTIER Hervé 1 participant 2 messages Jan 30, 2009 1 message not in the archive DRBD driver

lore
Share & tools
lore

A message that is not in the archive (sent off-list or not yet received): [email protected]

#1 lore raw

Hi again,

Well, I don't know what is this /var/lib/drbd directory, but here is a patch in order to take in account the "make PREFIX=" command

Tell me if it is OK for you.

And so, last question, what is the aim of this directory ? I have seen drbdadm create symbolic link to the configuration file, but why ?

--8<-------------------------------------------------

user/drbdadm_minor_table.c 2009-01-30 16:43:32.000000000 +0100 renamed from user/drbdadm_minor_table.c 2009-01-30 16:19:08.000000000 +0100 +0 -0
diff -Naur drbd-8.3.0/user/drbdadm_minor_table.c drbd-8.3.0-debug/user/drbdadm_minor_table.c
@@ -40,7 +40,9 @@

#include <sys/stat.h>
#include <string.h>

-#define MINOR_TABLE_DIR "/var/lib/drbd/"
+#include "drbd_prefix.h"
+
+#define MINOR_TABLE_DIR "/var/lib/drbd"
#define MAX_MINOR 256

#define MAX_REGISTER_PATH_LEN 1024
@@ -49,7 +51,7 @@
* it is assumed that sprintf cannot fail :-] */
void linkname_from_minor(char *buf, int minor)
{
- sprintf(buf, "%s/drbd-minor-%d.conf", MINOR_TABLE_DIR, minor);
+ sprintf(buf, "%s%s/drbd-minor-%d.conf", DRBD_PREFIX, MINOR_TABLE_DIR, minor);
}

int unregister_minor(int minor)

user/Makefile 2009-01-30 17:12:25.000000000 +0100 renamed from user/Makefile 2008-12-01 14:35:42.000000000 +0100 +0 -0
diff -Naur drbd-8.3.0/user/Makefile drbd-8.3.0-debug/user/Makefile
@@ -43,7 +43,11 @@

drbd_strings.c: ../drbd/drbd_strings.c

       cp $^ $@

-drbdadm: $(drbdadm-obj)
+.PHONY: drbd_prefix.h
+drbd_prefix.h:
+ echo "#define DRBD_PREFIX \"$(PREFIX)\"" > drbd_prefix.h
+
+drbdadm: drbd_prefix.h $(drbdadm-obj)

       $(CC) -o $@ $^
# for debugging:
@@ -66,6 +70,7 @@
       $(CC) -o $@ $^

clean:
+ rm -f drbd_prefix.h
rm -f drbdadm_scanner.c drbdmeta_scanner.c
rm -f drbdsetup drbdadm drbdmeta drbdmeta_unfinished_rewrite *.o rm -f drbd_buildtag.c drbd_strings.c
--8<-------------------------------------------------

Quoted 103 lines · GAUTIER Hervé

Hi !

On a test machine, DRBD 8.2.5 was running, built from source with "make all && make install" Configuration file is /usr/local/drbd-8.2.5/etc/drbd.conf
DRBD module is /lib/modules/uname -r/kernel/drivers/block/drbd.ko
User DRBD tools drbd{adm|meta|setup}are in /sbin
I have got a symbolic link /usr/local/drbd -> /usr/local/drbd-8.2.5

Then I stop DRBD, put the 8.3.0 source in /usr/local/drbd-8.3.0 and replace the symbolic link /usr/local/drbd -> /usr/local/drbd-8.2.5 with /usr/local/drbd -> /usr/local/drbd-8.3.0 I have built DRBD 8.3.0 from source with "make PREFIX=/usr/local/drbd all && make PREFIX=/usr/local/drbd install".
Configuration file is in /usr/local/drbd-8.3.0/etc/drbd.conf (same as before)
DRBD module is /usr/local/drbd-8.3.0/lib/modules/`uname
-r`/kernel/drivers/block/drbd.ko
User DRBD tools drbd{adm|meta|setup}are in /usr/local/drbd-8.3.0/sbin
At the installation I can see a new empty directory: /usr/local/drbd-8.3.0/var/lib/drbd

What is this new directory ?

Old module is always installed in /lib/modules/uname -r/kernel/drivers/block/drbd.ko but not used. Now I use insmod /usr/local/drbd-8.3.0/lib/modules/uname -r/kernel/drivers/block/drbd.ko and /proc/drbd show me 8.3.0 PATH=/usr/local/drbd/sbin:$PATH in order to get first the new user tools

Starting DRBD 8.3.0, using the resource defined under the 8.2.5 version, all is OK, but when I issue the following commands, I have got:

--8<-------------------------------------------------

# lsmod | grep drbd
# drbdadm -c /usr/local/drbd/etc/drbd.conf dstate drbd_resource1
Consistent/DUnknown
# insmod /usr/local/drbd/lib/modules/`uname 
-r`/kernel/drivers/block/drbd.ko
# lsmod | grep drbd
drbd                  238516  0
# drbdadm -c /usr/local/drbd/etc/drbd.conf dstate drbd_resource1
Consistent/DUnknown
# drbdadm -c /usr/local/drbd/etc/drbd.conf up drbd_resource1
symlink(/usr/local/drbd-8.3.0/etc/drbd.conf, /var/lib/drbd//drbd-minor-0.conf): No such file or directory
symlink(/usr/local/drbd-8.3.0/etc/drbd.conf, /var/lib/drbd//drbd-minor-0.conf): No such file or directory
symlink(/usr/local/drbd-8.3.0/etc/drbd.conf, /var/lib/drbd//drbd-minor-0.conf): No such file or directory
# drbdadm -c /usr/local/drbd/etc/drbd.conf dstate drbd_resource1
UpToDate/DUnknown
symlink(/usr/local/drbd-8.3.0/etc/drbd.conf, /var/lib/drbd//drbd-minor-0.conf): No such file or directory
# drbdadm -c /usr/local/drbd/etc/drbd.conf cstate drbd_resource1
WFConnection
symlink(/usr/local/drbd-8.3.0/etc/drbd.conf, /var/lib/drbd//drbd-minor-0.conf): No such file or directory
# drbdadm -c /usr/local/drbd/etc/drbd.conf role drbd_resource1
Secondary/Unknown
symlink(/usr/local/drbd-8.3.0/etc/drbd.conf, /var/lib/drbd//drbd-minor-0.conf): No such file or directory
--8<-------------------------------------------------

So, I think my symbolic link /usr/local/drbd -> /usr/local/drbd-8.3.0 is the problem, but I don't understand why ?

I can't find any information about this new var/lib/drbd directory. Thank in advance for any clue.

If it can help, here is my /usr/local/drbd/drbd.conf

--8<------------------------------------------------- global {
usage-count no;
}

common {

  net {
     after-sb-0pri discard-older-primary;
     after-sb-1pri discard-secondary;
     after-sb-2pri disconnect;
  }
  syncer {
     rate 31M;

}
}

resource drbd_resource1 {
protocol C;

  syncer {
     verify-alg crc32c;
  }

  disk {
     on-io-error detach;
  }
  on rh4-1 {
     device    /dev/drbd0;
     disk      /dev/cciss/c0d1;
     address   192.168.11.104:7789;
     meta-disk internal;
  }
  on rh4-2 {
     device    /dev/drbd0;
     disk      /dev/cciss/c0d1;
     address   192.168.11.105:7789;
     meta-disk internal;

}
} --8<-------------------------------------------------

Signature · 1 line
Hervé
#2 lore raw

Oups, new patch to be sure of the build (rm -f drbdadm_minor_table.o added) !

Sorry !

--8<----------------------------------------------

user/drbdadm_minor_table.c 2009-01-30 16:43:32.000000000 +0100 renamed from user/drbdadm_minor_table.c 2009-01-30 16:19:08.000000000 +0100 +0 -0
diff -Naur drbd-8.3.0/user/drbdadm_minor_table.c drbd-8.3.0-debug/user/drbdadm_minor_table.c
@@ -40,7 +40,9 @@

#include <sys/stat.h>
#include <string.h>

-#define MINOR_TABLE_DIR "/var/lib/drbd/"
+#include "drbd_prefix.h"
+
+#define MINOR_TABLE_DIR "/var/lib/drbd"
#define MAX_MINOR 256

#define MAX_REGISTER_PATH_LEN 1024
@@ -49,7 +51,7 @@
* it is assumed that sprintf cannot fail :-] */
void linkname_from_minor(char *buf, int minor)
{
- sprintf(buf, "%s/drbd-minor-%d.conf", MINOR_TABLE_DIR, minor);
+ sprintf(buf, "%s%s/drbd-minor-%d.conf", DRBD_PREFIX, MINOR_TABLE_DIR, minor);
}

int unregister_minor(int minor)

user/Makefile 2009-01-30 17:26:05.000000000 +0100 renamed from user/Makefile 2008-12-01 14:35:42.000000000 +0100 +0 -0
diff -Naur drbd-8.3.0/user/Makefile drbd-8.3.0-debug/user/Makefile
@@ -43,7 +43,12 @@

drbd_strings.c: ../drbd/drbd_strings.c

       cp $^ $@

-drbdadm: $(drbdadm-obj)
+.PHONY: drbd_prefix.h
+drbd_prefix.h:
+ rm -f drbdadm_minor_table.o
+ echo "#define DRBD_PREFIX \"$(PREFIX)\"" > drbd_prefix.h
+
+drbdadm: drbd_prefix.h $(drbdadm-obj)

       $(CC) -o $@ $^
# for debugging:
@@ -66,6 +71,7 @@
       $(CC) -o $@ $^

clean:
+ rm -f drbd_prefix.h
rm -f drbdadm_scanner.c drbdmeta_scanner.c
rm -f drbdsetup drbdadm drbdmeta drbdmeta_unfinished_rewrite *.o rm -f drbd_buildtag.c drbd_strings.c
--8<----------------------------------------------

Signature · 1 line
Hervé GAUTIER