aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIlya Dryomov <idryomov@gmail.com>2016-04-13 08:15:50 -0400
committerIlya Dryomov <idryomov@gmail.com>2016-04-28 04:07:43 -0400
commitd3767f0faeda5abdf205f947ae912d48dc70fa06 (patch)
treea8d2c8b2cb37d4d690fce322890de25247107215
parent811c6688774613a78bfa020f64b570b73f6974c8 (diff)
rbd: report unsupported features to syslog
... instead of just returning an error. Signed-off-by: Ilya Dryomov <idryomov@gmail.com> Reviewed-by: Josh Durgin <jdurgin@redhat.com>
-rw-r--r--drivers/block/rbd.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
index 25d22da47f6e..0ede6d7e2568 100644
--- a/drivers/block/rbd.c
+++ b/drivers/block/rbd.c
@@ -4183,7 +4183,7 @@ static int _rbd_dev_v2_snap_features(struct rbd_device *rbd_dev, u64 snap_id,
4183 __le64 features; 4183 __le64 features;
4184 __le64 incompat; 4184 __le64 incompat;
4185 } __attribute__ ((packed)) features_buf = { 0 }; 4185 } __attribute__ ((packed)) features_buf = { 0 };
4186 u64 incompat; 4186 u64 unsup;
4187 int ret; 4187 int ret;
4188 4188
4189 ret = rbd_obj_method_sync(rbd_dev, rbd_dev->header_name, 4189 ret = rbd_obj_method_sync(rbd_dev, rbd_dev->header_name,
@@ -4196,9 +4196,12 @@ static int _rbd_dev_v2_snap_features(struct rbd_device *rbd_dev, u64 snap_id,
4196 if (ret < sizeof (features_buf)) 4196 if (ret < sizeof (features_buf))
4197 return -ERANGE; 4197 return -ERANGE;
4198 4198
4199 incompat = le64_to_cpu(features_buf.incompat); 4199 unsup = le64_to_cpu(features_buf.incompat) & ~RBD_FEATURES_SUPPORTED;
4200 if (incompat & ~RBD_FEATURES_SUPPORTED) 4200 if (unsup) {
4201 rbd_warn(rbd_dev, "image uses unsupported features: 0x%llx",
4202 unsup);
4201 return -ENXIO; 4203 return -ENXIO;
4204 }
4202 4205
4203 *snap_features = le64_to_cpu(features_buf.features); 4206 *snap_features = le64_to_cpu(features_buf.features);
4204 4207