From 1385dbf8b9caedca7bb32f35db1529e4d5c52d4f Mon Sep 17 00:00:00 2001 From: Rahul Deshmkuh Date: Mon, 8 May 2017 22:33:41 +0530 Subject: [PATCH] LU-9104 obd: Ignore unknown config param while mounting class_process_proc_param() returns positive value when it encounters unknown parameters in order to have the below levels process them. At the very bottom layer the positive value returned by class_process_proc_param() needs to be dropped.osd_process_config() missed that, which resulted in target mount failure. Make sure that osd_process_config() does not return positive value returned by class_process_proc_param(). Test case has been added to check processing of unknown config parameters. Test-Parameters: testlist=conf-sanity Signed-off-by: Parinay Kondekar Signed-off-by: Rahul Deshmukh Seagate-bug-id: MRP-4162 Change-Id: I068b8f2aee4cee69629efc83745d7cb88aea268c Reviewed-on: https://review.whamcloud.com/25368 Tested-by: Jenkins Reviewed-by: Andreas Dilger Tested-by: Maloo Reviewed-by: Mike Pershin --- lustre/osd-ldiskfs/osd_handler.c | 5 ++++- lustre/osd-zfs/osd_handler.c | 5 ++++- lustre/tests/conf-sanity.sh | 21 +++++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) mode change 100755 => 100644 lustre/tests/conf-sanity.sh diff --git a/lustre/osd-ldiskfs/osd_handler.c b/lustre/osd-ldiskfs/osd_handler.c index 4e98210..aabc3e6 100644 --- a/lustre/osd-ldiskfs/osd_handler.c +++ b/lustre/osd-ldiskfs/osd_handler.c @@ -7209,10 +7209,13 @@ static int osd_process_config(const struct lu_env *env, LASSERT(&o->od_dt_dev); rc = class_process_proc_param(PARAM_OSD, lprocfs_osd_obd_vars, cfg, &o->od_dt_dev); - if (rc > 0 || rc == -ENOSYS) + if (rc > 0 || rc == -ENOSYS) { rc = class_process_proc_param(PARAM_OST, lprocfs_osd_obd_vars, cfg, &o->od_dt_dev); + if (rc > 0) + rc = 0; + } break; default: rc = -ENOSYS; diff --git a/lustre/osd-zfs/osd_handler.c b/lustre/osd-zfs/osd_handler.c index bcb8705..fe41089 100644 --- a/lustre/osd-zfs/osd_handler.c +++ b/lustre/osd-zfs/osd_handler.c @@ -1294,10 +1294,13 @@ static int osd_process_config(const struct lu_env *env, LASSERT(&o->od_dt_dev); rc = class_process_proc_param(PARAM_OSD, lprocfs_osd_obd_vars, cfg, &o->od_dt_dev); - if (rc > 0 || rc == -ENOSYS) + if (rc > 0 || rc == -ENOSYS) { rc = class_process_proc_param(PARAM_OST, lprocfs_osd_obd_vars, cfg, &o->od_dt_dev); + if (rc > 0) + rc = 0; + } break; } default: diff --git a/lustre/tests/conf-sanity.sh b/lustre/tests/conf-sanity.sh old mode 100755 new mode 100644 index 4bca875..d3a515a --- a/lustre/tests/conf-sanity.sh +++ b/lustre/tests/conf-sanity.sh @@ -7450,9 +7450,30 @@ test_105() { error_and_umount "file not created on rw bind mnt pt" umount $TMP/$tdir || error "umount of bind mnt pt failed" rmdir $TMP/$tdir + cleanup || error "cleanup failed with $?" } run_test 105 "check file creation for ro and rw bind mnt pt" +test_107() { + [[ $(lustre_version_code $SINGLEMDS) -ge $(version_code 2.10.50) ]] || + { skip "Need MDS version > 2.10.50"; return; } + + start_mgsmds || error "start_mgsmds failed" + start_ost || error "unable to start OST" + + # add unknown configuration parameter. + local PARAM="$FSNAME-OST0000.ost.unknown_param=50" + do_facet mgs "$LCTL conf_param $PARAM" + cleanup_nocli || error "cleanup_nocli failed with $?" + load_modules + + # unknown param should be ignored while mounting. + start_ost || error "unable to start OST after unknown param set" + + cleanup || error "cleanup failed with $?" +} +run_test 107 "Unknown config param should not fail target mounting" + if ! combined_mgs_mds ; then stop mgs fi -- 1.8.3.1