From: Sage Weil Date: Sun, 8 Nov 2009 05:06:27 +0000 (-0800) Subject: osd: make pgids sort on (pool, preferred, ps) X-Git-Tag: v0.18~128^2~3 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5301d0808add89816f67433b31e2383eb20745dd;p=ceph.git osd: make pgids sort on (pool, preferred, ps) This makes pg dump output easier to read, mainly. --- diff --git a/src/osd/osd_types.h b/src/osd/osd_types.h index f7edcb888f9f..dfa812fe01a7 100644 --- a/src/osd/osd_types.h +++ b/src/osd/osd_types.h @@ -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())))); }