]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
libceph: move to main dir with other main .cc files
authorSage Weil <sage@newdream.net>
Thu, 8 Oct 2009 17:35:43 +0000 (10:35 -0700)
committerSage Weil <sage@newdream.net>
Thu, 8 Oct 2009 17:42:11 +0000 (10:42 -0700)
src/Makefile.am
src/client/libceph.cc [deleted file]
src/libceph.cc [new file with mode: 0644]
src/messages/MMonSubscribeAck.h

index 100fadbe7ea1ddf5afc6c7d00c44260c1978b376..19e6168934c6d4ffb9a29e5fe1eb61b1df646752 100644 (file)
@@ -99,7 +99,7 @@ lib_LTLIBRARIES =
 
 # libceph
 libceph_la_SOURCES = \
-       client/libceph.cc \
+       libceph.cc \
        client/Client.cc \
        msg/SimpleMessenger.cc \
        ${libcommon_a_SOURCES} \
diff --git a/src/client/libceph.cc b/src/client/libceph.cc
deleted file mode 100644 (file)
index 6c56922..0000000
+++ /dev/null
@@ -1,382 +0,0 @@
-#include "libceph.h"
-
-#include <string.h>
-#include <fcntl.h>
-#include <iostream>
-
-#include "common/Mutex.h"
-#include "messages/MMonMap.h"
-#include "common/common_init.h"
-#include "msg/SimpleMessenger.h"
-#include "Client.h"
-
-/* ************* ************* ************* *************
- * C interface
- */
-
-extern "C" const char *ceph_version(int *major, int *minor, int *patch)
-{
-  if (major)
-    *major = CEPH_VERSION_MAJOR;
-  if (minor)
-    *minor = CEPH_VERSION_MINOR;
-  if (patch)
-    *patch = CEPH_VERSION_PATCH;
-  return CEPH_VERSION;
-}
-
-static Mutex ceph_client_mutex("ceph_client");
-static int client_initialized = 0;
-static int client_mount = 0;
-static Client *client = NULL;
-static MonClient *monclient = NULL;
-static SimpleMessenger *rank = NULL;
-
-extern "C" int ceph_initialize(int argc, const char **argv)
-{
-  ceph_client_mutex.Lock();
-  if (!client_initialized) {
-    //create everything to start a client
-    vector<const char*> args;
-    argv_to_vec(argc, argv, args);
-    common_init(args, "libceph", false);
-    if (g_conf.clock_tare) g_clock.tare();
-    //monmap
-    monclient = new MonClient();
-    if (monclient->build_initial_monmap() < 0) {
-      delete monclient;
-      return -1; //error!
-    }
-    //network connection
-    rank = new SimpleMessenger();
-
-    //at last the client
-    client = new Client(rank->register_entity(entity_name_t::CLIENT()), monclient);
-
-    rank->start();
-    rank->set_policy(entity_name_t::TYPE_MON, SimpleMessenger::Policy::lossy_fast_fail());
-    rank->set_policy(entity_name_t::TYPE_MDS, SimpleMessenger::Policy::lossless());
-    rank->set_policy(entity_name_t::TYPE_OSD, SimpleMessenger::Policy::lossy_fast_fail());
-
-    client->init();
-  }
-  ++client_initialized;
-  ceph_client_mutex.Unlock();
-  return 0;
-}
-
-extern "C" void ceph_deinitialize()
-{
-  ceph_client_mutex.Lock();
-  --client_initialized;
-  if(!client_initialized) {
-    client->unmount();
-    client->shutdown();
-    delete client;
-    rank->wait();
-    delete rank;
-    delete monclient;
-  }
-  ceph_client_mutex.Unlock();
-}
-
-extern "C" int ceph_mount()
-{
-  int ret;
-  Mutex::Locker lock(ceph_client_mutex);
-  if(!client_mount) {
-     ret = client->mount();
-     if (ret!=0)
-       return ret;
-  }
-  ++client_mount;
-  return 0;
-}
-
-extern "C" int ceph_umount()
-{
-  Mutex::Locker lock(ceph_client_mutex);
-  --client_mount;
-  if (!client_mount)
-    return client->unmount();
-  return 0;
-}
-
-extern "C" int ceph_statfs(const char *path, struct statvfs *stbuf)
-{
-  return client->statfs(path, stbuf);
-}
-
-extern "C" int ceph_get_local_osd()
-{
-  return client->get_local_osd();
-}
-
-extern "C" int ceph_getcwd(char *buf, int buflen)
-{
-  string cwd;
-  client->getcwd(cwd);
-  int size = cwd.size()+1; //need space for null character
-  if (size > buflen) {
-    if (buflen == 0) return size;
-    else return -ERANGE;
-  }
-  size = cwd.copy(buf, size);
-  buf[size] = '\0'; //fill in null character
-  return 0;
-}
-
-extern "C" int ceph_chdir (const char *s)
-{
-  return client->chdir(s);
-}
-
-/*if we want to extern C this, we need to convert it to const char*,
-which will mean storing it somewhere or else making the caller
-responsible for delete-ing a c-string they didn't create*/
-void ceph_getcwd(string& cwd)
-{
-  client->getcwd(cwd);
-}
-
-extern "C" int ceph_opendir(const char *name, DIR **dirpp)
-{
-  return client->opendir(name, dirpp);
-}
-
-extern "C" int ceph_closedir(DIR *dirp)
-{
-  return client->closedir(dirp);
-}
-
-extern "C" int ceph_readdir_r(DIR *dirp, struct dirent *de)
-{
-  return client->readdir_r(dirp, de);
-}
-
-extern "C" int ceph_readdirplus_r(DIR *dirp, struct dirent *de, struct stat *st, int *stmask)
-{
-  return client->readdirplus_r(dirp, de, st, stmask);
-}
-
-extern "C" int ceph_getdents(DIR *dirp, char *buf, int buflen)
-{
-  return client->getdents(dirp, buf, buflen);
-}
-
-extern "C" int ceph_getdnames(DIR *dirp, char *buf, int buflen)
-{
-  return client->getdnames(dirp, buf, buflen);
-}
-
-extern "C" void ceph_rewinddir(DIR *dirp)
-{
-  client->rewinddir(dirp);
-}
-
-extern "C" loff_t ceph_telldir(DIR *dirp)
-{
-  return client->telldir(dirp);
-}
-
-extern "C" void ceph_seekdir(DIR *dirp, loff_t offset)
-{
-  client->seekdir(dirp, offset);
-}
-
-extern "C" int ceph_link (const char *existing, const char *newname)
-{
-  return client->link(existing, newname);
-}
-
-extern "C" int ceph_unlink (const char *path)
-{
-  return client->unlink(path);
-}
-
-extern "C" int ceph_rename(const char *from, const char *to)
-{
-  return client->rename(from, to);
-}
-
-// dirs
-extern "C" int ceph_mkdir(const char *path, mode_t mode)
-{
-  return client->mkdir(path, mode);
-}
-
-extern "C" int ceph_mkdirs(const char *path, mode_t mode)
-{
-  return client->mkdirs(path, mode);
-}
-
-extern "C" int ceph_rmdir(const char *path)
-{
-  return client->rmdir(path);
-}
-
-// symlinks
-extern "C" int ceph_readlink(const char *path, char *buf, loff_t size)
-{
-  return client->readlink(path, buf, size);
-}
-
-extern "C" int ceph_symlink(const char *existing, const char *newname)
-{
-  return client->symlink(existing, newname);
-}
-
-// inode stuff
-extern "C" int ceph_lstat(const char *path, struct stat *stbuf)
-{
-  return client->lstat(path, stbuf);
-}
-
-extern "C" int ceph_lstat_precise(const char *path, stat_precise *stbuf)
-{
-  return client->lstat_precise(path, (Client::stat_precise*)stbuf);
-}
-
-extern "C" int ceph_setattr(const char *relpath, struct stat *attr, int mask)
-{
-  Client::stat_precise p_attr = Client::stat_precise(*attr);
-  return client->setattr(relpath, &p_attr, mask);
-}
-
-extern "C" int ceph_setattr_precise(const char *relpath,
-                                   struct stat_precise *attr, int mask) {
-  return client->setattr(relpath, (Client::stat_precise*)attr, mask);
-}
-
-extern "C" int ceph_chmod(const char *path, mode_t mode)
-{
-  return client->chmod(path, mode);
-}
-extern "C" int ceph_chown(const char *path, uid_t uid, gid_t gid)
-{
-  return client->chown(path, uid, gid);
-}
-
-extern "C" int ceph_utime(const char *path, struct utimbuf *buf)
-{
-  return client->utime(path, buf);
-}
-
-extern "C" int ceph_truncate(const char *path, loff_t size)
-{
-  return client->truncate(path, size);
-}
-
-// file ops
-extern "C" int ceph_mknod(const char *path, mode_t mode, dev_t rdev)
-{
-  return client->mknod(path, mode, rdev);
-}
-
-extern "C" int ceph_open(const char *path, int flags, mode_t mode)
-{
-  return client->open(path, flags, mode);
-}
-
-extern "C" int ceph_close(int fd)
-{
-  return client->close(fd);
-}
-
-extern "C" loff_t ceph_lseek(int fd, loff_t offset, int whence)
-{
-  return client->lseek(fd, offset, whence);
-}
-
-extern "C" int ceph_read(int fd, char *buf, loff_t size, loff_t offset)
-{
-  return client->read(fd, buf, size, offset);
-}
-
-extern "C" int ceph_write(int fd, const char *buf, loff_t size, loff_t offset)
-{
-  return client->write(fd, buf, size, offset);
-}
-
-extern "C" int ceph_ftruncate(int fd, loff_t size)
-{
-  return client->ftruncate(fd, size);
-}
-
-extern "C" int ceph_fsync(int fd, bool syncdataonly)
-{
-  return client->fsync(fd, syncdataonly);
-}
-
-extern "C" int ceph_fstat(int fd, struct stat *stbuf)
-{
-  return client->fstat(fd, stbuf);
-}
-
-extern "C" int ceph_sync_fs()
-{
-  return client->sync_fs();
-}
-
-extern "C" int ceph_get_file_stripe_unit(int fh)
-{
-  return client->get_file_stripe_unit(fh);
-}
-
-extern "C" int ceph_get_file_replication(const char *path) {
-  int fd = client->open(path, O_RDONLY);
-  int rep = client->get_file_replication(fd);
-  client->close(fd);
-  return rep;
-}
-
-extern "C" int ceph_get_default_preferred_pg(int fd)
-{
-  return client->get_default_preferred_pg(fd);
-}
-
-extern "C" int ceph_set_default_file_stripe_unit(int stripe)
-{
-  client->set_default_file_stripe_unit(stripe);
-  return 0;
-}
-
-extern "C" int ceph_set_default_file_stripe_count(int count)
-{
-  client->set_default_file_stripe_unit(count);
-  return 0;
-}
-
-extern "C" int ceph_set_default_object_size(int size)
-{
-  client->set_default_object_size(size);
-  return 0;
-}
-
-extern "C" int ceph_set_default_file_replication(int replication)
-{
-  client->set_default_file_replication(replication);
-  return 0;
-}
-
-extern "C" int ceph_set_default_preferred_pg(int pg)
-{
-  client->set_default_preferred_pg(pg);
-  return 0;
-}
-
-extern "C" int ceph_get_file_stripe_address(int fh, loff_t offset, char *buf, int buflen)
-{
-  string address;
-  int r = client->get_file_stripe_address(fh, offset, address);
-  if (r != 0) return r; //at time of writing, method ONLY returns
-  // 0 or -EINVAL if there are no known osds
-  int len = address.size()+1;
-  if (len > buflen) {
-    if (buflen == 0) return len;
-    else return -ERANGE;
-  }
-  len = address.copy(buf, len, 0);
-  buf[len] = '\0'; // write a null char to terminate c-style string
-  return 0;
-}
diff --git a/src/libceph.cc b/src/libceph.cc
new file mode 100644 (file)
index 0000000..678c025
--- /dev/null
@@ -0,0 +1,382 @@
+#include "client/libceph.h"
+
+#include <string.h>
+#include <fcntl.h>
+#include <iostream>
+
+#include "common/Mutex.h"
+#include "messages/MMonMap.h"
+#include "common/common_init.h"
+#include "msg/SimpleMessenger.h"
+#include "client/Client.h"
+
+/* ************* ************* ************* *************
+ * C interface
+ */
+
+extern "C" const char *ceph_version(int *major, int *minor, int *patch)
+{
+  if (major)
+    *major = CEPH_VERSION_MAJOR;
+  if (minor)
+    *minor = CEPH_VERSION_MINOR;
+  if (patch)
+    *patch = CEPH_VERSION_PATCH;
+  return CEPH_VERSION;
+}
+
+static Mutex ceph_client_mutex("ceph_client");
+static int client_initialized = 0;
+static int client_mount = 0;
+static Client *client = NULL;
+static MonClient *monclient = NULL;
+static SimpleMessenger *rank = NULL;
+
+extern "C" int ceph_initialize(int argc, const char **argv)
+{
+  ceph_client_mutex.Lock();
+  if (!client_initialized) {
+    //create everything to start a client
+    vector<const char*> args;
+    argv_to_vec(argc, argv, args);
+    common_init(args, "libceph", false);
+    if (g_conf.clock_tare) g_clock.tare();
+    //monmap
+    monclient = new MonClient();
+    if (monclient->build_initial_monmap() < 0) {
+      delete monclient;
+      return -1; //error!
+    }
+    //network connection
+    rank = new SimpleMessenger();
+
+    //at last the client
+    client = new Client(rank->register_entity(entity_name_t::CLIENT()), monclient);
+
+    rank->start();
+    rank->set_policy(entity_name_t::TYPE_MON, SimpleMessenger::Policy::lossy_fast_fail());
+    rank->set_policy(entity_name_t::TYPE_MDS, SimpleMessenger::Policy::lossless());
+    rank->set_policy(entity_name_t::TYPE_OSD, SimpleMessenger::Policy::lossy_fast_fail());
+
+    client->init();
+  }
+  ++client_initialized;
+  ceph_client_mutex.Unlock();
+  return 0;
+}
+
+extern "C" void ceph_deinitialize()
+{
+  ceph_client_mutex.Lock();
+  --client_initialized;
+  if(!client_initialized) {
+    client->unmount();
+    client->shutdown();
+    delete client;
+    rank->wait();
+    delete rank;
+    delete monclient;
+  }
+  ceph_client_mutex.Unlock();
+}
+
+extern "C" int ceph_mount()
+{
+  int ret;
+  Mutex::Locker lock(ceph_client_mutex);
+  if(!client_mount) {
+     ret = client->mount();
+     if (ret!=0)
+       return ret;
+  }
+  ++client_mount;
+  return 0;
+}
+
+extern "C" int ceph_umount()
+{
+  Mutex::Locker lock(ceph_client_mutex);
+  --client_mount;
+  if (!client_mount)
+    return client->unmount();
+  return 0;
+}
+
+extern "C" int ceph_statfs(const char *path, struct statvfs *stbuf)
+{
+  return client->statfs(path, stbuf);
+}
+
+extern "C" int ceph_get_local_osd()
+{
+  return client->get_local_osd();
+}
+
+extern "C" int ceph_getcwd(char *buf, int buflen)
+{
+  string cwd;
+  client->getcwd(cwd);
+  int size = cwd.size()+1; //need space for null character
+  if (size > buflen) {
+    if (buflen == 0) return size;
+    else return -ERANGE;
+  }
+  size = cwd.copy(buf, size);
+  buf[size] = '\0'; //fill in null character
+  return 0;
+}
+
+extern "C" int ceph_chdir (const char *s)
+{
+  return client->chdir(s);
+}
+
+/*if we want to extern C this, we need to convert it to const char*,
+which will mean storing it somewhere or else making the caller
+responsible for delete-ing a c-string they didn't create*/
+void ceph_getcwd(string& cwd)
+{
+  client->getcwd(cwd);
+}
+
+extern "C" int ceph_opendir(const char *name, DIR **dirpp)
+{
+  return client->opendir(name, dirpp);
+}
+
+extern "C" int ceph_closedir(DIR *dirp)
+{
+  return client->closedir(dirp);
+}
+
+extern "C" int ceph_readdir_r(DIR *dirp, struct dirent *de)
+{
+  return client->readdir_r(dirp, de);
+}
+
+extern "C" int ceph_readdirplus_r(DIR *dirp, struct dirent *de, struct stat *st, int *stmask)
+{
+  return client->readdirplus_r(dirp, de, st, stmask);
+}
+
+extern "C" int ceph_getdents(DIR *dirp, char *buf, int buflen)
+{
+  return client->getdents(dirp, buf, buflen);
+}
+
+extern "C" int ceph_getdnames(DIR *dirp, char *buf, int buflen)
+{
+  return client->getdnames(dirp, buf, buflen);
+}
+
+extern "C" void ceph_rewinddir(DIR *dirp)
+{
+  client->rewinddir(dirp);
+}
+
+extern "C" loff_t ceph_telldir(DIR *dirp)
+{
+  return client->telldir(dirp);
+}
+
+extern "C" void ceph_seekdir(DIR *dirp, loff_t offset)
+{
+  client->seekdir(dirp, offset);
+}
+
+extern "C" int ceph_link (const char *existing, const char *newname)
+{
+  return client->link(existing, newname);
+}
+
+extern "C" int ceph_unlink (const char *path)
+{
+  return client->unlink(path);
+}
+
+extern "C" int ceph_rename(const char *from, const char *to)
+{
+  return client->rename(from, to);
+}
+
+// dirs
+extern "C" int ceph_mkdir(const char *path, mode_t mode)
+{
+  return client->mkdir(path, mode);
+}
+
+extern "C" int ceph_mkdirs(const char *path, mode_t mode)
+{
+  return client->mkdirs(path, mode);
+}
+
+extern "C" int ceph_rmdir(const char *path)
+{
+  return client->rmdir(path);
+}
+
+// symlinks
+extern "C" int ceph_readlink(const char *path, char *buf, loff_t size)
+{
+  return client->readlink(path, buf, size);
+}
+
+extern "C" int ceph_symlink(const char *existing, const char *newname)
+{
+  return client->symlink(existing, newname);
+}
+
+// inode stuff
+extern "C" int ceph_lstat(const char *path, struct stat *stbuf)
+{
+  return client->lstat(path, stbuf);
+}
+
+extern "C" int ceph_lstat_precise(const char *path, stat_precise *stbuf)
+{
+  return client->lstat_precise(path, (Client::stat_precise*)stbuf);
+}
+
+extern "C" int ceph_setattr(const char *relpath, struct stat *attr, int mask)
+{
+  Client::stat_precise p_attr = Client::stat_precise(*attr);
+  return client->setattr(relpath, &p_attr, mask);
+}
+
+extern "C" int ceph_setattr_precise(const char *relpath,
+                                   struct stat_precise *attr, int mask) {
+  return client->setattr(relpath, (Client::stat_precise*)attr, mask);
+}
+
+extern "C" int ceph_chmod(const char *path, mode_t mode)
+{
+  return client->chmod(path, mode);
+}
+extern "C" int ceph_chown(const char *path, uid_t uid, gid_t gid)
+{
+  return client->chown(path, uid, gid);
+}
+
+extern "C" int ceph_utime(const char *path, struct utimbuf *buf)
+{
+  return client->utime(path, buf);
+}
+
+extern "C" int ceph_truncate(const char *path, loff_t size)
+{
+  return client->truncate(path, size);
+}
+
+// file ops
+extern "C" int ceph_mknod(const char *path, mode_t mode, dev_t rdev)
+{
+  return client->mknod(path, mode, rdev);
+}
+
+extern "C" int ceph_open(const char *path, int flags, mode_t mode)
+{
+  return client->open(path, flags, mode);
+}
+
+extern "C" int ceph_close(int fd)
+{
+  return client->close(fd);
+}
+
+extern "C" loff_t ceph_lseek(int fd, loff_t offset, int whence)
+{
+  return client->lseek(fd, offset, whence);
+}
+
+extern "C" int ceph_read(int fd, char *buf, loff_t size, loff_t offset)
+{
+  return client->read(fd, buf, size, offset);
+}
+
+extern "C" int ceph_write(int fd, const char *buf, loff_t size, loff_t offset)
+{
+  return client->write(fd, buf, size, offset);
+}
+
+extern "C" int ceph_ftruncate(int fd, loff_t size)
+{
+  return client->ftruncate(fd, size);
+}
+
+extern "C" int ceph_fsync(int fd, bool syncdataonly)
+{
+  return client->fsync(fd, syncdataonly);
+}
+
+extern "C" int ceph_fstat(int fd, struct stat *stbuf)
+{
+  return client->fstat(fd, stbuf);
+}
+
+extern "C" int ceph_sync_fs()
+{
+  return client->sync_fs();
+}
+
+extern "C" int ceph_get_file_stripe_unit(int fh)
+{
+  return client->get_file_stripe_unit(fh);
+}
+
+extern "C" int ceph_get_file_replication(const char *path) {
+  int fd = client->open(path, O_RDONLY);
+  int rep = client->get_file_replication(fd);
+  client->close(fd);
+  return rep;
+}
+
+extern "C" int ceph_get_default_preferred_pg(int fd)
+{
+  return client->get_default_preferred_pg(fd);
+}
+
+extern "C" int ceph_set_default_file_stripe_unit(int stripe)
+{
+  client->set_default_file_stripe_unit(stripe);
+  return 0;
+}
+
+extern "C" int ceph_set_default_file_stripe_count(int count)
+{
+  client->set_default_file_stripe_unit(count);
+  return 0;
+}
+
+extern "C" int ceph_set_default_object_size(int size)
+{
+  client->set_default_object_size(size);
+  return 0;
+}
+
+extern "C" int ceph_set_default_file_replication(int replication)
+{
+  client->set_default_file_replication(replication);
+  return 0;
+}
+
+extern "C" int ceph_set_default_preferred_pg(int pg)
+{
+  client->set_default_preferred_pg(pg);
+  return 0;
+}
+
+extern "C" int ceph_get_file_stripe_address(int fh, loff_t offset, char *buf, int buflen)
+{
+  string address;
+  int r = client->get_file_stripe_address(fh, offset, address);
+  if (r != 0) return r; //at time of writing, method ONLY returns
+  // 0 or -EINVAL if there are no known osds
+  int len = address.size()+1;
+  if (len > buflen) {
+    if (buflen == 0) return len;
+    else return -ERANGE;
+  }
+  len = address.copy(buf, len, 0);
+  buf[len] = '\0'; // write a null char to terminate c-style string
+  return 0;
+}
index ab8889bc3b98f3951d813c086b3146aed8562e94..6c4df2e74f8f7dac2c8ae9e23705ef911fd0c29f 100644 (file)
@@ -19,6 +19,7 @@
 
 struct MMonSubscribeAck : public Message {
   __u32 interval;
+  ceph_fsid fsid;
   
   MMonSubscribeAck(int i = 0) : Message(CEPH_MSG_MON_SUBSCRIBE_ACK),
                                interval(i) {}
@@ -31,9 +32,12 @@ struct MMonSubscribeAck : public Message {
   void decode_payload() {
     bufferlist::iterator p = payload.begin();
     ::decode(interval, p);
+    if (!p.end())
+      ::decode(fsid, p);
   }
   void encode_payload() {
     ::encode(interval, payload);
+    ::encode(fsid, payload);
   }
 };