From aa4269f5c2e3c834cdff63dc32d7a7183f32374a Mon Sep 17 00:00:00 2001 From: James Simmons Date: Wed, 6 Nov 2019 13:19:59 -0500 Subject: [PATCH] LU-12932 lod: rename qos_threshold_rr parameter Rename the qos_thresholdrr parameter back to its original name of qos_threshold_rr so that there is no interop breakage. Update test to handle mdt_qos_threshold_rr which lines up with the name of qos_* sysfs files. Since we are using directly kstrtouint() we have to eat the '%' that could be passed in. Change-Id: I318a2ece6910e28a7a2331851d13b2269cf23e28 Fixes: c1d0a355a6a6 ("LU-12624 lod: alloc dir stripes by QoS") Test-Parameters: trivial testlist=sanityn Signed-off-by: James Simmons Reviewed-on: https://review.whamcloud.com/36686 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: Oleg Drokin --- lustre/lod/lproc_lod.c | 65 +++++++++++++++++++++++++++++--------------------- lustre/tests/sanity.sh | 8 +++---- 2 files changed, 42 insertions(+), 31 deletions(-) diff --git a/lustre/lod/lproc_lod.c b/lustre/lod/lproc_lod.c index 6a64861..d2fccda 100644 --- a/lustre/lod/lproc_lod.c +++ b/lustre/lod/lproc_lod.c @@ -454,7 +454,7 @@ static ssize_t qos_prio_free_show(struct kobject *kobj, * * Set the relative priority of free OST space compared to OST load when OSTs * are space imbalanced. See qos_priofree_show() for description of - * this parameter. See qos_thresholdrr_store() and lq_threshold_rr to + * this parameter. See qos_threshold_rr_store() and lq_threshold_rr to * determine what constitutes "space imbalanced" OSTs. */ static ssize_t __qos_prio_free_store(struct kobject *kobj, @@ -502,9 +502,9 @@ LUSTRE_RW_ATTR(qos_prio_free); /** * Show threshold for "same space on all OSTs" rule. */ -static ssize_t __qos_thresholdrr_show(struct kobject *kobj, - struct attribute *attr, char *buf, - bool is_mdt) +static ssize_t __qos_threshold_rr_show(struct kobject *kobj, + struct attribute *attr, char *buf, + bool is_mdt) { struct dt_device *dt = container_of(kobj, struct dt_device, dd_kobj); @@ -516,16 +516,16 @@ static ssize_t __qos_thresholdrr_show(struct kobject *kobj, (ltd->ltd_qos.lq_threshold_rr * 100 + 255) >> 8); } -static ssize_t mdt_qos_thresholdrr_show(struct kobject *kobj, - struct attribute *attr, char *buf) +static ssize_t mdt_qos_threshold_rr_show(struct kobject *kobj, + struct attribute *attr, char *buf) { - return __qos_thresholdrr_show(kobj, attr, buf, true); + return __qos_threshold_rr_show(kobj, attr, buf, true); } -static ssize_t qos_thresholdrr_show(struct kobject *kobj, - struct attribute *attr, char *buf) +static ssize_t qos_threshold_rr_show(struct kobject *kobj, + struct attribute *attr, char *buf) { - return __qos_thresholdrr_show(kobj, attr, buf, false); + return __qos_threshold_rr_show(kobj, attr, buf, false); } /** @@ -537,20 +537,31 @@ static ssize_t qos_thresholdrr_show(struct kobject *kobj, * space so that more full OSTs are chosen less often, otherwise use the * round-robin allocator for efficiency and performance. */ -static ssize_t __qos_thresholdrr_store(struct kobject *kobj, - struct attribute *attr, - const char *buffer, size_t count, - bool is_mdt) +static ssize_t __qos_threshold_rr_store(struct kobject *kobj, + struct attribute *attr, + const char *buffer, size_t count, + bool is_mdt) { struct dt_device *dt = container_of(kobj, struct dt_device, dd_kobj); struct lod_device *lod = dt2lod_dev(dt); struct lu_tgt_descs *ltd = is_mdt ? &lod->lod_mdt_descs : &lod->lod_ost_descs; + char buf[6], *tmp; unsigned int val; int rc; - rc = kstrtouint(buffer, 0, &val); + /* "100%\n\0" should be largest string */ + if (count >= sizeof(buf)) + return -ERANGE; + + strncpy(buf, buffer, sizeof(buf)); + buf[sizeof(buf) - 1] = '\0'; + tmp = strchr(buf, '%'); + if (tmp) + *tmp = '\0'; + + rc = kstrtouint(buf, 0, &val); if (rc) return rc; @@ -562,22 +573,22 @@ static ssize_t __qos_thresholdrr_store(struct kobject *kobj, return count; } -static ssize_t mdt_qos_thresholdrr_store(struct kobject *kobj, - struct attribute *attr, - const char *buffer, size_t count) +static ssize_t mdt_qos_threshold_rr_store(struct kobject *kobj, + struct attribute *attr, + const char *buffer, size_t count) { - return __qos_thresholdrr_store(kobj, attr, buffer, count, true); + return __qos_threshold_rr_store(kobj, attr, buffer, count, true); } -static ssize_t qos_thresholdrr_store(struct kobject *kobj, - struct attribute *attr, - const char *buffer, size_t count) +static ssize_t qos_threshold_rr_store(struct kobject *kobj, + struct attribute *attr, + const char *buffer, size_t count) { - return __qos_thresholdrr_store(kobj, attr, buffer, count, false); + return __qos_threshold_rr_store(kobj, attr, buffer, count, false); } -LUSTRE_RW_ATTR(mdt_qos_thresholdrr); -LUSTRE_RW_ATTR(qos_thresholdrr); +LUSTRE_RW_ATTR(mdt_qos_threshold_rr); +LUSTRE_RW_ATTR(qos_threshold_rr); /** * Show expiration period used to refresh cached statfs data, which @@ -908,14 +919,14 @@ static struct attribute *lod_attrs[] = { &lustre_attr_numobd.attr, &lustre_attr_qos_maxage.attr, &lustre_attr_qos_prio_free.attr, - &lustre_attr_qos_thresholdrr.attr, + &lustre_attr_qos_threshold_rr.attr, &lustre_attr_mdt_stripecount.attr, &lustre_attr_mdt_stripetype.attr, &lustre_attr_mdt_activeobd.attr, &lustre_attr_mdt_numobd.attr, &lustre_attr_mdt_qos_maxage.attr, &lustre_attr_mdt_qos_prio_free.attr, - &lustre_attr_mdt_qos_thresholdrr.attr, + &lustre_attr_mdt_qos_threshold_rr.attr, NULL, }; diff --git a/lustre/tests/sanity.sh b/lustre/tests/sanity.sh index 965ebda..c78862e 100644 --- a/lustre/tests/sanity.sh +++ b/lustre/tests/sanity.sh @@ -20788,14 +20788,14 @@ test_qos_mkdir() { lod.lustre-MDT0000-mdtlov.mdt_qos_prio_free | head -n1) lod_qos_prio_free=${lod_qos_prio_free%%%} lod_qos_threshold_rr=$(do_facet mds1 $LCTL get_param -n \ - lod.lustre-MDT0000-mdtlov.mdt_qos_thresholdrr | head -n1) + lod.lustre-MDT0000-mdtlov.mdt_qos_threshold_rr | head -n1) lod_qos_threshold_rr=${lod_qos_threshold_rr%%%} lod_qos_maxage=$(do_facet mds1 $LCTL get_param -n \ lod.lustre-MDT0000-mdtlov.qos_maxage | awk '{ print $1 }') stack_trap "do_nodes $mdts $LCTL set_param \ lod.*.mdt_qos_prio_free=$lod_qos_prio_free > /dev/null" EXIT stack_trap "do_nodes $mdts $LCTL set_param \ - lod.*.mdt_qos_thresholdrr=$lod_qos_threshold_rr > /dev/null" \ + lod.*.mdt_qos_threshold_rr=$lod_qos_threshold_rr > /dev/null" \ EXIT stack_trap "do_nodes $mdts $LCTL set_param \ lod.*.mdt_qos_maxage=$lod_qos_maxage > /dev/null" EXIT @@ -20804,7 +20804,7 @@ test_qos_mkdir() { echo "Mkdir (stripe_count $stripe_count) roundrobin:" $LCTL set_param lmv.*.qos_threshold_rr=100 > /dev/null - do_nodes $mdts $LCTL set_param lod.*.mdt_qos_thresholdrr=100 > /dev/null + do_nodes $mdts $LCTL set_param lod.*.mdt_qos_threshold_rr=100 > /dev/null testdir=$DIR/$tdir-s$stripe_count/rr @@ -20832,7 +20832,7 @@ test_qos_mkdir() { $LCTL set_param lmv.*.qos_threshold_rr=$lmv_qos_threshold_rr > /dev/null do_nodes $mdts $LCTL set_param \ - lod.*.mdt_qos_thresholdrr=$lod_qos_threshold_rr > /dev/null + lod.*.mdt_qos_threshold_rr=$lod_qos_threshold_rr > /dev/null echo echo "Check for uneven MDTs: " -- 1.8.3.1