diff mbox series

[4/8] libmultipath: pass file and line number to keyword handlers

Message ID 1633550663-25571-5-git-send-email-bmarzins@redhat.com (mailing list archive)
State Not Applicable, archived
Delegated to: christophe varoqui
Headers show
Series improving config parsing warnings | expand

Commit Message

Benjamin Marzinski Oct. 6, 2021, 8:04 p.m. UTC
This will make it possible for the keyword handlers to print more useful
warning messages. It will be used by future patches.

Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
 libmultipath/dict.c   | 143 +++++++++++++++++++++++++-----------------
 libmultipath/parser.c |   3 +-
 libmultipath/parser.h |   2 +-
 3 files changed, 90 insertions(+), 58 deletions(-)

Comments

Martin Wilck Nov. 4, 2021, 8:55 p.m. UTC | #1
On Wed, 2021-10-06 at 15:04 -0500, Benjamin Marzinski wrote:
> This will make it possible for the keyword handlers to print more
> useful
> warning messages. It will be used by future patches.
> 
> Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>

Nit: There's one very long line (349).

Apart from that, ack.



> ---
>  libmultipath/dict.c   | 143 +++++++++++++++++++++++++-----------------
>  libmultipath/parser.c |   3 +-
>  libmultipath/parser.h |   2 +-
>  3 files changed, 90 insertions(+), 58 deletions(-)
> 
> diff --git a/libmultipath/dict.c b/libmultipath/dict.c
> index 7a727389..eb2c44c0 100644
> --- a/libmultipath/dict.c
> +++ b/libmultipath/dict.c
> @@ -29,7 +29,7 @@
>  #include "strbuf.h"
>  
>  static int
> -set_int(vector strvec, void *ptr)
> +set_int(vector strvec, void *ptr, const char *file, int line_nr)
>  {
>         int *int_ptr = (int *)ptr;
>         char *buff, *eptr;
> @@ -58,7 +58,7 @@ set_int(vector strvec, void *ptr)
>  }
>  
>  static int
> -set_uint(vector strvec, void *ptr)
> +set_uint(vector strvec, void *ptr, const char *file, int line_nr)
>  {
>         unsigned int *uint_ptr = (unsigned int *)ptr;
>         char *buff, *eptr, *p;
> @@ -90,7 +90,7 @@ set_uint(vector strvec, void *ptr)
>  }
>  
>  static int
> -set_str(vector strvec, void *ptr)
> +set_str(vector strvec, void *ptr, const char *file, int line_nr)
>  {
>         char **str_ptr = (char **)ptr;
>  
> @@ -105,7 +105,7 @@ set_str(vector strvec, void *ptr)
>  }
>  
>  static int
> -set_yes_no(vector strvec, void *ptr)
> +set_yes_no(vector strvec, void *ptr, const char *file, int line_nr)
>  {
>         char * buff;
>         int *int_ptr = (int *)ptr;
> @@ -124,7 +124,7 @@ set_yes_no(vector strvec, void *ptr)
>  }
>  
>  static int
> -set_yes_no_undef(vector strvec, void *ptr)
> +set_yes_no_undef(vector strvec, void *ptr, const char *file, int
> line_nr)
>  {
>         char * buff;
>         int *int_ptr = (int *)ptr;
> @@ -187,9 +187,10 @@ static int print_yes_no_undef(struct strbuf *buff,
> long v)
>  
>  #define declare_def_handler(option,
> function)                          \
>  static
> int                                                             \
> -def_ ## option ## _handler (struct config *conf, vector
> strvec)                \
> +def_ ## option ## _handler (struct config *conf, vector
> strvec,                \
> +                           const char *file, int
> line_nr)              \
>  {                                                                     
>  \
> -       return function (strvec, &conf-
> >option);                        \
> +       return function (strvec, &conf->option, file,
> line_nr);         \
>  }
>  
>  #define declare_def_snprint(option,
> function)                          \
> @@ -224,12 +225,13 @@ snprint_def_ ## option (struct config *conf,
> struct strbuf *buff, \
>  
>  #define declare_hw_handler(option,
> function)                           \
>  static
> int                                                             \
> -hw_ ## option ## _handler (struct config *conf, vector
> strvec)         \
> +hw_ ## option ## _handler (struct config *conf, vector
> strvec,         \
> +                          const char *file, int
> line_nr)               \
>  {                                                                     
>  \
>         struct hwentry * hwe = VECTOR_LAST_SLOT(conf-
> >hwtable);         \
>         if
> (!hwe)                                                       \
>                 return
> 1;                                               \
> -       return function (strvec, &hwe-
> >option);                         \
> +       return function (strvec, &hwe->option, file,
> line_nr);          \
>  }
>  
>  #define declare_hw_snprint(option,
> function)                           \
> @@ -243,11 +245,12 @@ snprint_hw_ ## option (struct config *conf,
> struct strbuf *buff,  \
>  
>  #define declare_ovr_handler(option,
> function)                          \
>  static
> int                                                             \
> -ovr_ ## option ## _handler (struct config *conf, vector
> strvec)                \
> +ovr_ ## option ## _handler (struct config *conf, vector
> strvec,                \
> +                           const char *file, int
> line_nr)              \
>  {                                                                     
>  \
>         if (!conf-
> >overrides)                                           \
>                 return
> 1;                                               \
> -       return function (strvec, &conf->overrides-
> >option);             \
> +       return function (strvec, &conf->overrides->option, file,
> line_nr); \
>  }
>  
>  #define declare_ovr_snprint(option,
> function)                          \
> @@ -260,12 +263,13 @@ snprint_ovr_ ## option (struct config *conf,
> struct strbuf *buff, \
>  
>  #define declare_mp_handler(option,
> function)                           \
>  static
> int                                                             \
> -mp_ ## option ## _handler (struct config *conf, vector
> strvec)         \
> +mp_ ## option ## _handler (struct config *conf, vector
> strvec,         \
> +                          const char *file, int
> line_nr)               \
>  {                                                                     
>  \
>         struct mpentry * mpe = VECTOR_LAST_SLOT(conf-
> >mptable);         \
>         if
> (!mpe)                                                       \
>                 return
> 1;                                               \
> -       return function (strvec, &mpe-
> >option);                         \
> +       return function (strvec, &mpe->option, file,
> line_nr);          \
>  }
>  
>  #define declare_mp_snprint(option,
> function)                           \
> @@ -277,9 +281,10 @@ snprint_mp_ ## option (struct config *conf, struct
> strbuf *buff,   \
>         return function(buff, mpe-
> >option);                             \
>  }
>  
> -static int checkint_handler(struct config *conf, vector strvec)
> +static int checkint_handler(struct config *conf, vector strvec,
> +                           const char *file, int line_nr)
>  {
> -       int rc = set_uint(strvec, &conf->checkint);
> +       int rc = set_uint(strvec, &conf->checkint, file, line_nr);
>  
>         if (rc)
>                 return rc;
> @@ -302,9 +307,10 @@ declare_def_snprint(reassign_maps, print_yes_no)
>  declare_def_handler(multipath_dir, set_str)
>  declare_def_snprint(multipath_dir, print_str)
>  
> -static int def_partition_delim_handler(struct config *conf, vector
> strvec)
> +static int def_partition_delim_handler(struct config *conf, vector
> strvec,
> +                                      const char *file, int line_nr)
>  {
> -       int rc = set_str(strvec, &conf->partition_delim);
> +       int rc = set_str(strvec, &conf->partition_delim, file,
> line_nr);
>  
>         if (rc != 0)
>                 return rc;
> @@ -334,13 +340,13 @@ static const char * const
> find_multipaths_optvals[] = {
>  };
>  
>  static int
> -def_find_multipaths_handler(struct config *conf, vector strvec)
> +def_find_multipaths_handler(struct config *conf, vector strvec,
> +                           const char *file, int line_nr)
>  {
>         char *buff;
>         int i;
>  
> -       if (set_yes_no_undef(strvec, &conf->find_multipaths) == 0 &&
> -           conf->find_multipaths != FIND_MULTIPATHS_UNDEF)
> +       if (set_yes_no_undef(strvec, &conf->find_multipaths, file,
> line_nr) == 0 && conf->find_multipaths != FIND_MULTIPATHS_UNDEF)
>                 return 0;
>  
>         buff = set_value(strvec);
> @@ -396,7 +402,8 @@ static int snprint_uid_attrs(struct config *conf,
> struct strbuf *buff,
>         return total;
>  }
>  
> -static int uid_attrs_handler(struct config *conf, vector strvec)
> +static int uid_attrs_handler(struct config *conf, vector strvec,
> +                            const char *file, int line_nr)
>  {
>         char *val;
>  
> @@ -597,7 +604,8 @@ declare_hw_handler(skip_kpartx, set_yes_no_undef)
>  declare_hw_snprint(skip_kpartx, print_yes_no_undef)
>  declare_mp_handler(skip_kpartx, set_yes_no_undef)
>  declare_mp_snprint(skip_kpartx, print_yes_no_undef)
> -static int def_disable_changed_wwids_handler(struct config *conf,
> vector strvec)
> +static int def_disable_changed_wwids_handler(struct config *conf,
> vector strvec,
> +                                            const char *file, int
> line_nr)
>  {
>         return 0;
>  }
> @@ -629,20 +637,23 @@ declare_def_snprint_defstr(enable_foreign,
> print_str,
>                            DEFAULT_ENABLE_FOREIGN)
>  
>  static int
> -def_config_dir_handler(struct config *conf, vector strvec)
> +def_config_dir_handler(struct config *conf, vector strvec, const char
> *file,
> +                      int line_nr)
>  {
>         /* this is only valid in the main config file */
>         if (conf->processed_main_config)
>                 return 0;
> -       return set_str(strvec, &conf->config_dir);
> +       return set_str(strvec, &conf->config_dir, file, line_nr);
>  }
>  declare_def_snprint(config_dir, print_str)
>  
>  #define declare_def_attr_handler(option,
> function)                     \
>  static
> int                                                             \
> -def_ ## option ## _handler (struct config *conf, vector
> strvec)                \
> +def_ ## option ## _handler (struct config *conf, vector
> strvec,                \
> +                           const char *file, int
> line_nr)              \
>  {                                                                     
>  \
> -       return function (strvec, &conf->option, &conf-
> >attribute_flags);\
> +       return function (strvec, &conf->option, &conf->attribute_flags,
> \
> +                        file,
> line_nr);                                \
>  }
>  
>  #define declare_def_attr_snprint(option,
> function)                     \
> @@ -655,12 +666,14 @@ snprint_def_ ## option (struct config *conf,
> struct strbuf *buff, \
>  
>  #define declare_mp_attr_handler(option,
> function)                      \
>  static
> int                                                             \
> -mp_ ## option ## _handler (struct config *conf, vector
> strvec)         \
> +mp_ ## option ## _handler (struct config *conf, vector
> strvec,         \
> +                          const char *file, int
> line_nr)               \
>  {                                                                     
>  \
>         struct mpentry * mpe = VECTOR_LAST_SLOT(conf-
> >mptable);         \
>         if
> (!mpe)                                                       \
>                 return
> 1;                                               \
> -       return function (strvec, &mpe->option, &mpe-
> >attribute_flags);  \
> +       return function (strvec, &mpe->option, &mpe-
> >attribute_flags,   \
> +                        file,
> line_nr);                                \
>  }
>  
>  #define declare_mp_attr_snprint(option,
> function)                      \
> @@ -673,7 +686,7 @@ snprint_mp_ ## option (struct config *conf, struct
> strbuf *buff,    \
>  }
>  
>  static int
> -set_mode(vector strvec, void *ptr, int *flags)
> +set_mode(vector strvec, void *ptr, int *flags, const char *file, int
> line_nr)
>  {
>         mode_t mode;
>         mode_t *mode_ptr = (mode_t *)ptr;
> @@ -694,7 +707,7 @@ set_mode(vector strvec, void *ptr, int *flags)
>  }
>  
>  static int
> -set_uid(vector strvec, void *ptr, int *flags)
> +set_uid(vector strvec, void *ptr, int *flags, const char *file, int
> line_nr)
>  {
>         uid_t uid;
>         uid_t *uid_ptr = (uid_t *)ptr;
> @@ -719,7 +732,7 @@ set_uid(vector strvec, void *ptr, int *flags)
>  }
>  
>  static int
> -set_gid(vector strvec, void *ptr, int *flags)
> +set_gid(vector strvec, void *ptr, int *flags, const char *file, int
> line_nr)
>  {
>         gid_t gid;
>         gid_t *gid_ptr = (gid_t *)ptr;
> @@ -786,7 +799,7 @@ declare_mp_attr_handler(gid, set_gid)
>  declare_mp_attr_snprint(gid, print_gid)
>  
>  static int
> -set_undef_off_zero(vector strvec, void *ptr)
> +set_undef_off_zero(vector strvec, void *ptr, const char *file, int
> line_nr)
>  {
>         char * buff;
>         int *int_ptr = (int *)ptr;
> @@ -827,7 +840,7 @@ declare_hw_handler(fast_io_fail,
> set_undef_off_zero)
>  declare_hw_snprint(fast_io_fail, print_undef_off_zero)
>  
>  static int
> -set_dev_loss(vector strvec, void *ptr)
> +set_dev_loss(vector strvec, void *ptr, const char *file, int line_nr)
>  {
>         char * buff;
>         unsigned int *uint_ptr = (unsigned int *)ptr;
> @@ -870,7 +883,7 @@ declare_hw_handler(eh_deadline, set_undef_off_zero)
>  declare_hw_snprint(eh_deadline, print_undef_off_zero)
>  
>  static int
> -set_pgpolicy(vector strvec, void *ptr)
> +set_pgpolicy(vector strvec, void *ptr, const char *file, int line_nr)
>  {
>         char * buff;
>         int *int_ptr = (int *)ptr;
> @@ -936,7 +949,8 @@ get_sys_max_fds(int *max_fds)
>  
>  
>  static int
> -max_fds_handler(struct config *conf, vector strvec)
> +max_fds_handler(struct config *conf, vector strvec, const char *file,
> +               int line_nr)
>  {
>         char * buff;
>         int r = 0, max_fds;
> @@ -981,7 +995,7 @@ snprint_max_fds (struct config *conf, struct strbuf
> *buff, const void *data)
>  }
>  
>  static int
> -set_rr_weight(vector strvec, void *ptr)
> +set_rr_weight(vector strvec, void *ptr, const char *file, int line_nr)
>  {
>         int *int_ptr = (int *)ptr;
>         char * buff;
> @@ -1025,7 +1039,7 @@ declare_mp_handler(rr_weight, set_rr_weight)
>  declare_mp_snprint(rr_weight, print_rr_weight)
>  
>  static int
> -set_pgfailback(vector strvec, void *ptr)
> +set_pgfailback(vector strvec, void *ptr, const char *file, int
> line_nr)
>  {
>         int *int_ptr = (int *)ptr;
>         char * buff;
> @@ -1075,7 +1089,7 @@ declare_mp_handler(pgfailback, set_pgfailback)
>  declare_mp_snprint(pgfailback, print_pgfailback)
>  
>  static int
> -no_path_retry_helper(vector strvec, void *ptr)
> +no_path_retry_helper(vector strvec, void *ptr, const char *file, int
> line_nr)
>  {
>         int *int_ptr = (int *)ptr;
>         char * buff;
> @@ -1120,7 +1134,8 @@ declare_mp_handler(no_path_retry,
> no_path_retry_helper)
>  declare_mp_snprint(no_path_retry, print_no_path_retry)
>  
>  static int
> -def_log_checker_err_handler(struct config *conf, vector strvec)
> +def_log_checker_err_handler(struct config *conf, vector strvec,
> +                           const char *file, int line_nr)
>  {
>         char * buff;
>  
> @@ -1193,7 +1208,8 @@ print_reservation_key(struct strbuf *buff,
>  }
>  
>  static int
> -def_reservation_key_handler(struct config *conf, vector strvec)
> +def_reservation_key_handler(struct config *conf, vector strvec,
> +                           const char *file, int line_nr)
>  {
>         return set_reservation_key(strvec, &conf->reservation_key,
>                                    &conf->sa_flags,
> @@ -1209,7 +1225,8 @@ snprint_def_reservation_key (struct config *conf,
> struct strbuf *buff,
>  }
>  
>  static int
> -mp_reservation_key_handler(struct config *conf, vector strvec)
> +mp_reservation_key_handler(struct config *conf, vector strvec, const
> char *file,
> +                          int line_nr)
>  {
>         struct mpentry * mpe = VECTOR_LAST_SLOT(conf->mptable);
>         if (!mpe)
> @@ -1229,7 +1246,7 @@ snprint_mp_reservation_key (struct config *conf,
> struct strbuf *buff,
>  }
>  
>  static int
> -set_off_int_undef(vector strvec, void *ptr)
> +set_off_int_undef(vector strvec, void *ptr, const char *file, int
> line_nr)
>  {
>         int *int_ptr = (int *)ptr;
>         char * buff;
> @@ -1370,7 +1387,8 @@ declare_hw_snprint(recheck_wwid,
> print_yes_no_undef)
>  
>  
>  static int
> -def_uxsock_timeout_handler(struct config *conf, vector strvec)
> +def_uxsock_timeout_handler(struct config *conf, vector strvec, const
> char *file,
> +                          int line_nr)
>  {
>         unsigned int uxsock_timeout;
>         char *buff;
> @@ -1390,7 +1408,8 @@ def_uxsock_timeout_handler(struct config *conf,
> vector strvec)
>  }
>  
>  static int
> -hw_vpd_vendor_handler(struct config *conf, vector strvec)
> +hw_vpd_vendor_handler(struct config *conf, vector strvec, const char
> *file,
> +                     int line_nr)
>  {
>         int i;
>         char *buff;
> @@ -1430,7 +1449,8 @@ snprint_hw_vpd_vendor(struct config *conf, struct
> strbuf *buff,
>   * blacklist block handlers
>   */
>  static int
> -blacklist_handler(struct config *conf, vector strvec)
> +blacklist_handler(struct config *conf, vector strvec, const char*file,
> +                 int line_nr)
>  {
>         if (!conf->blist_devnode)
>                 conf->blist_devnode = vector_alloc();
> @@ -1452,7 +1472,8 @@ blacklist_handler(struct config *conf, vector
> strvec)
>  }
>  
>  static int
> -blacklist_exceptions_handler(struct config *conf, vector strvec)
> +blacklist_exceptions_handler(struct config *conf, vector strvec,
> +                            const char *file, int line_nr)
>  {
>         if (!conf->elist_devnode)
>                 conf->elist_devnode = vector_alloc();
> @@ -1475,7 +1496,8 @@ blacklist_exceptions_handler(struct config *conf,
> vector strvec)
>  
>  #define
> declare_ble_handler(option)                                    \
>  static
> int                                                             \
> -ble_ ## option ## _handler (struct config *conf, vector
> strvec)                \
> +ble_ ## option ## _handler (struct config *conf, vector
> strvec,                \
> +                           const char *file, int
> line_nr)              \
>  {                                                                     
>  \
>         char
> *buff;                                                     \
>         int
> rc;                                                         \
> @@ -1494,7 +1516,8 @@ ble_ ## option ## _handler (struct config *conf,
> vector strvec)           \
>  
>  #define declare_ble_device_handler(name, option, vend,
> prod)           \
>  static
> int                                                             \
> -ble_ ## option ## _ ## name ## _handler (struct config *conf, vector
> strvec) \
> +ble_ ## option ## _ ## name ## _handler (struct config *conf, vector
> strvec, \
> +                                        const char *file, int
> line_nr) \
>  {                                                                     
>  \
>         char *
> buff;                                                    \
>         int
> rc;                                                         \
> @@ -1536,13 +1559,15 @@ snprint_ble_simple (struct config *conf, struct
> strbuf *buff, const void *data)
>  }
>  
>  static int
> -ble_device_handler(struct config *conf, vector strvec)
> +ble_device_handler(struct config *conf, vector strvec, const char
> *file,
> +                  int line_nr)
>  {
>         return alloc_ble_device(conf->blist_device);
>  }
>  
>  static int
> -ble_except_device_handler(struct config *conf, vector strvec)
> +ble_except_device_handler(struct config *conf, vector strvec, const
> char *file,
> +                         int line_nr)
>  {
>         return alloc_ble_device(conf->elist_device);
>  }
> @@ -1574,7 +1599,8 @@ static int snprint_bled_product(struct config
> *conf, struct strbuf *buff,
>   * devices block handlers
>   */
>  static int
> -devices_handler(struct config *conf, vector strvec)
> +devices_handler(struct config *conf, vector strvec, const char *file,
> +               int line_nr)
>  {
>         if (!conf->hwtable)
>                 conf->hwtable = vector_alloc();
> @@ -1586,7 +1612,8 @@ devices_handler(struct config *conf, vector
> strvec)
>  }
>  
>  static int
> -device_handler(struct config *conf, vector strvec)
> +device_handler(struct config *conf, vector strvec, const char *file,
> +              int line_nr)
>  {
>         struct hwentry * hwe;
>  
> @@ -1623,7 +1650,8 @@ declare_hw_snprint(hwhandler, print_str)
>   * overrides handlers
>   */
>  static int
> -overrides_handler(struct config *conf, vector strvec)
> +overrides_handler(struct config *conf, vector strvec, const char
> *file,
> +                 int line_nr)
>  {
>         if (!conf->overrides)
>                 conf->overrides = alloc_hwe();
> @@ -1640,7 +1668,8 @@ overrides_handler(struct config *conf, vector
> strvec)
>   * multipaths block handlers
>   */
>  static int
> -multipaths_handler(struct config *conf, vector strvec)
> +multipaths_handler(struct config *conf, vector strvec, const char
> *file,
> +                  int line_nr)
>  {
>         if (!conf->mptable)
>                 conf->mptable = vector_alloc();
> @@ -1652,7 +1681,8 @@ multipaths_handler(struct config *conf, vector
> strvec)
>  }
>  
>  static int
> -multipath_handler(struct config *conf, vector strvec)
> +multipath_handler(struct config *conf, vector strvec, const char
> *file,
> +                 int line_nr)
>  {
>         struct mpentry * mpe;
>  
> @@ -1681,7 +1711,8 @@ declare_mp_snprint(alias, print_str)
>   */
>  
>  static int
> -deprecated_handler(struct config *conf, vector strvec)
> +deprecated_handler(struct config *conf, vector strvec, const char
> *file,
> +                  int line_nr)
>  {
>         char * buff;
>  
> diff --git a/libmultipath/parser.c b/libmultipath/parser.c
> index d5595fb0..68262d0e 100644
> --- a/libmultipath/parser.c
> +++ b/libmultipath/parser.c
> @@ -558,7 +558,8 @@ process_stream(struct config *conf, FILE *stream,
> vector keywords,
>                                                 goto out;
>                                 }
>                                 if (keyword->handler) {
> -                                   t = keyword->handler(conf, strvec);
> +                                   t = keyword->handler(conf, strvec,
> file,
> +                                                        line_nr);
>                                         r += t;
>                                         if (t)
>                                                 condlog(1, "%s line %d,
> parsing failed: %s",
> diff --git a/libmultipath/parser.h b/libmultipath/parser.h
> index 3452bde1..11ea2278 100644
> --- a/libmultipath/parser.h
> +++ b/libmultipath/parser.h
> @@ -43,7 +43,7 @@ struct strbuf;
>  
>  /* keyword definition */
>  typedef int print_fn(struct config *, struct strbuf *, const void *);
> -typedef int handler_fn(struct config *, vector);
> +typedef int handler_fn(struct config *, vector, const char *file, int
> line_nr);
>  
>  struct keyword {
>         char *string;




--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel
Benjamin Marzinski Nov. 5, 2021, 5:33 p.m. UTC | #2
On Thu, Nov 04, 2021 at 08:55:02PM +0000, Martin Wilck wrote:
> On Wed, 2021-10-06 at 15:04 -0500, Benjamin Marzinski wrote:
> > This will make it possible for the keyword handlers to print more
> > useful
> > warning messages. It will be used by future patches.
> > 
> > Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
> 
> Nit: There's one very long line (349).
> 
> Apart from that, ack.

It gets removed by "libmultipath: cleanup invalid config handling", but
I can fix it in this patch, if you'd like.

-Ben

> 
> 
> 
> > ---
> >  libmultipath/dict.c   | 143 +++++++++++++++++++++++++-----------------
> >  libmultipath/parser.c |   3 +-
> >  libmultipath/parser.h |   2 +-
> >  3 files changed, 90 insertions(+), 58 deletions(-)
> > 
> > diff --git a/libmultipath/dict.c b/libmultipath/dict.c
> > index 7a727389..eb2c44c0 100644
> > --- a/libmultipath/dict.c
> > +++ b/libmultipath/dict.c
> > @@ -29,7 +29,7 @@
> >  #include "strbuf.h"
> >  
> >  static int
> > -set_int(vector strvec, void *ptr)
> > +set_int(vector strvec, void *ptr, const char *file, int line_nr)
> >  {
> >         int *int_ptr = (int *)ptr;
> >         char *buff, *eptr;
> > @@ -58,7 +58,7 @@ set_int(vector strvec, void *ptr)
> >  }
> >  
> >  static int
> > -set_uint(vector strvec, void *ptr)
> > +set_uint(vector strvec, void *ptr, const char *file, int line_nr)
> >  {
> >         unsigned int *uint_ptr = (unsigned int *)ptr;
> >         char *buff, *eptr, *p;
> > @@ -90,7 +90,7 @@ set_uint(vector strvec, void *ptr)
> >  }
> >  
> >  static int
> > -set_str(vector strvec, void *ptr)
> > +set_str(vector strvec, void *ptr, const char *file, int line_nr)
> >  {
> >         char **str_ptr = (char **)ptr;
> >  
> > @@ -105,7 +105,7 @@ set_str(vector strvec, void *ptr)
> >  }
> >  
> >  static int
> > -set_yes_no(vector strvec, void *ptr)
> > +set_yes_no(vector strvec, void *ptr, const char *file, int line_nr)
> >  {
> >         char * buff;
> >         int *int_ptr = (int *)ptr;
> > @@ -124,7 +124,7 @@ set_yes_no(vector strvec, void *ptr)
> >  }
> >  
> >  static int
> > -set_yes_no_undef(vector strvec, void *ptr)
> > +set_yes_no_undef(vector strvec, void *ptr, const char *file, int
> > line_nr)
> >  {
> >         char * buff;
> >         int *int_ptr = (int *)ptr;
> > @@ -187,9 +187,10 @@ static int print_yes_no_undef(struct strbuf *buff,
> > long v)
> >  
> >  #define declare_def_handler(option,
> > function)                          \
> >  static
> > int                                                             \
> > -def_ ## option ## _handler (struct config *conf, vector
> > strvec)                \
> > +def_ ## option ## _handler (struct config *conf, vector
> > strvec,                \
> > +                           const char *file, int
> > line_nr)              \
> >  {                                                                     
> >  \
> > -       return function (strvec, &conf-
> > >option);                        \
> > +       return function (strvec, &conf->option, file,
> > line_nr);         \
> >  }
> >  
> >  #define declare_def_snprint(option,
> > function)                          \
> > @@ -224,12 +225,13 @@ snprint_def_ ## option (struct config *conf,
> > struct strbuf *buff, \
> >  
> >  #define declare_hw_handler(option,
> > function)                           \
> >  static
> > int                                                             \
> > -hw_ ## option ## _handler (struct config *conf, vector
> > strvec)         \
> > +hw_ ## option ## _handler (struct config *conf, vector
> > strvec,         \
> > +                          const char *file, int
> > line_nr)               \
> >  {                                                                     
> >  \
> >         struct hwentry * hwe = VECTOR_LAST_SLOT(conf-
> > >hwtable);         \
> >         if
> > (!hwe)                                                       \
> >                 return
> > 1;                                               \
> > -       return function (strvec, &hwe-
> > >option);                         \
> > +       return function (strvec, &hwe->option, file,
> > line_nr);          \
> >  }
> >  
> >  #define declare_hw_snprint(option,
> > function)                           \
> > @@ -243,11 +245,12 @@ snprint_hw_ ## option (struct config *conf,
> > struct strbuf *buff,  \
> >  
> >  #define declare_ovr_handler(option,
> > function)                          \
> >  static
> > int                                                             \
> > -ovr_ ## option ## _handler (struct config *conf, vector
> > strvec)                \
> > +ovr_ ## option ## _handler (struct config *conf, vector
> > strvec,                \
> > +                           const char *file, int
> > line_nr)              \
> >  {                                                                     
> >  \
> >         if (!conf-
> > >overrides)                                           \
> >                 return
> > 1;                                               \
> > -       return function (strvec, &conf->overrides-
> > >option);             \
> > +       return function (strvec, &conf->overrides->option, file,
> > line_nr); \
> >  }
> >  
> >  #define declare_ovr_snprint(option,
> > function)                          \
> > @@ -260,12 +263,13 @@ snprint_ovr_ ## option (struct config *conf,
> > struct strbuf *buff, \
> >  
> >  #define declare_mp_handler(option,
> > function)                           \
> >  static
> > int                                                             \
> > -mp_ ## option ## _handler (struct config *conf, vector
> > strvec)         \
> > +mp_ ## option ## _handler (struct config *conf, vector
> > strvec,         \
> > +                          const char *file, int
> > line_nr)               \
> >  {                                                                     
> >  \
> >         struct mpentry * mpe = VECTOR_LAST_SLOT(conf-
> > >mptable);         \
> >         if
> > (!mpe)                                                       \
> >                 return
> > 1;                                               \
> > -       return function (strvec, &mpe-
> > >option);                         \
> > +       return function (strvec, &mpe->option, file,
> > line_nr);          \
> >  }
> >  
> >  #define declare_mp_snprint(option,
> > function)                           \
> > @@ -277,9 +281,10 @@ snprint_mp_ ## option (struct config *conf, struct
> > strbuf *buff,   \
> >         return function(buff, mpe-
> > >option);                             \
> >  }
> >  
> > -static int checkint_handler(struct config *conf, vector strvec)
> > +static int checkint_handler(struct config *conf, vector strvec,
> > +                           const char *file, int line_nr)
> >  {
> > -       int rc = set_uint(strvec, &conf->checkint);
> > +       int rc = set_uint(strvec, &conf->checkint, file, line_nr);
> >  
> >         if (rc)
> >                 return rc;
> > @@ -302,9 +307,10 @@ declare_def_snprint(reassign_maps, print_yes_no)
> >  declare_def_handler(multipath_dir, set_str)
> >  declare_def_snprint(multipath_dir, print_str)
> >  
> > -static int def_partition_delim_handler(struct config *conf, vector
> > strvec)
> > +static int def_partition_delim_handler(struct config *conf, vector
> > strvec,
> > +                                      const char *file, int line_nr)
> >  {
> > -       int rc = set_str(strvec, &conf->partition_delim);
> > +       int rc = set_str(strvec, &conf->partition_delim, file,
> > line_nr);
> >  
> >         if (rc != 0)
> >                 return rc;
> > @@ -334,13 +340,13 @@ static const char * const
> > find_multipaths_optvals[] = {
> >  };
> >  
> >  static int
> > -def_find_multipaths_handler(struct config *conf, vector strvec)
> > +def_find_multipaths_handler(struct config *conf, vector strvec,
> > +                           const char *file, int line_nr)
> >  {
> >         char *buff;
> >         int i;
> >  
> > -       if (set_yes_no_undef(strvec, &conf->find_multipaths) == 0 &&
> > -           conf->find_multipaths != FIND_MULTIPATHS_UNDEF)
> > +       if (set_yes_no_undef(strvec, &conf->find_multipaths, file,
> > line_nr) == 0 && conf->find_multipaths != FIND_MULTIPATHS_UNDEF)
> >                 return 0;
> >  
> >         buff = set_value(strvec);
> > @@ -396,7 +402,8 @@ static int snprint_uid_attrs(struct config *conf,
> > struct strbuf *buff,
> >         return total;
> >  }
> >  
> > -static int uid_attrs_handler(struct config *conf, vector strvec)
> > +static int uid_attrs_handler(struct config *conf, vector strvec,
> > +                            const char *file, int line_nr)
> >  {
> >         char *val;
> >  
> > @@ -597,7 +604,8 @@ declare_hw_handler(skip_kpartx, set_yes_no_undef)
> >  declare_hw_snprint(skip_kpartx, print_yes_no_undef)
> >  declare_mp_handler(skip_kpartx, set_yes_no_undef)
> >  declare_mp_snprint(skip_kpartx, print_yes_no_undef)
> > -static int def_disable_changed_wwids_handler(struct config *conf,
> > vector strvec)
> > +static int def_disable_changed_wwids_handler(struct config *conf,
> > vector strvec,
> > +                                            const char *file, int
> > line_nr)
> >  {
> >         return 0;
> >  }
> > @@ -629,20 +637,23 @@ declare_def_snprint_defstr(enable_foreign,
> > print_str,
> >                            DEFAULT_ENABLE_FOREIGN)
> >  
> >  static int
> > -def_config_dir_handler(struct config *conf, vector strvec)
> > +def_config_dir_handler(struct config *conf, vector strvec, const char
> > *file,
> > +                      int line_nr)
> >  {
> >         /* this is only valid in the main config file */
> >         if (conf->processed_main_config)
> >                 return 0;
> > -       return set_str(strvec, &conf->config_dir);
> > +       return set_str(strvec, &conf->config_dir, file, line_nr);
> >  }
> >  declare_def_snprint(config_dir, print_str)
> >  
> >  #define declare_def_attr_handler(option,
> > function)                     \
> >  static
> > int                                                             \
> > -def_ ## option ## _handler (struct config *conf, vector
> > strvec)                \
> > +def_ ## option ## _handler (struct config *conf, vector
> > strvec,                \
> > +                           const char *file, int
> > line_nr)              \
> >  {                                                                     
> >  \
> > -       return function (strvec, &conf->option, &conf-
> > >attribute_flags);\
> > +       return function (strvec, &conf->option, &conf->attribute_flags,
> > \
> > +                        file,
> > line_nr);                                \
> >  }
> >  
> >  #define declare_def_attr_snprint(option,
> > function)                     \
> > @@ -655,12 +666,14 @@ snprint_def_ ## option (struct config *conf,
> > struct strbuf *buff, \
> >  
> >  #define declare_mp_attr_handler(option,
> > function)                      \
> >  static
> > int                                                             \
> > -mp_ ## option ## _handler (struct config *conf, vector
> > strvec)         \
> > +mp_ ## option ## _handler (struct config *conf, vector
> > strvec,         \
> > +                          const char *file, int
> > line_nr)               \
> >  {                                                                     
> >  \
> >         struct mpentry * mpe = VECTOR_LAST_SLOT(conf-
> > >mptable);         \
> >         if
> > (!mpe)                                                       \
> >                 return
> > 1;                                               \
> > -       return function (strvec, &mpe->option, &mpe-
> > >attribute_flags);  \
> > +       return function (strvec, &mpe->option, &mpe-
> > >attribute_flags,   \
> > +                        file,
> > line_nr);                                \
> >  }
> >  
> >  #define declare_mp_attr_snprint(option,
> > function)                      \
> > @@ -673,7 +686,7 @@ snprint_mp_ ## option (struct config *conf, struct
> > strbuf *buff,    \
> >  }
> >  
> >  static int
> > -set_mode(vector strvec, void *ptr, int *flags)
> > +set_mode(vector strvec, void *ptr, int *flags, const char *file, int
> > line_nr)
> >  {
> >         mode_t mode;
> >         mode_t *mode_ptr = (mode_t *)ptr;
> > @@ -694,7 +707,7 @@ set_mode(vector strvec, void *ptr, int *flags)
> >  }
> >  
> >  static int
> > -set_uid(vector strvec, void *ptr, int *flags)
> > +set_uid(vector strvec, void *ptr, int *flags, const char *file, int
> > line_nr)
> >  {
> >         uid_t uid;
> >         uid_t *uid_ptr = (uid_t *)ptr;
> > @@ -719,7 +732,7 @@ set_uid(vector strvec, void *ptr, int *flags)
> >  }
> >  
> >  static int
> > -set_gid(vector strvec, void *ptr, int *flags)
> > +set_gid(vector strvec, void *ptr, int *flags, const char *file, int
> > line_nr)
> >  {
> >         gid_t gid;
> >         gid_t *gid_ptr = (gid_t *)ptr;
> > @@ -786,7 +799,7 @@ declare_mp_attr_handler(gid, set_gid)
> >  declare_mp_attr_snprint(gid, print_gid)
> >  
> >  static int
> > -set_undef_off_zero(vector strvec, void *ptr)
> > +set_undef_off_zero(vector strvec, void *ptr, const char *file, int
> > line_nr)
> >  {
> >         char * buff;
> >         int *int_ptr = (int *)ptr;
> > @@ -827,7 +840,7 @@ declare_hw_handler(fast_io_fail,
> > set_undef_off_zero)
> >  declare_hw_snprint(fast_io_fail, print_undef_off_zero)
> >  
> >  static int
> > -set_dev_loss(vector strvec, void *ptr)
> > +set_dev_loss(vector strvec, void *ptr, const char *file, int line_nr)
> >  {
> >         char * buff;
> >         unsigned int *uint_ptr = (unsigned int *)ptr;
> > @@ -870,7 +883,7 @@ declare_hw_handler(eh_deadline, set_undef_off_zero)
> >  declare_hw_snprint(eh_deadline, print_undef_off_zero)
> >  
> >  static int
> > -set_pgpolicy(vector strvec, void *ptr)
> > +set_pgpolicy(vector strvec, void *ptr, const char *file, int line_nr)
> >  {
> >         char * buff;
> >         int *int_ptr = (int *)ptr;
> > @@ -936,7 +949,8 @@ get_sys_max_fds(int *max_fds)
> >  
> >  
> >  static int
> > -max_fds_handler(struct config *conf, vector strvec)
> > +max_fds_handler(struct config *conf, vector strvec, const char *file,
> > +               int line_nr)
> >  {
> >         char * buff;
> >         int r = 0, max_fds;
> > @@ -981,7 +995,7 @@ snprint_max_fds (struct config *conf, struct strbuf
> > *buff, const void *data)
> >  }
> >  
> >  static int
> > -set_rr_weight(vector strvec, void *ptr)
> > +set_rr_weight(vector strvec, void *ptr, const char *file, int line_nr)
> >  {
> >         int *int_ptr = (int *)ptr;
> >         char * buff;
> > @@ -1025,7 +1039,7 @@ declare_mp_handler(rr_weight, set_rr_weight)
> >  declare_mp_snprint(rr_weight, print_rr_weight)
> >  
> >  static int
> > -set_pgfailback(vector strvec, void *ptr)
> > +set_pgfailback(vector strvec, void *ptr, const char *file, int
> > line_nr)
> >  {
> >         int *int_ptr = (int *)ptr;
> >         char * buff;
> > @@ -1075,7 +1089,7 @@ declare_mp_handler(pgfailback, set_pgfailback)
> >  declare_mp_snprint(pgfailback, print_pgfailback)
> >  
> >  static int
> > -no_path_retry_helper(vector strvec, void *ptr)
> > +no_path_retry_helper(vector strvec, void *ptr, const char *file, int
> > line_nr)
> >  {
> >         int *int_ptr = (int *)ptr;
> >         char * buff;
> > @@ -1120,7 +1134,8 @@ declare_mp_handler(no_path_retry,
> > no_path_retry_helper)
> >  declare_mp_snprint(no_path_retry, print_no_path_retry)
> >  
> >  static int
> > -def_log_checker_err_handler(struct config *conf, vector strvec)
> > +def_log_checker_err_handler(struct config *conf, vector strvec,
> > +                           const char *file, int line_nr)
> >  {
> >         char * buff;
> >  
> > @@ -1193,7 +1208,8 @@ print_reservation_key(struct strbuf *buff,
> >  }
> >  
> >  static int
> > -def_reservation_key_handler(struct config *conf, vector strvec)
> > +def_reservation_key_handler(struct config *conf, vector strvec,
> > +                           const char *file, int line_nr)
> >  {
> >         return set_reservation_key(strvec, &conf->reservation_key,
> >                                    &conf->sa_flags,
> > @@ -1209,7 +1225,8 @@ snprint_def_reservation_key (struct config *conf,
> > struct strbuf *buff,
> >  }
> >  
> >  static int
> > -mp_reservation_key_handler(struct config *conf, vector strvec)
> > +mp_reservation_key_handler(struct config *conf, vector strvec, const
> > char *file,
> > +                          int line_nr)
> >  {
> >         struct mpentry * mpe = VECTOR_LAST_SLOT(conf->mptable);
> >         if (!mpe)
> > @@ -1229,7 +1246,7 @@ snprint_mp_reservation_key (struct config *conf,
> > struct strbuf *buff,
> >  }
> >  
> >  static int
> > -set_off_int_undef(vector strvec, void *ptr)
> > +set_off_int_undef(vector strvec, void *ptr, const char *file, int
> > line_nr)
> >  {
> >         int *int_ptr = (int *)ptr;
> >         char * buff;
> > @@ -1370,7 +1387,8 @@ declare_hw_snprint(recheck_wwid,
> > print_yes_no_undef)
> >  
> >  
> >  static int
> > -def_uxsock_timeout_handler(struct config *conf, vector strvec)
> > +def_uxsock_timeout_handler(struct config *conf, vector strvec, const
> > char *file,
> > +                          int line_nr)
> >  {
> >         unsigned int uxsock_timeout;
> >         char *buff;
> > @@ -1390,7 +1408,8 @@ def_uxsock_timeout_handler(struct config *conf,
> > vector strvec)
> >  }
> >  
> >  static int
> > -hw_vpd_vendor_handler(struct config *conf, vector strvec)
> > +hw_vpd_vendor_handler(struct config *conf, vector strvec, const char
> > *file,
> > +                     int line_nr)
> >  {
> >         int i;
> >         char *buff;
> > @@ -1430,7 +1449,8 @@ snprint_hw_vpd_vendor(struct config *conf, struct
> > strbuf *buff,
> >   * blacklist block handlers
> >   */
> >  static int
> > -blacklist_handler(struct config *conf, vector strvec)
> > +blacklist_handler(struct config *conf, vector strvec, const char*file,
> > +                 int line_nr)
> >  {
> >         if (!conf->blist_devnode)
> >                 conf->blist_devnode = vector_alloc();
> > @@ -1452,7 +1472,8 @@ blacklist_handler(struct config *conf, vector
> > strvec)
> >  }
> >  
> >  static int
> > -blacklist_exceptions_handler(struct config *conf, vector strvec)
> > +blacklist_exceptions_handler(struct config *conf, vector strvec,
> > +                            const char *file, int line_nr)
> >  {
> >         if (!conf->elist_devnode)
> >                 conf->elist_devnode = vector_alloc();
> > @@ -1475,7 +1496,8 @@ blacklist_exceptions_handler(struct config *conf,
> > vector strvec)
> >  
> >  #define
> > declare_ble_handler(option)                                    \
> >  static
> > int                                                             \
> > -ble_ ## option ## _handler (struct config *conf, vector
> > strvec)                \
> > +ble_ ## option ## _handler (struct config *conf, vector
> > strvec,                \
> > +                           const char *file, int
> > line_nr)              \
> >  {                                                                     
> >  \
> >         char
> > *buff;                                                     \
> >         int
> > rc;                                                         \
> > @@ -1494,7 +1516,8 @@ ble_ ## option ## _handler (struct config *conf,
> > vector strvec)           \
> >  
> >  #define declare_ble_device_handler(name, option, vend,
> > prod)           \
> >  static
> > int                                                             \
> > -ble_ ## option ## _ ## name ## _handler (struct config *conf, vector
> > strvec) \
> > +ble_ ## option ## _ ## name ## _handler (struct config *conf, vector
> > strvec, \
> > +                                        const char *file, int
> > line_nr) \
> >  {                                                                     
> >  \
> >         char *
> > buff;                                                    \
> >         int
> > rc;                                                         \
> > @@ -1536,13 +1559,15 @@ snprint_ble_simple (struct config *conf, struct
> > strbuf *buff, const void *data)
> >  }
> >  
> >  static int
> > -ble_device_handler(struct config *conf, vector strvec)
> > +ble_device_handler(struct config *conf, vector strvec, const char
> > *file,
> > +                  int line_nr)
> >  {
> >         return alloc_ble_device(conf->blist_device);
> >  }
> >  
> >  static int
> > -ble_except_device_handler(struct config *conf, vector strvec)
> > +ble_except_device_handler(struct config *conf, vector strvec, const
> > char *file,
> > +                         int line_nr)
> >  {
> >         return alloc_ble_device(conf->elist_device);
> >  }
> > @@ -1574,7 +1599,8 @@ static int snprint_bled_product(struct config
> > *conf, struct strbuf *buff,
> >   * devices block handlers
> >   */
> >  static int
> > -devices_handler(struct config *conf, vector strvec)
> > +devices_handler(struct config *conf, vector strvec, const char *file,
> > +               int line_nr)
> >  {
> >         if (!conf->hwtable)
> >                 conf->hwtable = vector_alloc();
> > @@ -1586,7 +1612,8 @@ devices_handler(struct config *conf, vector
> > strvec)
> >  }
> >  
> >  static int
> > -device_handler(struct config *conf, vector strvec)
> > +device_handler(struct config *conf, vector strvec, const char *file,
> > +              int line_nr)
> >  {
> >         struct hwentry * hwe;
> >  
> > @@ -1623,7 +1650,8 @@ declare_hw_snprint(hwhandler, print_str)
> >   * overrides handlers
> >   */
> >  static int
> > -overrides_handler(struct config *conf, vector strvec)
> > +overrides_handler(struct config *conf, vector strvec, const char
> > *file,
> > +                 int line_nr)
> >  {
> >         if (!conf->overrides)
> >                 conf->overrides = alloc_hwe();
> > @@ -1640,7 +1668,8 @@ overrides_handler(struct config *conf, vector
> > strvec)
> >   * multipaths block handlers
> >   */
> >  static int
> > -multipaths_handler(struct config *conf, vector strvec)
> > +multipaths_handler(struct config *conf, vector strvec, const char
> > *file,
> > +                  int line_nr)
> >  {
> >         if (!conf->mptable)
> >                 conf->mptable = vector_alloc();
> > @@ -1652,7 +1681,8 @@ multipaths_handler(struct config *conf, vector
> > strvec)
> >  }
> >  
> >  static int
> > -multipath_handler(struct config *conf, vector strvec)
> > +multipath_handler(struct config *conf, vector strvec, const char
> > *file,
> > +                 int line_nr)
> >  {
> >         struct mpentry * mpe;
> >  
> > @@ -1681,7 +1711,8 @@ declare_mp_snprint(alias, print_str)
> >   */
> >  
> >  static int
> > -deprecated_handler(struct config *conf, vector strvec)
> > +deprecated_handler(struct config *conf, vector strvec, const char
> > *file,
> > +                  int line_nr)
> >  {
> >         char * buff;
> >  
> > diff --git a/libmultipath/parser.c b/libmultipath/parser.c
> > index d5595fb0..68262d0e 100644
> > --- a/libmultipath/parser.c
> > +++ b/libmultipath/parser.c
> > @@ -558,7 +558,8 @@ process_stream(struct config *conf, FILE *stream,
> > vector keywords,
> >                                                 goto out;
> >                                 }
> >                                 if (keyword->handler) {
> > -                                   t = keyword->handler(conf, strvec);
> > +                                   t = keyword->handler(conf, strvec,
> > file,
> > +                                                        line_nr);
> >                                         r += t;
> >                                         if (t)
> >                                                 condlog(1, "%s line %d,
> > parsing failed: %s",
> > diff --git a/libmultipath/parser.h b/libmultipath/parser.h
> > index 3452bde1..11ea2278 100644
> > --- a/libmultipath/parser.h
> > +++ b/libmultipath/parser.h
> > @@ -43,7 +43,7 @@ struct strbuf;
> >  
> >  /* keyword definition */
> >  typedef int print_fn(struct config *, struct strbuf *, const void *);
> > -typedef int handler_fn(struct config *, vector);
> > +typedef int handler_fn(struct config *, vector, const char *file, int
> > line_nr);
> >  
> >  struct keyword {
> >         char *string;
> 
> 

--
dm-devel mailing list
dm-devel@redhat.com
https://listman.redhat.com/mailman/listinfo/dm-devel
diff mbox series

Patch

diff --git a/libmultipath/dict.c b/libmultipath/dict.c
index 7a727389..eb2c44c0 100644
--- a/libmultipath/dict.c
+++ b/libmultipath/dict.c
@@ -29,7 +29,7 @@ 
 #include "strbuf.h"
 
 static int
-set_int(vector strvec, void *ptr)
+set_int(vector strvec, void *ptr, const char *file, int line_nr)
 {
 	int *int_ptr = (int *)ptr;
 	char *buff, *eptr;
@@ -58,7 +58,7 @@  set_int(vector strvec, void *ptr)
 }
 
 static int
-set_uint(vector strvec, void *ptr)
+set_uint(vector strvec, void *ptr, const char *file, int line_nr)
 {
 	unsigned int *uint_ptr = (unsigned int *)ptr;
 	char *buff, *eptr, *p;
@@ -90,7 +90,7 @@  set_uint(vector strvec, void *ptr)
 }
 
 static int
-set_str(vector strvec, void *ptr)
+set_str(vector strvec, void *ptr, const char *file, int line_nr)
 {
 	char **str_ptr = (char **)ptr;
 
@@ -105,7 +105,7 @@  set_str(vector strvec, void *ptr)
 }
 
 static int
-set_yes_no(vector strvec, void *ptr)
+set_yes_no(vector strvec, void *ptr, const char *file, int line_nr)
 {
 	char * buff;
 	int *int_ptr = (int *)ptr;
@@ -124,7 +124,7 @@  set_yes_no(vector strvec, void *ptr)
 }
 
 static int
-set_yes_no_undef(vector strvec, void *ptr)
+set_yes_no_undef(vector strvec, void *ptr, const char *file, int line_nr)
 {
 	char * buff;
 	int *int_ptr = (int *)ptr;
@@ -187,9 +187,10 @@  static int print_yes_no_undef(struct strbuf *buff, long v)
 
 #define declare_def_handler(option, function)				\
 static int								\
-def_ ## option ## _handler (struct config *conf, vector strvec)		\
+def_ ## option ## _handler (struct config *conf, vector strvec,		\
+			    const char *file, int line_nr)		\
 {									\
-	return function (strvec, &conf->option);			\
+	return function (strvec, &conf->option, file, line_nr);		\
 }
 
 #define declare_def_snprint(option, function)				\
@@ -224,12 +225,13 @@  snprint_def_ ## option (struct config *conf, struct strbuf *buff,	\
 
 #define declare_hw_handler(option, function)				\
 static int								\
-hw_ ## option ## _handler (struct config *conf, vector strvec)		\
+hw_ ## option ## _handler (struct config *conf, vector strvec,		\
+			   const char *file, int line_nr)		\
 {									\
 	struct hwentry * hwe = VECTOR_LAST_SLOT(conf->hwtable);		\
 	if (!hwe)							\
 		return 1;						\
-	return function (strvec, &hwe->option);				\
+	return function (strvec, &hwe->option, file, line_nr);		\
 }
 
 #define declare_hw_snprint(option, function)				\
@@ -243,11 +245,12 @@  snprint_hw_ ## option (struct config *conf, struct strbuf *buff,	\
 
 #define declare_ovr_handler(option, function)				\
 static int								\
-ovr_ ## option ## _handler (struct config *conf, vector strvec)		\
+ovr_ ## option ## _handler (struct config *conf, vector strvec,		\
+			    const char *file, int line_nr)		\
 {									\
 	if (!conf->overrides)						\
 		return 1;						\
-	return function (strvec, &conf->overrides->option);		\
+	return function (strvec, &conf->overrides->option, file, line_nr); \
 }
 
 #define declare_ovr_snprint(option, function)				\
@@ -260,12 +263,13 @@  snprint_ovr_ ## option (struct config *conf, struct strbuf *buff,	\
 
 #define declare_mp_handler(option, function)				\
 static int								\
-mp_ ## option ## _handler (struct config *conf, vector strvec)		\
+mp_ ## option ## _handler (struct config *conf, vector strvec,		\
+			   const char *file, int line_nr)		\
 {									\
 	struct mpentry * mpe = VECTOR_LAST_SLOT(conf->mptable);		\
 	if (!mpe)							\
 		return 1;						\
-	return function (strvec, &mpe->option);				\
+	return function (strvec, &mpe->option, file, line_nr);		\
 }
 
 #define declare_mp_snprint(option, function)				\
@@ -277,9 +281,10 @@  snprint_mp_ ## option (struct config *conf, struct strbuf *buff,	\
 	return function(buff, mpe->option);				\
 }
 
-static int checkint_handler(struct config *conf, vector strvec)
+static int checkint_handler(struct config *conf, vector strvec,
+			    const char *file, int line_nr)
 {
-	int rc = set_uint(strvec, &conf->checkint);
+	int rc = set_uint(strvec, &conf->checkint, file, line_nr);
 
 	if (rc)
 		return rc;
@@ -302,9 +307,10 @@  declare_def_snprint(reassign_maps, print_yes_no)
 declare_def_handler(multipath_dir, set_str)
 declare_def_snprint(multipath_dir, print_str)
 
-static int def_partition_delim_handler(struct config *conf, vector strvec)
+static int def_partition_delim_handler(struct config *conf, vector strvec,
+				       const char *file, int line_nr)
 {
-	int rc = set_str(strvec, &conf->partition_delim);
+	int rc = set_str(strvec, &conf->partition_delim, file, line_nr);
 
 	if (rc != 0)
 		return rc;
@@ -334,13 +340,13 @@  static const char * const find_multipaths_optvals[] = {
 };
 
 static int
-def_find_multipaths_handler(struct config *conf, vector strvec)
+def_find_multipaths_handler(struct config *conf, vector strvec,
+			    const char *file, int line_nr)
 {
 	char *buff;
 	int i;
 
-	if (set_yes_no_undef(strvec, &conf->find_multipaths) == 0 &&
-	    conf->find_multipaths != FIND_MULTIPATHS_UNDEF)
+	if (set_yes_no_undef(strvec, &conf->find_multipaths, file, line_nr) == 0 && conf->find_multipaths != FIND_MULTIPATHS_UNDEF)
 		return 0;
 
 	buff = set_value(strvec);
@@ -396,7 +402,8 @@  static int snprint_uid_attrs(struct config *conf, struct strbuf *buff,
 	return total;
 }
 
-static int uid_attrs_handler(struct config *conf, vector strvec)
+static int uid_attrs_handler(struct config *conf, vector strvec,
+			     const char *file, int line_nr)
 {
 	char *val;
 
@@ -597,7 +604,8 @@  declare_hw_handler(skip_kpartx, set_yes_no_undef)
 declare_hw_snprint(skip_kpartx, print_yes_no_undef)
 declare_mp_handler(skip_kpartx, set_yes_no_undef)
 declare_mp_snprint(skip_kpartx, print_yes_no_undef)
-static int def_disable_changed_wwids_handler(struct config *conf, vector strvec)
+static int def_disable_changed_wwids_handler(struct config *conf, vector strvec,
+					     const char *file, int line_nr)
 {
 	return 0;
 }
@@ -629,20 +637,23 @@  declare_def_snprint_defstr(enable_foreign, print_str,
 			   DEFAULT_ENABLE_FOREIGN)
 
 static int
-def_config_dir_handler(struct config *conf, vector strvec)
+def_config_dir_handler(struct config *conf, vector strvec, const char *file,
+		       int line_nr)
 {
 	/* this is only valid in the main config file */
 	if (conf->processed_main_config)
 		return 0;
-	return set_str(strvec, &conf->config_dir);
+	return set_str(strvec, &conf->config_dir, file, line_nr);
 }
 declare_def_snprint(config_dir, print_str)
 
 #define declare_def_attr_handler(option, function)			\
 static int								\
-def_ ## option ## _handler (struct config *conf, vector strvec)		\
+def_ ## option ## _handler (struct config *conf, vector strvec,		\
+			    const char *file, int line_nr)		\
 {									\
-	return function (strvec, &conf->option, &conf->attribute_flags);\
+	return function (strvec, &conf->option, &conf->attribute_flags, \
+			 file, line_nr);				\
 }
 
 #define declare_def_attr_snprint(option, function)			\
@@ -655,12 +666,14 @@  snprint_def_ ## option (struct config *conf, struct strbuf *buff,	\
 
 #define declare_mp_attr_handler(option, function)			\
 static int								\
-mp_ ## option ## _handler (struct config *conf, vector strvec)		\
+mp_ ## option ## _handler (struct config *conf, vector strvec,		\
+			   const char *file, int line_nr)		\
 {									\
 	struct mpentry * mpe = VECTOR_LAST_SLOT(conf->mptable);		\
 	if (!mpe)							\
 		return 1;						\
-	return function (strvec, &mpe->option, &mpe->attribute_flags);	\
+	return function (strvec, &mpe->option, &mpe->attribute_flags,	\
+			 file, line_nr);				\
 }
 
 #define declare_mp_attr_snprint(option, function)			\
@@ -673,7 +686,7 @@  snprint_mp_ ## option (struct config *conf, struct strbuf *buff,	\
 }
 
 static int
-set_mode(vector strvec, void *ptr, int *flags)
+set_mode(vector strvec, void *ptr, int *flags, const char *file, int line_nr)
 {
 	mode_t mode;
 	mode_t *mode_ptr = (mode_t *)ptr;
@@ -694,7 +707,7 @@  set_mode(vector strvec, void *ptr, int *flags)
 }
 
 static int
-set_uid(vector strvec, void *ptr, int *flags)
+set_uid(vector strvec, void *ptr, int *flags, const char *file, int line_nr)
 {
 	uid_t uid;
 	uid_t *uid_ptr = (uid_t *)ptr;
@@ -719,7 +732,7 @@  set_uid(vector strvec, void *ptr, int *flags)
 }
 
 static int
-set_gid(vector strvec, void *ptr, int *flags)
+set_gid(vector strvec, void *ptr, int *flags, const char *file, int line_nr)
 {
 	gid_t gid;
 	gid_t *gid_ptr = (gid_t *)ptr;
@@ -786,7 +799,7 @@  declare_mp_attr_handler(gid, set_gid)
 declare_mp_attr_snprint(gid, print_gid)
 
 static int
-set_undef_off_zero(vector strvec, void *ptr)
+set_undef_off_zero(vector strvec, void *ptr, const char *file, int line_nr)
 {
 	char * buff;
 	int *int_ptr = (int *)ptr;
@@ -827,7 +840,7 @@  declare_hw_handler(fast_io_fail, set_undef_off_zero)
 declare_hw_snprint(fast_io_fail, print_undef_off_zero)
 
 static int
-set_dev_loss(vector strvec, void *ptr)
+set_dev_loss(vector strvec, void *ptr, const char *file, int line_nr)
 {
 	char * buff;
 	unsigned int *uint_ptr = (unsigned int *)ptr;
@@ -870,7 +883,7 @@  declare_hw_handler(eh_deadline, set_undef_off_zero)
 declare_hw_snprint(eh_deadline, print_undef_off_zero)
 
 static int
-set_pgpolicy(vector strvec, void *ptr)
+set_pgpolicy(vector strvec, void *ptr, const char *file, int line_nr)
 {
 	char * buff;
 	int *int_ptr = (int *)ptr;
@@ -936,7 +949,8 @@  get_sys_max_fds(int *max_fds)
 
 
 static int
-max_fds_handler(struct config *conf, vector strvec)
+max_fds_handler(struct config *conf, vector strvec, const char *file,
+		int line_nr)
 {
 	char * buff;
 	int r = 0, max_fds;
@@ -981,7 +995,7 @@  snprint_max_fds (struct config *conf, struct strbuf *buff, const void *data)
 }
 
 static int
-set_rr_weight(vector strvec, void *ptr)
+set_rr_weight(vector strvec, void *ptr, const char *file, int line_nr)
 {
 	int *int_ptr = (int *)ptr;
 	char * buff;
@@ -1025,7 +1039,7 @@  declare_mp_handler(rr_weight, set_rr_weight)
 declare_mp_snprint(rr_weight, print_rr_weight)
 
 static int
-set_pgfailback(vector strvec, void *ptr)
+set_pgfailback(vector strvec, void *ptr, const char *file, int line_nr)
 {
 	int *int_ptr = (int *)ptr;
 	char * buff;
@@ -1075,7 +1089,7 @@  declare_mp_handler(pgfailback, set_pgfailback)
 declare_mp_snprint(pgfailback, print_pgfailback)
 
 static int
-no_path_retry_helper(vector strvec, void *ptr)
+no_path_retry_helper(vector strvec, void *ptr, const char *file, int line_nr)
 {
 	int *int_ptr = (int *)ptr;
 	char * buff;
@@ -1120,7 +1134,8 @@  declare_mp_handler(no_path_retry, no_path_retry_helper)
 declare_mp_snprint(no_path_retry, print_no_path_retry)
 
 static int
-def_log_checker_err_handler(struct config *conf, vector strvec)
+def_log_checker_err_handler(struct config *conf, vector strvec,
+			    const char *file, int line_nr)
 {
 	char * buff;
 
@@ -1193,7 +1208,8 @@  print_reservation_key(struct strbuf *buff,
 }
 
 static int
-def_reservation_key_handler(struct config *conf, vector strvec)
+def_reservation_key_handler(struct config *conf, vector strvec,
+			    const char *file, int line_nr)
 {
 	return set_reservation_key(strvec, &conf->reservation_key,
 				   &conf->sa_flags,
@@ -1209,7 +1225,8 @@  snprint_def_reservation_key (struct config *conf, struct strbuf *buff,
 }
 
 static int
-mp_reservation_key_handler(struct config *conf, vector strvec)
+mp_reservation_key_handler(struct config *conf, vector strvec, const char *file,
+			   int line_nr)
 {
 	struct mpentry * mpe = VECTOR_LAST_SLOT(conf->mptable);
 	if (!mpe)
@@ -1229,7 +1246,7 @@  snprint_mp_reservation_key (struct config *conf, struct strbuf *buff,
 }
 
 static int
-set_off_int_undef(vector strvec, void *ptr)
+set_off_int_undef(vector strvec, void *ptr, const char *file, int line_nr)
 {
 	int *int_ptr = (int *)ptr;
 	char * buff;
@@ -1370,7 +1387,8 @@  declare_hw_snprint(recheck_wwid, print_yes_no_undef)
 
 
 static int
-def_uxsock_timeout_handler(struct config *conf, vector strvec)
+def_uxsock_timeout_handler(struct config *conf, vector strvec, const char *file,
+			   int line_nr)
 {
 	unsigned int uxsock_timeout;
 	char *buff;
@@ -1390,7 +1408,8 @@  def_uxsock_timeout_handler(struct config *conf, vector strvec)
 }
 
 static int
-hw_vpd_vendor_handler(struct config *conf, vector strvec)
+hw_vpd_vendor_handler(struct config *conf, vector strvec, const char *file,
+		      int line_nr)
 {
 	int i;
 	char *buff;
@@ -1430,7 +1449,8 @@  snprint_hw_vpd_vendor(struct config *conf, struct strbuf *buff,
  * blacklist block handlers
  */
 static int
-blacklist_handler(struct config *conf, vector strvec)
+blacklist_handler(struct config *conf, vector strvec, const char*file,
+		  int line_nr)
 {
 	if (!conf->blist_devnode)
 		conf->blist_devnode = vector_alloc();
@@ -1452,7 +1472,8 @@  blacklist_handler(struct config *conf, vector strvec)
 }
 
 static int
-blacklist_exceptions_handler(struct config *conf, vector strvec)
+blacklist_exceptions_handler(struct config *conf, vector strvec,
+			     const char *file, int line_nr)
 {
 	if (!conf->elist_devnode)
 		conf->elist_devnode = vector_alloc();
@@ -1475,7 +1496,8 @@  blacklist_exceptions_handler(struct config *conf, vector strvec)
 
 #define declare_ble_handler(option)					\
 static int								\
-ble_ ## option ## _handler (struct config *conf, vector strvec)		\
+ble_ ## option ## _handler (struct config *conf, vector strvec,		\
+			    const char *file, int line_nr)		\
 {									\
 	char *buff;							\
 	int rc;								\
@@ -1494,7 +1516,8 @@  ble_ ## option ## _handler (struct config *conf, vector strvec)		\
 
 #define declare_ble_device_handler(name, option, vend, prod)		\
 static int								\
-ble_ ## option ## _ ## name ## _handler (struct config *conf, vector strvec) \
+ble_ ## option ## _ ## name ## _handler (struct config *conf, vector strvec, \
+					 const char *file, int line_nr)	\
 {									\
 	char * buff;							\
 	int rc;								\
@@ -1536,13 +1559,15 @@  snprint_ble_simple (struct config *conf, struct strbuf *buff, const void *data)
 }
 
 static int
-ble_device_handler(struct config *conf, vector strvec)
+ble_device_handler(struct config *conf, vector strvec, const char *file,
+		   int line_nr)
 {
 	return alloc_ble_device(conf->blist_device);
 }
 
 static int
-ble_except_device_handler(struct config *conf, vector strvec)
+ble_except_device_handler(struct config *conf, vector strvec, const char *file,
+			  int line_nr)
 {
 	return alloc_ble_device(conf->elist_device);
 }
@@ -1574,7 +1599,8 @@  static int snprint_bled_product(struct config *conf, struct strbuf *buff,
  * devices block handlers
  */
 static int
-devices_handler(struct config *conf, vector strvec)
+devices_handler(struct config *conf, vector strvec, const char *file,
+		int line_nr)
 {
 	if (!conf->hwtable)
 		conf->hwtable = vector_alloc();
@@ -1586,7 +1612,8 @@  devices_handler(struct config *conf, vector strvec)
 }
 
 static int
-device_handler(struct config *conf, vector strvec)
+device_handler(struct config *conf, vector strvec, const char *file,
+	       int line_nr)
 {
 	struct hwentry * hwe;
 
@@ -1623,7 +1650,8 @@  declare_hw_snprint(hwhandler, print_str)
  * overrides handlers
  */
 static int
-overrides_handler(struct config *conf, vector strvec)
+overrides_handler(struct config *conf, vector strvec, const char *file,
+		  int line_nr)
 {
 	if (!conf->overrides)
 		conf->overrides = alloc_hwe();
@@ -1640,7 +1668,8 @@  overrides_handler(struct config *conf, vector strvec)
  * multipaths block handlers
  */
 static int
-multipaths_handler(struct config *conf, vector strvec)
+multipaths_handler(struct config *conf, vector strvec, const char *file,
+		   int line_nr)
 {
 	if (!conf->mptable)
 		conf->mptable = vector_alloc();
@@ -1652,7 +1681,8 @@  multipaths_handler(struct config *conf, vector strvec)
 }
 
 static int
-multipath_handler(struct config *conf, vector strvec)
+multipath_handler(struct config *conf, vector strvec, const char *file,
+		  int line_nr)
 {
 	struct mpentry * mpe;
 
@@ -1681,7 +1711,8 @@  declare_mp_snprint(alias, print_str)
  */
 
 static int
-deprecated_handler(struct config *conf, vector strvec)
+deprecated_handler(struct config *conf, vector strvec, const char *file,
+		   int line_nr)
 {
 	char * buff;
 
diff --git a/libmultipath/parser.c b/libmultipath/parser.c
index d5595fb0..68262d0e 100644
--- a/libmultipath/parser.c
+++ b/libmultipath/parser.c
@@ -558,7 +558,8 @@  process_stream(struct config *conf, FILE *stream, vector keywords,
 						goto out;
 				}
 				if (keyword->handler) {
-				    t = keyword->handler(conf, strvec);
+				    t = keyword->handler(conf, strvec, file,
+							 line_nr);
 					r += t;
 					if (t)
 						condlog(1, "%s line %d, parsing failed: %s",
diff --git a/libmultipath/parser.h b/libmultipath/parser.h
index 3452bde1..11ea2278 100644
--- a/libmultipath/parser.h
+++ b/libmultipath/parser.h
@@ -43,7 +43,7 @@  struct strbuf;
 
 /* keyword definition */
 typedef int print_fn(struct config *, struct strbuf *, const void *);
-typedef int handler_fn(struct config *, vector);
+typedef int handler_fn(struct config *, vector, const char *file, int line_nr);
 
 struct keyword {
 	char *string;