]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
automake cleanup: moving code away from include to common
authorRoald J. van Loon <roaldvanloon@gmail.com>
Sat, 7 Sep 2013 13:24:00 +0000 (15:24 +0200)
committerRoald J. van Loon <roaldvanloon@gmail.com>
Sat, 7 Sep 2013 20:41:10 +0000 (22:41 +0200)
Includes should only be includes. Moving C code to libcommon.

Signed-off-by: Roald J. van Loon <roaldvanloon@gmail.com>
src/Makefile.am
src/common/addr_parsing.c [new file with mode: 0644]
src/common/ceph_frag.cc [new file with mode: 0644]
src/common/ceph_fs.cc [new file with mode: 0644]
src/common/ceph_hash.cc [new file with mode: 0644]
src/common/ceph_strings.cc [new file with mode: 0644]
src/include/addr_parsing.c [deleted file]
src/include/ceph_frag.cc [deleted file]
src/include/ceph_fs.cc [deleted file]
src/include/ceph_hash.cc [deleted file]
src/include/ceph_strings.cc [deleted file]

index 9380a8ed8cf894f1e27712e4b03218d659779beb..7513ed85085de1072da034884180c2954c565d1e 100644 (file)
@@ -162,7 +162,7 @@ ceph_dencoder_LDADD = $(LIBGLOBAL_LDA) libcls_lock_client.a \
                          libosd.a libmds.a libosdc.la $(LIBOS_LDA) libmon.a
 bin_PROGRAMS += ceph-dencoder
 
-mount_ceph_SOURCES = mount/mount.ceph.c common/armor.c common/safe_io.c common/secret.c include/addr_parsing.c
+mount_ceph_SOURCES = mount/mount.ceph.c common/armor.c common/safe_io.c common/secret.c common/addr_parsing.c
 mount_ceph_LDADD = -lkeyutils
 if LINUX
 sbin_PROGRAMS += mount.ceph
@@ -1613,10 +1613,10 @@ libcommon_files = \
        common/Thread.cc \
        common/Formatter.cc \
        common/HeartbeatMap.cc \
-       include/ceph_fs.cc \
-       include/ceph_hash.cc \
-       include/ceph_strings.cc \
-       include/ceph_frag.cc \
+       common/ceph_fs.cc \
+       common/ceph_hash.cc \
+       common/ceph_strings.cc \
+       common/ceph_frag.cc \
        common/config.cc \
        common/utf8.c \
        common/mime.c \
@@ -1631,7 +1631,7 @@ libcommon_files = \
        common/ceph_json.cc \
        common/ipaddr.cc \
        common/pick_address.cc \
-       include/addr_parsing.c \
+       common/addr_parsing.c \
        $(crush_files)
 
 if WITH_PROFILER
