From 79149d727470b0f8e052de59a9d436f37d0427c5 Mon Sep 17 00:00:00 2001 From: sageweil Date: Wed, 22 Aug 2007 17:32:45 +0000 Subject: [PATCH] merged r1628:1652 from trunk into branches/sage/mds git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@1653 29311d96-e01e-0410-9327-a35deaab8ce9 --- branches/sage/mds/Makefile | 12 +- branches/sage/mds/active/activetaskd | Bin 10800 -> 0 bytes branches/sage/mds/active/common.h | 1 - branches/sage/mds/active/echotestclient | Bin 10216 -> 0 bytes branches/sage/mds/active/echotestclient.h | 2 +- branches/sage/mds/active/msgtestclient.cc | 7 +- branches/sage/mds/active/utility.h | 240 +--------------------- 7 files changed, 19 insertions(+), 243 deletions(-) delete mode 100755 branches/sage/mds/active/activetaskd delete mode 100755 branches/sage/mds/active/echotestclient diff --git a/branches/sage/mds/Makefile b/branches/sage/mds/Makefile index 0d02603a3bcbf..ccc2ef1fd1fa7 100644 --- a/branches/sage/mds/Makefile +++ b/branches/sage/mds/Makefile @@ -165,10 +165,10 @@ activemaster: active/activemaster.cc client.o osdc.o msg/SimpleMessenger.o commo activeslave: active/activeslave.cc client.o osdc.o msg/SimpleMessenger.o common.o ${CC} ${CFLAGS} ${LIBS} $^ -o $@ -echotestclient: active/echotestclient.cc client.o osdc.o msg/SimpleMessenger.o common.o +echotestclient: active/echotestclient.cc ${CC} ${CFLAGS} ${LIBS} $^ -o $@ -msgtestclient: active/msgtestclient.cc client.o osdc.o msg/SimpleMessenger.o common.o +msgtestclient: active/msgtestclient.o client.o osdc.o msg/SimpleMessenger.o common.o ${CC} ${CFLAGS} ${LIBS} $^ -o $@ libtrivialtask.so: active/trivial_task.cc client.o osdc.o msg/SimpleMessenger.o common.o @@ -176,6 +176,14 @@ libtrivialtask.so: active/trivial_task.cc client.o osdc.o msg/SimpleMessenger.o +# IPC interface +ipc_server: ceph_ipc/ipc_server.cc client.o osdc.o msg/SimpleMessenger.o common.o + ${CC} ${CFLAGS} ${LIBS} $^ -o $@ + +ipc_testclient: ceph_ipc/ipc_testclient.cc ceph_ipc/ipc_client.o + ${CC} ${CFLAGS} ${LIBS} $^ -o $@ + + # fake* fakefuse: fakefuse.cc mon.o mds.o client.o osd.o osdc.o ebofs.o client/fuse.o client/fuse_ll.o msg/FakeMessenger.o common.o ${CC} -pg ${CFLAGS} ${LIBS} -lfuse $^ -o $@ diff --git a/branches/sage/mds/active/activetaskd b/branches/sage/mds/active/activetaskd deleted file mode 100755 index 7347ab69ce8d8e2b97bcf15121989251982c031e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10800 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 IQ*qwuuc-;J`v3p{ diff --git a/branches/sage/mds/active/common.h b/branches/sage/mds/active/common.h index 36f862b1c48cb..bf2c73ca4052a 100644 --- a/branches/sage/mds/active/common.h +++ b/branches/sage/mds/active/common.h @@ -18,7 +18,6 @@ - #define CMDLENGTH 10 #define CMDCOUNT 11 diff --git a/branches/sage/mds/active/echotestclient b/branches/sage/mds/active/echotestclient deleted file mode 100755 index 60c44bd280d7efb22fda008300b88d6a31ddae9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10216 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 extents; off_t offset = 0; client->enumerate_layout(fh, extents, filesize, offset); + client->close(fh); list::iterator i; map::iterator j; @@ -90,7 +90,7 @@ int main(int argc, char* argv[]) { } // close the client - we're done with it - client->shutdown(); + kill_client(client); // sanity check: display the splits cerr << "Listing original splits:" << endl; @@ -154,6 +154,7 @@ int main(int argc, char* argv[]) { ++pending_tasks; } + cerr << "Waiting for " << pending_tasks << " tasks to return..." << endl; // wait for all the tasks to finish while (pending_tasks > 0) { diff --git a/branches/sage/mds/active/utility.h b/branches/sage/mds/active/utility.h index 6e219d71edf76..a76371abe78b5 100644 --- a/branches/sage/mds/active/utility.h +++ b/branches/sage/mds/active/utility.h @@ -9,24 +9,17 @@ #include "config.h" #include "common/Timer.h" #include "msg/SimpleMessenger.h" - +#include "socket_utility.h" Client* startCephClient(); void kill_client(Client* client); -int readline(int fd, char *ptr, int maxlen); -int writen(int fd, const char *ptr, int nbytes); int send_msg_header(int fd, int header_ID); int readmsgtype(int fd); bool check_footer(int fd); int send_msg_header(int fd, int header_ID); int send_msg_footer(int fd); -int read_positive_int(int fd); -long read_long(int fd); -string read_string(int fd, string *buf); -bool write_positive_int(int fd, int value); -off_t read_off_t(int fd); /* * Fires up a Ceph client and returns a pointer to it. @@ -47,8 +40,8 @@ Client* startCephClient() g_conf.use_abspaths = true; // load monmap - MonMap monmap; - int r = monmap.read(".ceph_monmap"); + MonMap* monmap = new MonMap(); + int r = monmap->read(".ceph_monmap"); if (r < 0) { dout(0) << "ActiveMaster: could not find .ceph_monmap" << endl; return 0; @@ -60,7 +53,7 @@ Client* startCephClient() // start client Client *client; - client = new Client(rank.register_entity(MSG_ADDR_CLIENT_NEW), &monmap); + client = new Client(rank.register_entity(MSG_ADDR_CLIENT_NEW), monmap); client->init(); // mount @@ -80,78 +73,6 @@ void kill_client (Client * client) } -// Read n bytes from a descriptor. -int readn(int fd, char * ptr, int nbytes) -{ - int nleft, nread; - - nleft = nbytes; - while (nleft > 0) { - nread = read(fd, ptr, nleft); - if (nread < 0) - return nread; // error - else if (nread == 0) - break; - - nleft -= nread; - ptr += nread; - } - return (nbytes - nleft); -} - -// Read a line from the socket. This is horrifically slow, as -// it goes one character at a time to catch the newline. - -int readline(int fd, char *ptr, int maxlen) { - - int n, rc; - char c; - - for (n = 1; n < maxlen; ++n) { - if ( (rc = read(fd, &c, 1)) == 1) { - *ptr++ = c; - if (c == '\n') - break; - } - else if (rc == 0) { - if (n == 1) - return 0; // EOF, no data - else - break; // EOF, data read - } - else - return -1; // error - - } - - // null-terminate the string and return the number of bytes read - *ptr = 0; - return n; -} - -// write n bytes to a stream file descriptor. - -int writen(int fd, const char *ptr, int nbytes) { - int nleft, nwritten; - - nleft = nbytes; - - // write until everything's sent - while (nleft > 0) { - nwritten = write(fd, ptr, nleft); - if (nwritten <= 0) { - cerr << "writen: error writing " << nbytes << - "bytes to file descriptor " << fd << endl; - return nwritten; //error - } - nleft -= nwritten; - ptr += nwritten; - } - assert (0 == nleft); - return (nbytes - nleft); -} - - // read a message type from the socket, and print it. @@ -211,143 +132,6 @@ bool check_footer(int fd) { } -// Attempt to read a positive signed integer off the given stream. -// This function assumes that the sender and receiver use the same -// integer size. If this is false, weird stuff will happen. -int read_positive_int(int fd) { - - char buf[sizeof(int)]; - int rc = read(fd, &buf, sizeof(int)); - if (rc != sizeof(int)) { - cerr << "in read_positive_int: read error: result is " << rc << - ". Exiting process. " << endl; - exit(-1); - } - return *((int*)buf); -} - -long read_long(int fd) { - char buf[sizeof(long)]; - int rc = read(fd, &buf, sizeof(long)); - if (rc != sizeof(long)) { - cerr << "in read_long: read error: result is " << rc << - ". Exiting process. " << endl; - exit(-1); - } - return *((long*)buf); -} - - -off_t read_off_t(int fd) { - char buf[sizeof(off_t)]; - int rc = read(fd, &buf, sizeof(off_t)); - if (rc != sizeof(off_t)) { - cerr << "in read_off_t: read error: result is " << rc << - ". Exiting process. " << endl; - exit(-1); - } - return *((off_t*)buf); -} - -size_t read_size_t(int fd) { - char buf[sizeof(size_t)]; - int rc = read(fd, &buf, sizeof(size_t)); - if (rc != sizeof(size_t)) { - cerr << "in read_size_t: read error: result is " << rc << - ". Exiting process. " << endl; - exit(-1); - } - return *((size_t*)buf); -} - - - - -// attempt to write an integer to the given -// file descriptor. -bool write_positive_int(int fd, int value) { - - char* buf = (char*)(&(value)); - int rc = writen(fd, buf, sizeof(int)); - - if (rc != sizeof(int)) { - cerr << "in write_positive_int: write failed, result is " << rc << - ", sizeof(int) is " << sizeof(int) << ". Exiting process." << endl; - exit(-1); - } - - return true; -} - -// attempt to write a long integer to the given -// file descriptor. -bool write_long(int fd, long value) { - - char* buf = (char*)(&(value)); - int rc = writen(fd, buf, sizeof(long)); - - if (rc != sizeof(long)) { - cerr << "in write_long: write failed, result is " << rc << - ", sizeof(long) is " << sizeof(long) << ". Exiting process." << endl; - exit(-1); - } - - return true; -} - - -// attempt to write a long integer to the given -// file descriptor. -bool write_off_t(int fd, off_t value) { - - char* buf = (char*)(&(value)); - int rc = writen(fd, buf, sizeof(off_t)); - - if (rc != sizeof(off_t)) { - cerr << "in writeoff_t: write failed, result is " << rc << - ", sizeof(off_t) is " << sizeof(off_t) << ". Exiting process." << endl; - exit(-1); - } - - return true; -} - - - - -// read a string from the given file descriptor. -// The expected format is an int n denoting the -// length of the string, followed by a series of n -// bytes, not null-terminated. -void read_string(int fd, char* buf) { - - // get the size of the string - int size = read_positive_int(fd); - if (size < 1) { - cerr << "Error in read_string: invalid string size of " << size << endl; - exit(-1); - } - if (size > MAX_STRING_SIZE) { - cerr << "Error in read_string: string size of " << size << "is more than maximum of" - << MAX_STRING_SIZE << endl; - exit(-1); - } - - // read the string - int result = readn(fd, buf, size); - if (result != size) { - cerr << "Error in read_string: attempted read size was " << size << - ", result was " << result << endl; - exit(-1); - } - // null-terminate - buf[size] = 0; - - cerr << "in read_string: read string \"" << buf << "\" of size " << size << endl; - -} - - // send a fixed-length message header // given the header's ID. int send_msg_header(int fd, int header_ID) { @@ -383,22 +167,6 @@ int send_msg_footer(int fd) { } -// Writes a string to a stream file descriptor. -// Dies loudly and horribly on any error. -bool write_string(int fd, const char* buf) { - - int length = strlen(buf); - assert (length >= 0); - int result = writen(fd, buf, length); - if (result != length) { - cerr << "Error in write_string: string length is " << length << - ", result is " << result << endl; - exit(-1); - } - - return true; -} - // Copy a given extent of a Ceph file to the local disk. // Requires a running Ceph client. -- 2.39.5