From: "Benjamin Marzinski" <bmarzins@redhat.com>
To: Hannes Reinecke <hare@suse.de>
Cc: dm-devel@redhat.com, Xose Vazquez Perez <xose.vazquez@gmail.com>,
Martin Wilck <mwilck@suse.com>
Subject: Re: [PATCH v2 1/8] libmultipath: load_config: skip setting unnecessary defaults
Date: Tue, 20 Jun 2017 11:25:03 -0500 [thread overview]
Message-ID: <20170620162503.GH2940@octiron.msp.redhat.com> (raw)
In-Reply-To: <4dcb7f57-ec1e-90e9-1f6a-7c8572578d1d@suse.de>
On Tue, Jun 20, 2017 at 04:36:47PM +0200, Hannes Reinecke wrote:
> On 06/20/2017 01:46 PM, Martin Wilck wrote:
> > We have the logic for setting defaults for paths and maps
> > in propsel.c. By pre-setting conf values with defaults in
> > load_config(), we generate irritating log messages like
> > 'features = "0" (setting: multipath.conf defaults/devices section)'
> > if multipath.conf doesn't contain a features setting at all.
> >
> > For some config settings, we need to use declare_def_snprint_defint()
> > now to make sure "multipathd show config" prints all defaults correctly.
> > To avoid confusion, we don't do this for "max_sectors", because
> > multipathd leaves this untouched by default.
> >
> > Signed-off-by: Martin Wilck <mwilck@suse.com>
> > ---
> > libmultipath/config.c | 16 ----------------
> > libmultipath/dict.c | 11 +++++++----
> > libmultipath/propsel.c | 5 +++++
> > 3 files changed, 12 insertions(+), 20 deletions(-)
> >
> > diff --git a/libmultipath/config.c b/libmultipath/config.c
> > index bb6619b3..61bbba91 100644
> > --- a/libmultipath/config.c
> > +++ b/libmultipath/config.c
> > @@ -599,40 +599,24 @@ load_config (char * file)
> > if (!conf->verbosity)
> > conf->verbosity = DEFAULT_VERBOSITY;
> >
> > - conf->minio = DEFAULT_MINIO;
> > - conf->minio_rq = DEFAULT_MINIO_RQ;
> > get_sys_max_fds(&conf->max_fds);
> > conf->bindings_file = set_default(DEFAULT_BINDINGS_FILE);
> > conf->wwids_file = set_default(DEFAULT_WWIDS_FILE);
> > conf->multipath_dir = set_default(DEFAULT_MULTIPATHDIR);
> > - conf->features = set_default(DEFAULT_FEATURES);
> > - conf->flush_on_last_del = DEFAULT_FLUSH;
> > conf->attribute_flags = 0;
> > conf->reassign_maps = DEFAULT_REASSIGN_MAPS;
> > conf->checkint = DEFAULT_CHECKINT;
> > conf->max_checkint = 0;
> > - conf->pgfailback = DEFAULT_FAILBACK;
> > - conf->fast_io_fail = DEFAULT_FAST_IO_FAIL;
> > - conf->retain_hwhandler = DEFAULT_RETAIN_HWHANDLER;
> > - conf->detect_prio = DEFAULT_DETECT_PRIO;
> > - conf->detect_checker = DEFAULT_DETECT_CHECKER;
> > conf->force_sync = DEFAULT_FORCE_SYNC;
> > conf->partition_delim = DEFAULT_PARTITION_DELIM;
> > conf->processed_main_config = 0;
> > conf->find_multipaths = DEFAULT_FIND_MULTIPATHS;
> > conf->uxsock_timeout = DEFAULT_REPLY_TIMEOUT;
> > - conf->uid_attribute = set_default(DEFAULT_UID_ATTRIBUTE);
> > conf->retrigger_tries = DEFAULT_RETRIGGER_TRIES;
> > conf->retrigger_delay = DEFAULT_RETRIGGER_DELAY;
> > conf->uev_wait_timeout = DEFAULT_UEV_WAIT_TIMEOUT;
> > - conf->deferred_remove = DEFAULT_DEFERRED_REMOVE;
> > - conf->skip_kpartx = DEFAULT_SKIP_KPARTX;
> > conf->disable_changed_wwids = DEFAULT_DISABLE_CHANGED_WWIDS;
> > conf->remove_retries = 0;
> > - conf->max_sectors_kb = DEFAULT_MAX_SECTORS_KB;
> > - conf->san_path_err_threshold = DEFAULT_ERR_CHECKS;
> > - conf->san_path_err_forget_rate = DEFAULT_ERR_CHECKS;
> > - conf->san_path_err_recovery_time = DEFAULT_ERR_CHECKS;
> >
> > /*
> > * preload default hwtable
> > diff --git a/libmultipath/dict.c b/libmultipath/dict.c
> > index 82066f67..9dc10904 100644
> > --- a/libmultipath/dict.c
> > +++ b/libmultipath/dict.c
> > @@ -630,7 +630,7 @@ print_fast_io_fail(char * buff, int len, void *ptr)
> > }
> >
> > declare_def_handler(fast_io_fail, set_fast_io_fail)
> > -declare_def_snprint(fast_io_fail, print_fast_io_fail)
> > +declare_def_snprint_defint(fast_io_fail, print_fast_io_fail, DEFAULT_FAST_IO_FAIL)
> > declare_ovr_handler(fast_io_fail, set_fast_io_fail)
> > declare_ovr_snprint(fast_io_fail, print_fast_io_fail)
> > declare_hw_handler(fast_io_fail, set_fast_io_fail)
> > @@ -1082,7 +1082,8 @@ declare_hw_snprint(delay_wait_checks, print_off_int_undef)
> > declare_mp_handler(delay_wait_checks, set_off_int_undef)
> > declare_mp_snprint(delay_wait_checks, print_off_int_undef)
> > declare_def_handler(san_path_err_threshold, set_off_int_undef)
> > -declare_def_snprint(san_path_err_threshold, print_off_int_undef)
> > +declare_def_snprint_defint(san_path_err_threshold, print_off_int_undef,
> > + DEFAULT_ERR_CHECKS)
> > declare_ovr_handler(san_path_err_threshold, set_off_int_undef)
> > declare_ovr_snprint(san_path_err_threshold, print_off_int_undef)
> > declare_hw_handler(san_path_err_threshold, set_off_int_undef)
> > @@ -1090,7 +1091,8 @@ declare_hw_snprint(san_path_err_threshold, print_off_int_undef)
> > declare_mp_handler(san_path_err_threshold, set_off_int_undef)
> > declare_mp_snprint(san_path_err_threshold, print_off_int_undef)
> > declare_def_handler(san_path_err_forget_rate, set_off_int_undef)
> > -declare_def_snprint(san_path_err_forget_rate, print_off_int_undef)
> > +declare_def_snprint_defint(san_path_err_forget_rate, print_off_int_undef,
> > + DEFAULT_ERR_CHECKS)
> > declare_ovr_handler(san_path_err_forget_rate, set_off_int_undef)
> > declare_ovr_snprint(san_path_err_forget_rate, print_off_int_undef)
> > declare_hw_handler(san_path_err_forget_rate, set_off_int_undef)
> > @@ -1098,7 +1100,8 @@ declare_hw_snprint(san_path_err_forget_rate, print_off_int_undef)
> > declare_mp_handler(san_path_err_forget_rate, set_off_int_undef)
> > declare_mp_snprint(san_path_err_forget_rate, print_off_int_undef)
> > declare_def_handler(san_path_err_recovery_time, set_off_int_undef)
> > -declare_def_snprint(san_path_err_recovery_time, print_off_int_undef)
> > +declare_def_snprint_defint(san_path_err_recovery_time, print_off_int_undef,
> > + DEFAULT_ERR_CHECKS)
> > declare_ovr_handler(san_path_err_recovery_time, set_off_int_undef)
> > declare_ovr_snprint(san_path_err_recovery_time, print_off_int_undef)
> > declare_hw_handler(san_path_err_recovery_time, set_off_int_undef)
> > diff --git a/libmultipath/propsel.c b/libmultipath/propsel.c
> > index 385063aa..68436433 100644
> > --- a/libmultipath/propsel.c
> > +++ b/libmultipath/propsel.c
> > @@ -752,6 +752,11 @@ int select_max_sectors_kb(struct config *conf, struct multipath * mp)
> > mp_set_ovr(max_sectors_kb);
> > mp_set_hwe(max_sectors_kb);
> > mp_set_conf(max_sectors_kb);
> > + mp_set_default(max_sectors_kb, DEFAULT_MAX_SECTORS_KB);
> > + /*
> > + * In the default case, we will not modify max_sectors_kb.
> > + * Don't print a log message to avoid user confusion.
> > + */
> > return 0;
> > out:
> > condlog(3, "%s: max_sectors_kb = %i %s", mp->alias, mp->max_sectors_kb,
> >
> Errm. You just set the default value, no?
> Care to clarify this comment?
The default value is "undefined". This isn't strictly necessary if all
the other code is correct, but in case mpp->max_sectors_kb was
previously set to something (or never zeroed out initially), this will
correctly set it back to undefined.
-Ben
>
> Cheers,
>
> Hannes
> --
> Dr. Hannes Reinecke Teamlead Storage & Networking
> hare@suse.de +49 911 74053 688
> SUSE LINUX GmbH, Maxfeldstr. 5, 90409 Nürnberg
> GF: F. Imendörffer, J. Smithard, J. Guild, D. Upmanyu, G. Norton
> HRB 21284 (AG Nürnberg)
next prev parent reply other threads:[~2017-06-20 16:25 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-20 11:46 [PATCH v2 0/8] multipath-tools: no_path_retry/queue_if_no_path logic Martin Wilck
2017-06-20 11:46 ` [PATCH v2 1/8] libmultipath: load_config: skip setting unnecessary defaults Martin Wilck
2017-06-20 14:36 ` Hannes Reinecke
2017-06-20 16:25 ` Benjamin Marzinski [this message]
2017-06-20 18:28 ` [PATCH] Clarify commit message in select_max_sectors_kb() Martin Wilck
2017-06-20 11:46 ` [PATCH v2 2/8] libmultipath: add/remove_feature: use const char* for feature Martin Wilck
2017-06-20 15:01 ` Hannes Reinecke
2017-06-20 11:46 ` [PATCH v2 3/8] libmultipath: clarify option conflicts for "features" Martin Wilck
2017-06-20 11:46 ` [PATCH v2 4/8] libmultipath: merge_hwe: fix queue_if_no_path logic Martin Wilck
2017-06-20 11:46 ` [PATCH v2 5/8] libmultipath: assemble_map: " Martin Wilck
2017-06-20 11:46 ` [PATCH v2 6/8] multipath.conf.5: document no_path_retry vs. queue_if_no_path Martin Wilck
2017-06-20 11:46 ` [PATCH v2 7/8] multipath.conf.5: Remove ??? and other minor fixes Martin Wilck
2017-06-20 11:46 ` [PATCH v2 8/8] libmultipath: add deprecated warning for some features settings Martin Wilck
2017-06-20 18:44 ` [PATCH v2 0/8] multipath-tools: no_path_retry/queue_if_no_path logic Benjamin Marzinski
2017-06-20 19:04 ` Martin Wilck
2017-06-20 21:54 ` Martin Wilck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170620162503.GH2940@octiron.msp.redhat.com \
--to=bmarzins@redhat.com \
--cc=dm-devel@redhat.com \
--cc=hare@suse.de \
--cc=mwilck@suse.com \
--cc=xose.vazquez@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox