This avoids getting the same peer for all 0.0p* pgs, for
example.
Rev osdc protocol.
#define CEPH_OSD_PROTOCOL 7 /* cluster internal */
#define CEPH_MDS_PROTOCOL 9 /* cluster internal */
#define CEPH_MON_PROTOCOL 5 /* cluster internal */
-#define CEPH_OSDC_PROTOCOL 20 /* server/client */
+#define CEPH_OSDC_PROTOCOL 21 /* server/client */
#define CEPH_MDSC_PROTOCOL 29 /* server/client */
#define CEPH_MONC_PROTOCOL 15 /* server/client */
// calculate ps (placement seed)
static hash<object_t> H;
ps_t ps = H(oid);
+
+ // mix in preferred osd, so we don't get the same peers for all of the placement pgs (e.g. 0.0p*)
+ if (preferred >= 0)
+ ps += preferred;
+
/*
ps_t ps; // NOTE: keep full precision, here!
switch (g_conf.osd_object_layout) {