From b5748a4ec3497d088cd5c8b169be4bc972166d99 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 9 Dec 2009 12:34:01 -0800 Subject: [PATCH] --- yaml --- r: 188646 b: refs/heads/master c: 767ea5c33a360ce88da24e296e802dace5821799 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/ceph/osdmap.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index b259b7971820..59adb275b9ee 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c2e552e76e2c6907ca50cd9a4b747a2e2e8c615e +refs/heads/master: 767ea5c33a360ce88da24e296e802dace5821799 diff --git a/trunk/fs/ceph/osdmap.c b/trunk/fs/ceph/osdmap.c index 8c994c714781..be5318aa7714 100644 --- a/trunk/fs/ceph/osdmap.c +++ b/trunk/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];