]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: make pgids sort on (pool, preferred, ps)
authorSage Weil <sage@newdream.net>
Sun, 8 Nov 2009 05:06:27 +0000 (21:06 -0800)
committerSage Weil <sage@newdream.net>
Sun, 8 Nov 2009 05:06:27 +0000 (21:06 -0800)
This makes pg dump output easier to read, mainly.

src/osd/osd_types.h

index f7edcb888f9f850c00963463a9e553e571777baf..dfa812fe01a72ff11095416867e2b9e172bf7d04 100644 (file)
@@ -158,22 +158,34 @@ struct pg_t {
 } __attribute__ ((packed));
 
 inline bool operator<(const pg_t& l, const pg_t& r) {
-  return memcmp(&l, &r, sizeof(l)) < 0;
+  return l.pool() < r.pool() ||
+    (l.pool() == r.pool() && (l.preferred() < r.preferred() ||
+                             (l.preferred() == r.preferred() && (l.ps() < r.ps()))));
 }
 inline bool operator<=(const pg_t& l, const pg_t& r) {
-  return memcmp(&l, &r, sizeof(l)) <= 0;
+  return l.pool() < r.pool() ||
+    (l.pool() == r.pool() && (l.preferred() < r.preferred() ||
+                             (l.preferred() == r.preferred() && (l.ps() <= r.ps()))));
 }
 inline bool operator==(const pg_t& l, const pg_t& r) {
-  return memcmp(&l, &r, sizeof(l)) == 0;
+  return l.pool() == r.pool() &&
+    l.preferred() == r.preferred() &&
+    l.ps() == r.ps();
 }
 inline bool operator!=(const pg_t& l, const pg_t& r) {
-  return memcmp(&l, &r, sizeof(l)) != 0;
+  return l.pool() != r.pool() ||
+    l.preferred() != r.preferred() ||
+    l.ps() != r.ps();
 }
 inline bool operator>(const pg_t& l, const pg_t& r) {
-  return memcmp(&l, &r, sizeof(l)) > 0;
+  return l.pool() > r.pool() ||
+    (l.pool() == r.pool() && (l.preferred() > r.preferred() ||
+                             (l.preferred() == r.preferred() && (l.ps() > r.ps()))));
 }
 inline bool operator>=(const pg_t& l, const pg_t& r) {
-  return memcmp(&l, &r, sizeof(l)) >= 0;
+  return l.pool() > r.pool() ||
+    (l.pool() == r.pool() && (l.preferred() > r.preferred() ||
+                             (l.preferred() == r.preferred() && (l.ps() >= r.ps()))));
 }