From bc78d326c9e271e39308194415bbbd7745496cd6 Mon Sep 17 00:00:00 2001 From: Alex Elder Date: Sat, 20 Oct 2012 22:17:27 -0500 Subject: [PATCH] --- yaml --- r: 347570 b: refs/heads/master c: db2388b6ee40a949084e4cdddc3b0a4357068a62 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/block/rbd.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index e088046cc684..789a9a10d060 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4634246db8cb2e5117ef7c682efcc383fa3354f8 +refs/heads/master: db2388b6ee40a949084e4cdddc3b0a4357068a62 diff --git a/trunk/drivers/block/rbd.c b/trunk/drivers/block/rbd.c index d0328835bbd9..4734446c3b5b 100644 --- a/trunk/drivers/block/rbd.c +++ b/trunk/drivers/block/rbd.c @@ -533,6 +533,16 @@ static bool rbd_dev_ondisk_valid(struct rbd_image_header_ondisk *ondisk) if (memcmp(&ondisk->text, RBD_HEADER_TEXT, sizeof (RBD_HEADER_TEXT))) return false; + /* The bio layer requires at least sector-sized I/O */ + + if (ondisk->options.order < SECTOR_SHIFT) + return false; + + /* If we use u64 in a few spots we may be able to loosen this */ + + if (ondisk->options.order > 8 * sizeof (int) - 1) + return false; + /* * The size of a snapshot header has to fit in a size_t, and * that limits the number of snapshots.