From 767ea5c33a360ce88da24e296e802dace5821799 Mon Sep 17 00:00:00 2001
From: Sage Weil <sage@newdream.net>
Date: Wed, 9 Dec 2009 12:34:01 -0800
Subject: [PATCH] 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>
---
 fs/ceph/osdmap.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/fs/ceph/osdmap.c b/fs/ceph/osdmap.c
index 8c994c714781..be5318aa7714 100644
--- a/fs/ceph/osdmap.c
+++ b/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];
-- 
GitLab