projects
/
nbd.git
/ commitdiff
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
b87071d
)
r332: open() the device upon connecting after a fork(), so that the partition table...
author
yoe <yoe>
Wed, 2 Apr 2008 13:15:57 +0000
(13:15 +0000)
committer
yoe <yoe>
Wed, 2 Apr 2008 13:15:57 +0000
(13:15 +0000)
nbd-client.c
patch
|
blob
|
history
diff --git
a/nbd-client.c
b/nbd-client.c
index
4e4777b
..
4df2281
100644
(file)
--- a/
nbd-client.c
+++ b/
nbd-client.c
@@
-38,7
+38,7
@@
#define MY_NAME "nbd_client"
#include "cliserv.h"
#define MY_NAME "nbd_client"
#include "cliserv.h"
-int check_conn(char* devname) {
+int check_conn(char* devname, int do_print) {
char buf[256];
int fd;
int len;
char buf[256];
int fd;
int len;
@@
-55,7
+55,7
@@
int check_conn(char* devname) {
}
len=read(fd, buf, 256);
buf[len-1]='\0';
}
len=read(fd, buf, 256);
buf[len-1]='\0';
- printf("%s\n", buf);
+ if(do_print) printf("%s\n", buf);
return 0;
}
return 0;
}
@@
-245,7
+245,7
@@
int main(int argc, char *argv[]) {
return 0;
}
if(strcmp(argv[0], "-c")==0) {
return 0;
}
if(strcmp(argv[0], "-c")==0) {
- return check_conn(argv[1]);
+ return check_conn(argv[1], 1);
}
if (strncmp(argv[0], "bs=", 3)==0) {
}
if (strncmp(argv[0], "bs=", 3)==0) {
@@
-304,12
+304,17
@@
int main(int argc, char *argv[]) {
/* Go daemon */
chdir("/");
/* Go daemon */
chdir("/");
+ do {
#ifndef NOFORK
#ifndef NOFORK
- if (fork())
- exit(0);
+ if (fork()) {
+ while(check_conn(nbddev, 0)) {
+ sleep(1);
+ }
+ open(nbddev, O_RDONLY);
+ exit(0);
+ }
#endif
#endif
- do {
if (ioctl(nbd, NBD_DO_IT) < 0) {
fprintf(stderr, "Kernel call returned: %m");
if(errno==EBADR) {
if (ioctl(nbd, NBD_DO_IT) < 0) {
fprintf(stderr, "Kernel call returned: %m");
if(errno==EBADR) {