Эх сурвалжийг харах

ceph: do not feed bad device ids to crush

Do not feed bad (large) device ids to CRUSH.

Signed-off-by: Sage Weil <sage@newdream.net>
Sage Weil 15 жил өмнө
parent
commit
767ea5c33a
1 өөрчлөгдсөн 5 нэмэгдсэн , 0 устгасан
  1. 5 0
      fs/ceph/osdmap.c

+ 5 - 0
fs/ceph/osdmap.c

@@ -868,6 +868,11 @@ static int *calc_pg_raw(struct ceph_osdmap *osdmap, struct ceph_pg pgid,
 	ps = le16_to_cpu(pgid.ps);
 	preferred = (s16)le16_to_cpu(pgid.preferred);
 
+	/* don't forcefeed bad device ids to crush */
+	if (preferred >= osdmap->max_osd ||
+	    preferred >= osdmap->crush->max_devices)
+		preferred = -1;
+
 	if (poolid >= osdmap->num_pools)
 		return NULL;
 	pool = &osdmap->pg_pool[poolid];