#define KEY_LAST_ID "last_id"
#define KEY_LOCK_TO_STRIPE "lock_to_stripe"
#define KEY_CHECKSUM "checksum"
-#define KEY_READONLY "readonly"
+#define KEY_READONLY "read-only"
+#define KEY_READONLY_166COMPAT "readonly"
#define KEY_UNLINKED "unlinked"
#define KEY_EVICT_BY_NID "evict_by_nid"
#define KEY_REGISTER_TARGET "register_target"
err = obd_set_info_async(sbi->ll_mdc_exp, sizeof(KEY_READONLY),
KEY_READONLY, sizeof(read_only),
&read_only, NULL);
+
+ /* MDS might have expected a different ro key value, b=17493 */
+ if (err == -EINVAL) {
+ CDEBUG(D_CONFIG, "Retrying remount with 1.6.6 ro key\n");
+ err = obd_set_info_async(sbi->ll_mdc_exp,
+ sizeof(KEY_READONLY_166COMPAT),
+ KEY_READONLY_166COMPAT,
+ sizeof(read_only),
+ &read_only, NULL);
+ }
+
if (err) {
CERROR("Failed to change the read-only flag during "
"remount: %d\n", err);
exp->exp_obd->obd_name, imp->imp_initial_recov_bk);
RETURN(0);
}
- if (KEY_IS(KEY_READONLY)) {
+ /* Accept the broken "read-only" key for 1.6.6 servers. b=17493 */
+ if (KEY_IS(KEY_READONLY) || KEY_IS(KEY_READONLY_166COMPAT)) {
struct ptlrpc_request *req;
__u32 size[3] = { sizeof(struct ptlrpc_body), keylen, vallen };
char *bufs[3] = { NULL, key, val };
lustre_msg_set_status(req->rq_repmsg, 0);
- if (KEY_IS(KEY_READONLY)) {
+ /* Accept the broken "read-only" key from 1.6.6 clients. b=17493 */
+ if (KEY_IS(KEY_READONLY) || KEY_IS(KEY_READONLY_166COMPAT)) {
if (val == NULL || vallen < sizeof(__u32)) {
DEBUG_REQ(D_HA, req, "no set_info val");
RETURN(-EFAULT);