diff --git a/src/common/addr_parsing.c b/src/common/addr_parsing.c
new file mode 100644 (file)
index 0000000..c01f817
--- /dev/null
@@ -0,0 +1,154 @@
+// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- 
+// vim: ts=8 sw=2 smarttab
+/*
+ * Ceph - scalable distributed file system
+ *
+ * Copyright (C) 2011 New Dream Network
+ *
+ * This is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software
+ * Foundation.  See file COPYING.
+ *
+ */
+
+#include <errno.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#if defined(__FreeBSD__)
+#include <sys/socket.h>
+#include <netinet/in.h>
+#endif
+#include <netdb.h>
+
+#define BUF_SIZE 128
+
+int safe_cat(char **pstr, int *plen, int pos, const char *str2)
+{
+  int len2 = strlen(str2);
+
+  //printf("safe_cat '%s' max %d pos %d '%s' len %d\n", *pstr, *plen, pos, str2, len2);
+  while (*plen < pos + len2 + 1) {
+    *plen += BUF_SIZE;
+    *pstr = (char *)realloc(*pstr, (size_t)*plen);
+
+    if (!*pstr) {
+      printf("Out of memory\n");
+      exit(1);
+    }
+    //printf("safe_cat '%s' max %d pos %d '%s' len %d\n", *pstr, *plen, pos, str2, len2);
+  }
+
+  strncpy((*pstr)+pos, str2, len2);
+  (*pstr)[pos+len2] = '\0';
+
+  return pos + len2;
+}
+
+char *resolve_addrs(const char *orig_str)
+{
+  char *new_str;
+  char *tok, *saveptr = NULL;
+  int len, pos;
+  char *buf = strdup(orig_str);
+  const char *delim = ",; ";
+
+  len = BUF_SIZE;
+  new_str = (char *)malloc(len);
+  if (!new_str) {
+    free(buf);
+    return NULL;
+  }
+
+  pos = 0;
+
+  tok = strtok_r(buf, delim, &saveptr);
+
+  while (tok) {
+    struct addrinfo hint;
+    struct addrinfo *res, *ores;
+    char *firstcolon, *lastcolon, *bracecolon;
+    int r;
+    int brackets = 0;
+
+    firstcolon = strchr(tok, ':');
+    lastcolon = strrchr(tok, ':');
+    bracecolon = strstr(tok, "]:");
+
+    char *port_str = 0;
+    if (firstcolon && firstcolon == lastcolon) {
+      /* host:port or a.b.c.d:port */
+      *firstcolon = 0;
+      port_str = firstcolon + 1;
+    } else if (bracecolon) {
+      /* [ipv6addr]:port */
+      port_str = bracecolon + 1;
+      *port_str = 0;
+      port_str++;
+    }
+    if (port_str && !*port_str)
+      port_str = NULL;
+
+    if (*tok == '[' &&
+       tok[strlen(tok)-1] == ']') {
+      tok[strlen(tok)-1] = 0;
+      tok++;
+      brackets = 1;
+    }
+
+    //printf("name '%s' port '%s'\n", tok, port_str);
+
+    memset(&hint, 0, sizeof(hint));
+    hint.ai_family = AF_UNSPEC;
+    hint.ai_socktype = SOCK_STREAM;
+    hint.ai_protocol = IPPROTO_TCP;
+
+    r = getaddrinfo(tok, port_str, &hint, &res);
+    if (r < 0) {
+      printf("server name not found: %s (%s)\n", tok,
+            gai_strerror(r));
+      free(new_str);
+      free(buf);
+      return 0;
+    }
+
+    /* build resolved addr list */
+    ores = res;
+    while (res) {
+      char host[40], port[40];
+      getnameinfo(res->ai_addr, res->ai_addrlen,
+                 host, sizeof(host),
+                 port, sizeof(port),
+                 NI_NUMERICSERV | NI_NUMERICHOST);
+      /*printf(" host %s port %s flags %d family %d socktype %d proto %d sanonname %s\n",
+       host, port,
+       res->ai_flags, res->ai_family, res->ai_socktype, res->ai_protocol,
+       res->ai_canonname);*/
+      if (res->ai_family == AF_INET6)
+       brackets = 1;  /* always surround ipv6 addrs with brackets */
+      if (brackets)
+       pos = safe_cat(&new_str, &len, pos, "[");
+      pos = safe_cat(&new_str, &len, pos, host);
+      if (brackets)
+       pos = safe_cat(&new_str, &len, pos, "]");
+      if (port_str) {
+       pos = safe_cat(&new_str, &len, pos, ":");
+       pos = safe_cat(&new_str, &len, pos, port);
+      }
+      res = res->ai_next;
+      if (res)
+       pos = safe_cat(&new_str, &len, pos, ",");
+    }
+    freeaddrinfo(ores);
+
+    tok = strtok_r(NULL, delim, &saveptr);
+    if (tok)
+      pos = safe_cat(&new_str, &len, pos, ",");
+
+  }
+
+  //printf("new_str is '%s'\n", new_str);
+  free(buf);
+  return new_str;
+}
diff --git a/src/common/ceph_frag.cc b/src/common/ceph_frag.cc
new file mode 100644 (file)
index 0000000..444b910
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Ceph 'frag' type
+ */
+#include "include/types.h"
+
+int ceph_frag_compare(__u32 a, __u32 b)
+{
+       unsigned va = ceph_frag_value(a);
+       unsigned vb = ceph_frag_value(b);
+       if (va < vb)
+               return -1;
+       if (va > vb)
+               return 1;
+       va = ceph_frag_bits(a);
+       vb = ceph_frag_bits(b);
+       if (va < vb)
+               return -1;
+       if (va > vb)
+               return 1;
+       return 0;
+}
diff --git a/src/common/ceph_fs.cc b/src/common/ceph_fs.cc
new file mode 100644 (file)
index 0000000..3172c57
--- /dev/null
@@ -0,0 +1,79 @@
+/*
+ * ceph_fs.cc - Some Ceph functions that are shared between kernel space and
+ * user space.
+ *
+ */
+
+#include <errno.h>
+
+/*
+ * Some non-inline ceph helpers
+ */
+#include "include/types.h"
+
+/*
+ * return true if @layout appears to be valid
+ */
+int ceph_file_layout_is_valid(const struct ceph_file_layout *layout)
+{
+       __u32 su = le32_to_cpu(layout->fl_stripe_unit);
+       __u32 sc = le32_to_cpu(layout->fl_stripe_count);
+       __u32 os = le32_to_cpu(layout->fl_object_size);
+
+       /* stripe unit, object size must be non-zero, 64k increment */
+       if (!su || (su & (CEPH_MIN_STRIPE_UNIT-1)))
+               return 0;
+       if (!os || (os & (CEPH_MIN_STRIPE_UNIT-1)))
+               return 0;
+       /* object size must be a multiple of stripe unit */
+       if (os < su || os % su)
+               return 0;
+       /* stripe count must be non-zero */
+       if (!sc)
+               return 0;
+       return 1;
+}
+
+
+int ceph_flags_to_mode(int flags)
+{
+       int mode = 0;
+
+#ifdef O_DIRECTORY  /* fixme */
+       if ((flags & O_DIRECTORY) == O_DIRECTORY)
+               return CEPH_FILE_MODE_PIN;
+#endif
+
+       switch (flags & O_ACCMODE) {
+       case O_WRONLY:
+               mode = CEPH_FILE_MODE_WR;
+               break;
+       case O_RDONLY:
+               mode = CEPH_FILE_MODE_RD;
+               break;
+       case O_RDWR:
+       case O_ACCMODE: /* this is what the VFS does */
+               mode = CEPH_FILE_MODE_RDWR;
+               break;
+       }
+
+       return mode;
+}
+
+int ceph_caps_for_mode(int mode)
+{
+       int caps = CEPH_CAP_PIN;
+
+       if (mode & CEPH_FILE_MODE_RD)
+               caps |= CEPH_CAP_FILE_SHARED |
+                       CEPH_CAP_FILE_RD | CEPH_CAP_FILE_CACHE;
+       if (mode & CEPH_FILE_MODE_WR)
+               caps |= CEPH_CAP_FILE_EXCL |
+                       CEPH_CAP_FILE_WR | CEPH_CAP_FILE_BUFFER |
+                       CEPH_CAP_AUTH_SHARED | CEPH_CAP_AUTH_EXCL |
+                       CEPH_CAP_XATTR_SHARED | CEPH_CAP_XATTR_EXCL;
+       if (mode & CEPH_FILE_MODE_LAZY)
+               caps |= CEPH_CAP_FILE_LAZYIO;
+
+       return caps;
+}
diff --git a/src/common/ceph_hash.cc b/src/common/ceph_hash.cc
new file mode 100644 (file)
index 0000000..c581806
--- /dev/null
@@ -0,0 +1,117 @@
+
+#include "include/types.h"
+
+/*
+ * Robert Jenkin's hash function.
+ * http://burtleburtle.net/bob/hash/evahash.html
+ * This is in the public domain.
+ */
+#define mix(a, b, c)                                           \
+       do {                                                    \
+               a = a - b;  a = a - c;  a = a ^ (c >> 13);      \
+               b = b - c;  b = b - a;  b = b ^ (a << 8);       \
+               c = c - a;  c = c - b;  c = c ^ (b >> 13);      \
+               a = a - b;  a = a - c;  a = a ^ (c >> 12);      \
+               b = b - c;  b = b - a;  b = b ^ (a << 16);      \
+               c = c - a;  c = c - b;  c = c ^ (b >> 5);       \
+               a = a - b;  a = a - c;  a = a ^ (c >> 3);       \
+               b = b - c;  b = b - a;  b = b ^ (a << 10);      \
+               c = c - a;  c = c - b;  c = c ^ (b >> 15);      \
+       } while (0)
+
+unsigned ceph_str_hash_rjenkins(const char *str, unsigned length)
+{
+       const unsigned char *k = (const unsigned char *)str;
+       __u32 a, b, c;  /* the internal state */
+       __u32 len;      /* how many key bytes still need mixing */
+
+       /* Set up the internal state */
+       len = length;
+       a = 0x9e3779b9;      /* the golden ratio; an arbitrary value */
+       b = a;
+       c = 0;               /* variable initialization of internal state */
+
+       /* handle most of the key */
+       while (len >= 12) {
+               a = a + (k[0] + ((__u32)k[1] << 8) + ((__u32)k[2] << 16) +
+                        ((__u32)k[3] << 24));
+               b = b + (k[4] + ((__u32)k[5] << 8) + ((__u32)k[6] << 16) +
+                        ((__u32)k[7] << 24));
+               c = c + (k[8] + ((__u32)k[9] << 8) + ((__u32)k[10] << 16) +
+                        ((__u32)k[11] << 24));
+               mix(a, b, c);
+               k = k + 12;
+               len = len - 12;
+       }
+
+       /* handle the last 11 bytes */
+       c = c + length;
+       switch (len) {            /* all the case statements fall through */
+       case 11:
+               c = c + ((__u32)k[10] << 24);
+       case 10:
+               c = c + ((__u32)k[9] << 16);
+       case 9:
+               c = c + ((__u32)k[8] << 8);
+               /* the first byte of c is reserved for the length */
+       case 8:
+               b = b + ((__u32)k[7] << 24);
+       case 7:
+               b = b + ((__u32)k[6] << 16);
+       case 6:
+               b = b + ((__u32)k[5] << 8);
+       case 5:
+               b = b + k[4];
+       case 4:
+               a = a + ((__u32)k[3] << 24);
+       case 3:
+               a = a + ((__u32)k[2] << 16);
+       case 2:
+               a = a + ((__u32)k[1] << 8);
+       case 1:
+               a = a + k[0];
+               /* case 0: nothing left to add */
+       }
+       mix(a, b, c);
+
+       return c;
+}
+
+/*
+ * linux dcache hash
+ */
+unsigned ceph_str_hash_linux(const char *str, unsigned length)
+{
+       unsigned long hash = 0;
+
+       while (length--) {
+               unsigned char c = *str++;
+               hash = (hash + (c << 4) + (c >> 4)) * 11;
+       }
+       return hash;
+}
+
+
+unsigned ceph_str_hash(int type, const char *s, unsigned len)
+{
+       switch (type) {
+       case CEPH_STR_HASH_LINUX:
+               return ceph_str_hash_linux(s, len);
+       case CEPH_STR_HASH_RJENKINS:
+               return ceph_str_hash_rjenkins(s, len);
+       default:
+               return -1;
+       }
+}
+
+const char *ceph_str_hash_name(int type)
+{
+       switch (type) {
+       case CEPH_STR_HASH_LINUX:
+               return "linux";
+       case CEPH_STR_HASH_RJENKINS:
+               return "rjenkins";
+       default:
+               return "unknown";
+       }
+}
diff --git a/src/common/ceph_strings.cc b/src/common/ceph_strings.cc
new file mode 100644 (file)
index 0000000..cd08083
--- /dev/null
@@ -0,0 +1,242 @@
+/*
+ * Ceph string constants
+ */
+#include "include/types.h"
+
+const char *ceph_entity_type_name(int type)
+{
+       switch (type) {
+       case CEPH_ENTITY_TYPE_MDS: return "mds";
+       case CEPH_ENTITY_TYPE_OSD: return "osd";
+       case CEPH_ENTITY_TYPE_MON: return "mon";
+       case CEPH_ENTITY_TYPE_CLIENT: return "client";
+       case CEPH_ENTITY_TYPE_AUTH: return "auth";
+       default: return "unknown";
+       }
+}
+
+const char *ceph_osd_op_name(int op)
+{
+       switch (op) {
+       case CEPH_OSD_OP_READ: return "read";
+       case CEPH_OSD_OP_STAT: return "stat";
+       case CEPH_OSD_OP_MAPEXT: return "mapext";
+       case CEPH_OSD_OP_SPARSE_READ: return "sparse-read";
+       case CEPH_OSD_OP_NOTIFY: return "notify";
+       case CEPH_OSD_OP_NOTIFY_ACK: return "notify-ack";
+       case CEPH_OSD_OP_ASSERT_VER: return "assert-version";
+       case CEPH_OSD_OP_LIST_WATCHERS: return "list-watchers";
+       case CEPH_OSD_OP_LIST_SNAPS: return "list-snaps";
+
+       case CEPH_OSD_OP_MASKTRUNC: return "masktrunc";
+
+       case CEPH_OSD_OP_CREATE: return "create";
+       case CEPH_OSD_OP_WRITE: return "write";
+       case CEPH_OSD_OP_DELETE: return "delete";
+       case CEPH_OSD_OP_TRUNCATE: return "truncate";
+       case CEPH_OSD_OP_ZERO: return "zero";
+       case CEPH_OSD_OP_WRITEFULL: return "writefull";
+       case CEPH_OSD_OP_ROLLBACK: return "rollback";
+
+       case CEPH_OSD_OP_APPEND: return "append";
+       case CEPH_OSD_OP_STARTSYNC: return "startsync";
+       case CEPH_OSD_OP_SETTRUNC: return "settrunc";
+       case CEPH_OSD_OP_TRIMTRUNC: return "trimtrunc";
+
+       case CEPH_OSD_OP_TMAPUP: return "tmapup";
+       case CEPH_OSD_OP_TMAPGET: return "tmapget";
+       case CEPH_OSD_OP_TMAPPUT: return "tmapput";
+       case CEPH_OSD_OP_WATCH: return "watch";
+
+       case CEPH_OSD_OP_COPY_GET: return "copy-get";
+       case CEPH_OSD_OP_COPY_FROM: return "copy-from";
+
+       case CEPH_OSD_OP_CLONERANGE: return "clonerange";
+       case CEPH_OSD_OP_ASSERT_SRC_VERSION: return "assert-src-version";
+       case CEPH_OSD_OP_SRC_CMPXATTR: return "src-cmpxattr";
+
+       case CEPH_OSD_OP_GETXATTR: return "getxattr";
+       case CEPH_OSD_OP_GETXATTRS: return "getxattrs";
+       case CEPH_OSD_OP_SETXATTR: return "setxattr";
+       case CEPH_OSD_OP_SETXATTRS: return "setxattrs";
+       case CEPH_OSD_OP_RESETXATTRS: return "resetxattrs";
+       case CEPH_OSD_OP_RMXATTR: return "rmxattr";
+       case CEPH_OSD_OP_CMPXATTR: return "cmpxattr";
+
+       case CEPH_OSD_OP_PULL: return "pull";
+       case CEPH_OSD_OP_PUSH: return "push";
+       case CEPH_OSD_OP_BALANCEREADS: return "balance-reads";
+       case CEPH_OSD_OP_UNBALANCEREADS: return "unbalance-reads";
+       case CEPH_OSD_OP_SCRUB: return "scrub";
+       case CEPH_OSD_OP_SCRUB_RESERVE: return "scrub-reserve";
+       case CEPH_OSD_OP_SCRUB_UNRESERVE: return "scrub-unreserve";
+       case CEPH_OSD_OP_SCRUB_STOP: return "scrub-stop";
+       case CEPH_OSD_OP_SCRUB_MAP: return "scrub-map";
+
+       case CEPH_OSD_OP_WRLOCK: return "wrlock";
+       case CEPH_OSD_OP_WRUNLOCK: return "wrunlock";
+       case CEPH_OSD_OP_RDLOCK: return "rdlock";
+       case CEPH_OSD_OP_RDUNLOCK: return "rdunlock";
+       case CEPH_OSD_OP_UPLOCK: return "uplock";
+       case CEPH_OSD_OP_DNLOCK: return "dnlock";
+
+       case CEPH_OSD_OP_CALL: return "call";
+
+       case CEPH_OSD_OP_PGLS: return "pgls";
+       case CEPH_OSD_OP_PGLS_FILTER: return "pgls-filter";
+       case CEPH_OSD_OP_OMAPGETKEYS: return "omap-get-keys";
+       case CEPH_OSD_OP_OMAPGETVALS: return "omap-get-vals";
+       case CEPH_OSD_OP_OMAPGETHEADER: return "omap-get-header";
+       case CEPH_OSD_OP_OMAPGETVALSBYKEYS: return "omap-get-vals-by-keys";
+       case CEPH_OSD_OP_OMAPSETVALS: return "omap-set-vals";
+       case CEPH_OSD_OP_OMAPSETHEADER: return "omap-set-header";
+       case CEPH_OSD_OP_OMAPCLEAR: return "omap-clear";
+       case CEPH_OSD_OP_OMAPRMKEYS: return "omap-rm-keys";
+       }
+       return "???";
+}
+
+const char *ceph_osd_state_name(int s)
+{
+       switch (s) {
+       case CEPH_OSD_EXISTS:
+               return "exists";
+       case CEPH_OSD_UP:
+               return "up";
+       case CEPH_OSD_AUTOOUT:
+               return "autoout";
+       case CEPH_OSD_NEW:
+               return "new";
+       default:
+               return "???";
+       }       
+}
+
+const char *ceph_mds_state_name(int s)
+{
+       switch (s) {
+               /* down and out */
+       case CEPH_MDS_STATE_DNE:        return "down:dne";
+       case CEPH_MDS_STATE_STOPPED:    return "down:stopped";
+               /* up and out */
+       case CEPH_MDS_STATE_BOOT:       return "up:boot";
+       case CEPH_MDS_STATE_STANDBY:    return "up:standby";
+       case CEPH_MDS_STATE_STANDBY_REPLAY:    return "up:standby-replay";
+       case CEPH_MDS_STATE_REPLAYONCE: return "up:oneshot-replay";
+       case CEPH_MDS_STATE_CREATING:   return "up:creating";
+       case CEPH_MDS_STATE_STARTING:   return "up:starting";
+               /* up and in */
+       case CEPH_MDS_STATE_REPLAY:     return "up:replay";
+       case CEPH_MDS_STATE_RESOLVE:    return "up:resolve";
+       case CEPH_MDS_STATE_RECONNECT:  return "up:reconnect";
+       case CEPH_MDS_STATE_REJOIN:     return "up:rejoin";
+       case CEPH_MDS_STATE_CLIENTREPLAY: return "up:clientreplay";
+       case CEPH_MDS_STATE_ACTIVE:     return "up:active";
+       case CEPH_MDS_STATE_STOPPING:   return "up:stopping";
+       }
+       return "???";
+}
+
+const char *ceph_session_op_name(int op)
+{
+       switch (op) {
+       case CEPH_SESSION_REQUEST_OPEN: return "request_open";
+       case CEPH_SESSION_OPEN: return "open";
+       case CEPH_SESSION_REQUEST_CLOSE: return "request_close";
+       case CEPH_SESSION_CLOSE: return "close";
+       case CEPH_SESSION_REQUEST_RENEWCAPS: return "request_renewcaps";
+       case CEPH_SESSION_RENEWCAPS: return "renewcaps";
+       case CEPH_SESSION_STALE: return "stale";
+       case CEPH_SESSION_RECALL_STATE: return "recall_state";
+       }
+       return "???";
+}
+
+const char *ceph_mds_op_name(int op)
+{
+       switch (op) {
+       case CEPH_MDS_OP_LOOKUP:  return "lookup";
+       case CEPH_MDS_OP_LOOKUPHASH:  return "lookuphash";
+       case CEPH_MDS_OP_LOOKUPPARENT:  return "lookupparent";
+       case CEPH_MDS_OP_LOOKUPINO:  return "lookupino";
+       case CEPH_MDS_OP_GETATTR:  return "getattr";
+       case CEPH_MDS_OP_SETXATTR: return "setxattr";
+       case CEPH_MDS_OP_SETATTR: return "setattr";
+       case CEPH_MDS_OP_RMXATTR: return "rmxattr";
+       case CEPH_MDS_OP_SETLAYOUT: return "setlayou";
+       case CEPH_MDS_OP_SETDIRLAYOUT: return "setdirlayout";
+       case CEPH_MDS_OP_READDIR: return "readdir";
+       case CEPH_MDS_OP_MKNOD: return "mknod";
+       case CEPH_MDS_OP_LINK: return "link";
+       case CEPH_MDS_OP_UNLINK: return "unlink";
+       case CEPH_MDS_OP_RENAME: return "rename";
+       case CEPH_MDS_OP_MKDIR: return "mkdir";
+       case CEPH_MDS_OP_RMDIR: return "rmdir";
+       case CEPH_MDS_OP_SYMLINK: return "symlink";
+       case CEPH_MDS_OP_CREATE: return "create";
+       case CEPH_MDS_OP_OPEN: return "open";
+       case CEPH_MDS_OP_LOOKUPSNAP: return "lookupsnap";
+       case CEPH_MDS_OP_LSSNAP: return "lssnap";
+       case CEPH_MDS_OP_MKSNAP: return "mksnap";
+       case CEPH_MDS_OP_RMSNAP: return "rmsnap";
+       case CEPH_MDS_OP_SETFILELOCK: return "setfilelock";
+       case CEPH_MDS_OP_GETFILELOCK: return "getfilelock";
+       }
+       return "???";
+}
+
+const char *ceph_cap_op_name(int op)
+{
+       switch (op) {
+       case CEPH_CAP_OP_GRANT: return "grant";
+       case CEPH_CAP_OP_REVOKE: return "revoke";
+       case CEPH_CAP_OP_TRUNC: return "trunc";
+       case CEPH_CAP_OP_EXPORT: return "export";
+       case CEPH_CAP_OP_IMPORT: return "import";
+       case CEPH_CAP_OP_UPDATE: return "update";
+       case CEPH_CAP_OP_DROP: return "drop";
+       case CEPH_CAP_OP_FLUSH: return "flush";
+       case CEPH_CAP_OP_FLUSH_ACK: return "flush_ack";
+       case CEPH_CAP_OP_FLUSHSNAP: return "flushsnap";
+       case CEPH_CAP_OP_FLUSHSNAP_ACK: return "flushsnap_ack";
+       case CEPH_CAP_OP_RELEASE: return "release";
+       case CEPH_CAP_OP_RENEW: return "renew";
+       }
+       return "???";
+}
+
+const char *ceph_lease_op_name(int o)
+{
+       switch (o) {
+       case CEPH_MDS_LEASE_REVOKE: return "revoke";
+       case CEPH_MDS_LEASE_RELEASE: return "release";
+       case CEPH_MDS_LEASE_RENEW: return "renew";
+       case CEPH_MDS_LEASE_REVOKE_ACK: return "revoke_ack";
+       }
+       return "???";
+}
+
+const char *ceph_snap_op_name(int o)
+{
+       switch (o) {
+       case CEPH_SNAP_OP_UPDATE: return "update";
+       case CEPH_SNAP_OP_CREATE: return "create";
+       case CEPH_SNAP_OP_DESTROY: return "destroy";
+       case CEPH_SNAP_OP_SPLIT: return "split";
+       }
+       return "???";
+}
+
+const char *ceph_pool_op_name(int op)
+{
+       switch (op) {
+       case POOL_OP_CREATE: return "create";
+       case POOL_OP_DELETE: return "delete";
+       case POOL_OP_AUID_CHANGE: return "auid change";
+       case POOL_OP_CREATE_SNAP: return "create snap";
+       case POOL_OP_DELETE_SNAP: return "delete snap";
+       case POOL_OP_CREATE_UNMANAGED_SNAP: return "create unmanaged snap";
+       case POOL_OP_DELETE_UNMANAGED_SNAP: return "delete unmanaged snap";
+       }
+       return "???";
+}
diff --git a/src/include/addr_parsing.c b/src/include/addr_parsing.c
deleted file mode 100644 (file)
index c01f817..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- 
-// vim: ts=8 sw=2 smarttab
-/*
- * Ceph - scalable distributed file system
- *
- * Copyright (C) 2011 New Dream Network
- *
- * This is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software
- * Foundation.  See file COPYING.
- *
- */
-
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#if defined(__FreeBSD__)
-#include <sys/socket.h>
-#include <netinet/in.h>
-#endif
-#include <netdb.h>
-
-#define BUF_SIZE 128
-
-int safe_cat(char **pstr, int *plen, int pos, const char *str2)
-{
-  int len2 = strlen(str2);
-
-  //printf("safe_cat '%s' max %d pos %d '%s' len %d\n", *pstr, *plen, pos, str2, len2);
-  while (*plen < pos + len2 + 1) {
-    *plen += BUF_SIZE;
-    *pstr = (char *)realloc(*pstr, (size_t)*plen);
-
-    if (!*pstr) {
-      printf("Out of memory\n");
-      exit(1);
-    }
-    //printf("safe_cat '%s' max %d pos %d '%s' len %d\n", *pstr, *plen, pos, str2, len2);
-  }
-
-  strncpy((*pstr)+pos, str2, len2);
-  (*pstr)[pos+len2] = '\0';
-
-  return pos + len2;
-}
-
-char *resolve_addrs(const char *orig_str)
-{
-  char *new_str;
-  char *tok, *saveptr = NULL;
-  int len, pos;
-  char *buf = strdup(orig_str);
-  const char *delim = ",; ";
-
-  len = BUF_SIZE;
-  new_str = (char *)malloc(len);
-  if (!new_str) {
-    free(buf);
-    return NULL;
-  }
-
-  pos = 0;
-
-  tok = strtok_r(buf, delim, &saveptr);
-
-  while (tok) {
-    struct addrinfo hint;
-    struct addrinfo *res, *ores;
-    char *firstcolon, *lastcolon, *bracecolon;
-    int r;
-    int brackets = 0;
-
-    firstcolon = strchr(tok, ':');
-    lastcolon = strrchr(tok, ':');
-    bracecolon = strstr(tok, "]:");
-
-    char *port_str = 0;
-    if (firstcolon && firstcolon == lastcolon) {
-      /* host:port or a.b.c.d:port */
-      *firstcolon = 0;
-      port_str = firstcolon + 1;
-    } else if (bracecolon) {
-      /* [ipv6addr]:port */
-      port_str = bracecolon + 1;
-      *port_str = 0;
-      port_str++;
-    }
-    if (port_str && !*port_str)
-      port_str = NULL;
-
-    if (*tok == '[' &&
-       tok[strlen(tok)-1] == ']') {
-      tok[strlen(tok)-1] = 0;
-      tok++;
-      brackets = 1;
-    }
-
-    //printf("name '%s' port '%s'\n", tok, port_str);
-
-    memset(&hint, 0, sizeof(hint));
-    hint.ai_family = AF_UNSPEC;
-    hint.ai_socktype = SOCK_STREAM;
-    hint.ai_protocol = IPPROTO_TCP;
-
-    r = getaddrinfo(tok, port_str, &hint, &res);
-    if (r < 0) {
-      printf("server name not found: %s (%s)\n", tok,
-            gai_strerror(r));
-      free(new_str);
-      free(buf);
-      return 0;
-    }
-
-    /* build resolved addr list */
-    ores = res;
-    while (res) {
-      char host[40], port[40];
-      getnameinfo(res->ai_addr, res->ai_addrlen,
-                 host, sizeof(host),
-                 port, sizeof(port),
-                 NI_NUMERICSERV | NI_NUMERICHOST);
-      /*printf(" host %s port %s flags %d family %d socktype %d proto %d sanonname %s\n",
-       host, port,
-       res->ai_flags, res->ai_family, res->ai_socktype, res->ai_protocol,
-       res->ai_canonname);*/
-      if (res->ai_family == AF_INET6)
-       brackets = 1;  /* always surround ipv6 addrs with brackets */
-      if (brackets)
-       pos = safe_cat(&new_str, &len, pos, "[");
-      pos = safe_cat(&new_str, &len, pos, host);
-      if (brackets)
-       pos = safe_cat(&new_str, &len, pos, "]");
-      if (port_str) {
-       pos = safe_cat(&new_str, &len, pos, ":");
-       pos = safe_cat(&new_str, &len, pos, port);
-      }
-      res = res->ai_next;
-      if (res)
-       pos = safe_cat(&new_str, &len, pos, ",");
-    }
-    freeaddrinfo(ores);
-
-    tok = strtok_r(NULL, delim, &saveptr);
-    if (tok)
-      pos = safe_cat(&new_str, &len, pos, ",");
-
-  }
-
-  //printf("new_str is '%s'\n", new_str);
-  free(buf);
-  return new_str;
-}
diff --git a/src/include/ceph_frag.cc b/src/include/ceph_frag.cc
deleted file mode 100644 (file)
index ab6cf35..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Ceph 'frag' type
- */
-#include "types.h"
-
-int ceph_frag_compare(__u32 a, __u32 b)
-{
-       unsigned va = ceph_frag_value(a);
-       unsigned vb = ceph_frag_value(b);
-       if (va < vb)
-               return -1;
-       if (va > vb)
-               return 1;
-       va = ceph_frag_bits(a);
-       vb = ceph_frag_bits(b);
-       if (va < vb)
-               return -1;
-       if (va > vb)
-               return 1;
-       return 0;
-}
diff --git a/src/include/ceph_fs.cc b/src/include/ceph_fs.cc
deleted file mode 100644 (file)
index 6e3c143..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * ceph_fs.cc - Some Ceph functions that are shared between kernel space and
- * user space.
- *
- */
-
-#include <errno.h>
-
-/*
- * Some non-inline ceph helpers
- */
-#include "types.h"
-
-/*
- * return true if @layout appears to be valid
- */
-int ceph_file_layout_is_valid(const struct ceph_file_layout *layout)
-{
-       __u32 su = le32_to_cpu(layout->fl_stripe_unit);
-       __u32 sc = le32_to_cpu(layout->fl_stripe_count);
-       __u32 os = le32_to_cpu(layout->fl_object_size);
-
-       /* stripe unit, object size must be non-zero, 64k increment */
-       if (!su || (su & (CEPH_MIN_STRIPE_UNIT-1)))
-               return 0;
-       if (!os || (os & (CEPH_MIN_STRIPE_UNIT-1)))
-               return 0;
-       /* object size must be a multiple of stripe unit */
-       if (os < su || os % su)
-               return 0;
-       /* stripe count must be non-zero */
-       if (!sc)
-               return 0;
-       return 1;
-}
-
-
-int ceph_flags_to_mode(int flags)
-{
-       int mode = 0;
-
-#ifdef O_DIRECTORY  /* fixme */
-       if ((flags & O_DIRECTORY) == O_DIRECTORY)
-               return CEPH_FILE_MODE_PIN;
-#endif
-
-       switch (flags & O_ACCMODE) {
-       case O_WRONLY:
-               mode = CEPH_FILE_MODE_WR;
-               break;
-       case O_RDONLY:
-               mode = CEPH_FILE_MODE_RD;
-               break;
-       case O_RDWR:
-       case O_ACCMODE: /* this is what the VFS does */
-               mode = CEPH_FILE_MODE_RDWR;
-               break;
-       }
-
-       return mode;
-}
-
-int ceph_caps_for_mode(int mode)
-{
-       int caps = CEPH_CAP_PIN;
-
-       if (mode & CEPH_FILE_MODE_RD)
-               caps |= CEPH_CAP_FILE_SHARED |
-                       CEPH_CAP_FILE_RD | CEPH_CAP_FILE_CACHE;
-       if (mode & CEPH_FILE_MODE_WR)
-               caps |= CEPH_CAP_FILE_EXCL |
-                       CEPH_CAP_FILE_WR | CEPH_CAP_FILE_BUFFER |
-                       CEPH_CAP_AUTH_SHARED | CEPH_CAP_AUTH_EXCL |
-                       CEPH_CAP_XATTR_SHARED | CEPH_CAP_XATTR_EXCL;
-       if (mode & CEPH_FILE_MODE_LAZY)
-               caps |= CEPH_CAP_FILE_LAZYIO;
-
-       return caps;
-}
diff --git a/src/include/ceph_hash.cc b/src/include/ceph_hash.cc
deleted file mode 100644 (file)
index d6081df..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-
-#include "types.h"
-
-/*
- * Robert Jenkin's hash function.
- * http://burtleburtle.net/bob/hash/evahash.html
- * This is in the public domain.
- */
-#define mix(a, b, c)                                           \
-       do {                                                    \
-               a = a - b;  a = a - c;  a = a ^ (c >> 13);      \
-               b = b - c;  b = b - a;  b = b ^ (a << 8);       \
-               c = c - a;  c = c - b;  c = c ^ (b >> 13);      \
-               a = a - b;  a = a - c;  a = a ^ (c >> 12);      \
-               b = b - c;  b = b - a;  b = b ^ (a << 16);      \
-               c = c - a;  c = c - b;  c = c ^ (b >> 5);       \
-               a = a - b;  a = a - c;  a = a ^ (c >> 3);       \
-               b = b - c;  b = b - a;  b = b ^ (a << 10);      \
-               c = c - a;  c = c - b;  c = c ^ (b >> 15);      \
-       } while (0)
-
-unsigned ceph_str_hash_rjenkins(const char *str, unsigned length)
-{
-       const unsigned char *k = (const unsigned char *)str;
-       __u32 a, b, c;  /* the internal state */
-       __u32 len;      /* how many key bytes still need mixing */
-
-       /* Set up the internal state */
-       len = length;
-       a = 0x9e3779b9;      /* the golden ratio; an arbitrary value */
-       b = a;
-       c = 0;               /* variable initialization of internal state */
-
-       /* handle most of the key */
-       while (len >= 12) {
-               a = a + (k[0] + ((__u32)k[1] << 8) + ((__u32)k[2] << 16) +
-                        ((__u32)k[3] << 24));
-               b = b + (k[4] + ((__u32)k[5] << 8) + ((__u32)k[6] << 16) +
-                        ((__u32)k[7] << 24));
-               c = c + (k[8] + ((__u32)k[9] << 8) + ((__u32)k[10] << 16) +
-                        ((__u32)k[11] << 24));
-               mix(a, b, c);
-               k = k + 12;
-               len = len - 12;
-       }
-
-       /* handle the last 11 bytes */
-       c = c + length;
-       switch (len) {            /* all the case statements fall through */
-       case 11:
-               c = c + ((__u32)k[10] << 24);
-       case 10:
-               c = c + ((__u32)k[9] << 16);
-       case 9:
-               c = c + ((__u32)k[8] << 8);
-               /* the first byte of c is reserved for the length */
-       case 8:
-               b = b + ((__u32)k[7] << 24);
-       case 7:
-               b = b + ((__u32)k[6] << 16);
-       case 6:
-               b = b + ((__u32)k[5] << 8);
-       case 5:
-               b = b + k[4];
-       case 4:
-               a = a + ((__u32)k[3] << 24);
-       case 3:
-               a = a + ((__u32)k[2] << 16);
-       case 2:
-               a = a + ((__u32)k[1] << 8);
-       case 1:
-               a = a + k[0];
-               /* case 0: nothing left to add */
-       }
-       mix(a, b, c);
-
-       return c;
-}
-
-/*
- * linux dcache hash
- */
-unsigned ceph_str_hash_linux(const char *str, unsigned length)
-{
-       unsigned long hash = 0;
-
-       while (length--) {
-               unsigned char c = *str++;
-               hash = (hash + (c << 4) + (c >> 4)) * 11;
-       }
-       return hash;
-}
-
-
-unsigned ceph_str_hash(int type, const char *s, unsigned len)
-{
-       switch (type) {
-       case CEPH_STR_HASH_LINUX:
-               return ceph_str_hash_linux(s, len);
-       case CEPH_STR_HASH_RJENKINS:
-               return ceph_str_hash_rjenkins(s, len);
-       default:
-               return -1;
-       }
-}
-
-const char *ceph_str_hash_name(int type)
-{
-       switch (type) {
-       case CEPH_STR_HASH_LINUX:
-               return "linux";
-       case CEPH_STR_HASH_RJENKINS:
-               return "rjenkins";
-       default:
-               return "unknown";
-       }
-}
diff --git a/src/include/ceph_strings.cc b/src/include/ceph_strings.cc
deleted file mode 100644 (file)
index e86aae4..0000000
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- * Ceph string constants
- */
-#include "types.h"
-
-const char *ceph_entity_type_name(int type)
-{
-       switch (type) {
-       case CEPH_ENTITY_TYPE_MDS: return "mds";
-       case CEPH_ENTITY_TYPE_OSD: return "osd";
-       case CEPH_ENTITY_TYPE_MON: return "mon";
-       case CEPH_ENTITY_TYPE_CLIENT: return "client";
-       case CEPH_ENTITY_TYPE_AUTH: return "auth";
-       default: return "unknown";
-       }
-}
-
-const char *ceph_osd_op_name(int op)
-{
-       switch (op) {
-       case CEPH_OSD_OP_READ: return "read";
-       case CEPH_OSD_OP_STAT: return "stat";
-       case CEPH_OSD_OP_MAPEXT: return "mapext";
-       case CEPH_OSD_OP_SPARSE_READ: return "sparse-read";
-       case CEPH_OSD_OP_NOTIFY: return "notify";
-       case CEPH_OSD_OP_NOTIFY_ACK: return "notify-ack";
-       case CEPH_OSD_OP_ASSERT_VER: return "assert-version";
-       case CEPH_OSD_OP_LIST_WATCHERS: return "list-watchers";
-       case CEPH_OSD_OP_LIST_SNAPS: return "list-snaps";
-
-       case CEPH_OSD_OP_MASKTRUNC: return "masktrunc";
-
-       case CEPH_OSD_OP_CREATE: return "create";
-       case CEPH_OSD_OP_WRITE: return "write";
-       case CEPH_OSD_OP_DELETE: return "delete";
-       case CEPH_OSD_OP_TRUNCATE: return "truncate";
-       case CEPH_OSD_OP_ZERO: return "zero";
-       case CEPH_OSD_OP_WRITEFULL: return "writefull";
-       case CEPH_OSD_OP_ROLLBACK: return "rollback";
-
-       case CEPH_OSD_OP_APPEND: return "append";
-       case CEPH_OSD_OP_STARTSYNC: return "startsync";
-       case CEPH_OSD_OP_SETTRUNC: return "settrunc";
-       case CEPH_OSD_OP_TRIMTRUNC: return "trimtrunc";
-
-       case CEPH_OSD_OP_TMAPUP: return "tmapup";
-       case CEPH_OSD_OP_TMAPGET: return "tmapget";
-       case CEPH_OSD_OP_TMAPPUT: return "tmapput";
-       case CEPH_OSD_OP_WATCH: return "watch";
-
-       case CEPH_OSD_OP_COPY_GET: return "copy-get";
-       case CEPH_OSD_OP_COPY_FROM: return "copy-from";
-
-       case CEPH_OSD_OP_CLONERANGE: return "clonerange";
-       case CEPH_OSD_OP_ASSERT_SRC_VERSION: return "assert-src-version";
-       case CEPH_OSD_OP_SRC_CMPXATTR: return "src-cmpxattr";
-
-       case CEPH_OSD_OP_GETXATTR: return "getxattr";
-       case CEPH_OSD_OP_GETXATTRS: return "getxattrs";
-       case CEPH_OSD_OP_SETXATTR: return "setxattr";
-       case CEPH_OSD_OP_SETXATTRS: return "setxattrs";
-       case CEPH_OSD_OP_RESETXATTRS: return "resetxattrs";
-       case CEPH_OSD_OP_RMXATTR: return "rmxattr";
-       case CEPH_OSD_OP_CMPXATTR: return "cmpxattr";
-
-       case CEPH_OSD_OP_PULL: return "pull";
-       case CEPH_OSD_OP_PUSH: return "push";
-       case CEPH_OSD_OP_BALANCEREADS: return "balance-reads";
-       case CEPH_OSD_OP_UNBALANCEREADS: return "unbalance-reads";
-       case CEPH_OSD_OP_SCRUB: return "scrub";
-       case CEPH_OSD_OP_SCRUB_RESERVE: return "scrub-reserve";
-       case CEPH_OSD_OP_SCRUB_UNRESERVE: return "scrub-unreserve";
-       case CEPH_OSD_OP_SCRUB_STOP: return "scrub-stop";
-       case CEPH_OSD_OP_SCRUB_MAP: return "scrub-map";
-
-       case CEPH_OSD_OP_WRLOCK: return "wrlock";
-       case CEPH_OSD_OP_WRUNLOCK: return "wrunlock";
-       case CEPH_OSD_OP_RDLOCK: return "rdlock";
-       case CEPH_OSD_OP_RDUNLOCK: return "rdunlock";
-       case CEPH_OSD_OP_UPLOCK: return "uplock";
-       case CEPH_OSD_OP_DNLOCK: return "dnlock";
-
-       case CEPH_OSD_OP_CALL: return "call";
-
-       case CEPH_OSD_OP_PGLS: return "pgls";
-       case CEPH_OSD_OP_PGLS_FILTER: return "pgls-filter";
-       case CEPH_OSD_OP_OMAPGETKEYS: return "omap-get-keys";
-       case CEPH_OSD_OP_OMAPGETVALS: return "omap-get-vals";
-       case CEPH_OSD_OP_OMAPGETHEADER: return "omap-get-header";
-       case CEPH_OSD_OP_OMAPGETVALSBYKEYS: return "omap-get-vals-by-keys";
-       case CEPH_OSD_OP_OMAPSETVALS: return "omap-set-vals";
-       case CEPH_OSD_OP_OMAPSETHEADER: return "omap-set-header";
-       case CEPH_OSD_OP_OMAPCLEAR: return "omap-clear";
-       case CEPH_OSD_OP_OMAPRMKEYS: return "omap-rm-keys";
-       }
-       return "???";
-}
-
-const char *ceph_osd_state_name(int s)
-{
-       switch (s) {
-       case CEPH_OSD_EXISTS:
-               return "exists";
-       case CEPH_OSD_UP:
-               return "up";
-       case CEPH_OSD_AUTOOUT:
-               return "autoout";
-       case CEPH_OSD_NEW:
-               return "new";
-       default:
-               return "???";
-       }       
-}
-
-const char *ceph_mds_state_name(int s)
-{
-       switch (s) {
-               /* down and out */
-       case CEPH_MDS_STATE_DNE:        return "down:dne";
-       case CEPH_MDS_STATE_STOPPED:    return "down:stopped";
-               /* up and out */
-       case CEPH_MDS_STATE_BOOT:       return "up:boot";
-       case CEPH_MDS_STATE_STANDBY:    return "up:standby";
-       case CEPH_MDS_STATE_STANDBY_REPLAY:    return "up:standby-replay";
-       case CEPH_MDS_STATE_REPLAYONCE: return "up:oneshot-replay";
-       case CEPH_MDS_STATE_CREATING:   return "up:creating";
-       case CEPH_MDS_STATE_STARTING:   return "up:starting";
-               /* up and in */
-       case CEPH_MDS_STATE_REPLAY:     return "up:replay";
-       case CEPH_MDS_STATE_RESOLVE:    return "up:resolve";
-       case CEPH_MDS_STATE_RECONNECT:  return "up:reconnect";
-       case CEPH_MDS_STATE_REJOIN:     return "up:rejoin";
-       case CEPH_MDS_STATE_CLIENTREPLAY: return "up:clientreplay";
-       case CEPH_MDS_STATE_ACTIVE:     return "up:active";
-       case CEPH_MDS_STATE_STOPPING:   return "up:stopping";
-       }
-       return "???";
-}
-
-const char *ceph_session_op_name(int op)
-{
-       switch (op) {
-       case CEPH_SESSION_REQUEST_OPEN: return "request_open";
-       case CEPH_SESSION_OPEN: return "open";
-       case CEPH_SESSION_REQUEST_CLOSE: return "request_close";
-       case CEPH_SESSION_CLOSE: return "close";
-       case CEPH_SESSION_REQUEST_RENEWCAPS: return "request_renewcaps";
-       case CEPH_SESSION_RENEWCAPS: return "renewcaps";
-       case CEPH_SESSION_STALE: return "stale";
-       case CEPH_SESSION_RECALL_STATE: return "recall_state";
-       }
-       return "???";
-}
-
-const char *ceph_mds_op_name(int op)
-{
-       switch (op) {
-       case CEPH_MDS_OP_LOOKUP:  return "lookup";
-       case CEPH_MDS_OP_LOOKUPHASH:  return "lookuphash";
-       case CEPH_MDS_OP_LOOKUPPARENT:  return "lookupparent";
-       case CEPH_MDS_OP_LOOKUPINO:  return "lookupino";
-       case CEPH_MDS_OP_GETATTR:  return "getattr";
-       case CEPH_MDS_OP_SETXATTR: return "setxattr";
-       case CEPH_MDS_OP_SETATTR: return "setattr";
-       case CEPH_MDS_OP_RMXATTR: return "rmxattr";
-       case CEPH_MDS_OP_SETLAYOUT: return "setlayou";
-       case CEPH_MDS_OP_SETDIRLAYOUT: return "setdirlayout";
-       case CEPH_MDS_OP_READDIR: return "readdir";
-       case CEPH_MDS_OP_MKNOD: return "mknod";
-       case CEPH_MDS_OP_LINK: return "link";
-       case CEPH_MDS_OP_UNLINK: return "unlink";
-       case CEPH_MDS_OP_RENAME: return "rename";
-       case CEPH_MDS_OP_MKDIR: return "mkdir";
-       case CEPH_MDS_OP_RMDIR: return "rmdir";
-       case CEPH_MDS_OP_SYMLINK: return "symlink";
-       case CEPH_MDS_OP_CREATE: return "create";
-       case CEPH_MDS_OP_OPEN: return "open";
-       case CEPH_MDS_OP_LOOKUPSNAP: return "lookupsnap";
-       case CEPH_MDS_OP_LSSNAP: return "lssnap";
-       case CEPH_MDS_OP_MKSNAP: return "mksnap";
-       case CEPH_MDS_OP_RMSNAP: return "rmsnap";
-       case CEPH_MDS_OP_SETFILELOCK: return "setfilelock";
-       case CEPH_MDS_OP_GETFILELOCK: return "getfilelock";
-       }
-       return "???";
-}
-
-const char *ceph_cap_op_name(int op)
-{
-       switch (op) {
-       case CEPH_CAP_OP_GRANT: return "grant";
-       case CEPH_CAP_OP_REVOKE: return "revoke";
-       case CEPH_CAP_OP_TRUNC: return "trunc";
-       case CEPH_CAP_OP_EXPORT: return "export";
-       case CEPH_CAP_OP_IMPORT: return "import";
-       case CEPH_CAP_OP_UPDATE: return "update";
-       case CEPH_CAP_OP_DROP: return "drop";
-       case CEPH_CAP_OP_FLUSH: return "flush";
-       case CEPH_CAP_OP_FLUSH_ACK: return "flush_ack";
-       case CEPH_CAP_OP_FLUSHSNAP: return "flushsnap";
-       case CEPH_CAP_OP_FLUSHSNAP_ACK: return "flushsnap_ack";
-       case CEPH_CAP_OP_RELEASE: return "release";
-       case CEPH_CAP_OP_RENEW: return "renew";
-       }
-       return "???";
-}
-
-const char *ceph_lease_op_name(int o)
-{
-       switch (o) {
-       case CEPH_MDS_LEASE_REVOKE: return "revoke";
-       case CEPH_MDS_LEASE_RELEASE: return "release";
-       case CEPH_MDS_LEASE_RENEW: return "renew";
-       case CEPH_MDS_LEASE_REVOKE_ACK: return "revoke_ack";
-       }
-       return "???";
-}
-
-const char *ceph_snap_op_name(int o)
-{
-       switch (o) {
-       case CEPH_SNAP_OP_UPDATE: return "update";
-       case CEPH_SNAP_OP_CREATE: return "create";
-       case CEPH_SNAP_OP_DESTROY: return "destroy";
-       case CEPH_SNAP_OP_SPLIT: return "split";
-       }
-       return "???";
-}
-
-const char *ceph_pool_op_name(int op)
-{
-       switch (op) {
-       case POOL_OP_CREATE: return "create";
-       case POOL_OP_DELETE: return "delete";
-       case POOL_OP_AUID_CHANGE: return "auid change";
-       case POOL_OP_CREATE_SNAP: return "create snap";
-       case POOL_OP_DELETE_SNAP: return "delete snap";
-       case POOL_OP_CREATE_UNMANAGED_SNAP: return "create unmanaged snap";
-       case POOL_OP_DELETE_UNMANAGED_SNAP: return "delete unmanaged snap";
-       }
-       return "???";
-}