[dm-devel] [PATCH 3/9] libmultipath: variable-size parameters in assemble_map()
Martin Wilck
mwilck at suse.com
Wed Aug 11 15:15:53 UTC 2021
On Mi, 2021-07-28 at 10:54 -0500, Benjamin Marzinski wrote:
> On Thu, Jul 15, 2021 at 12:52:17PM +0200, mwilck at suse.com wrote:
> > From: Martin Wilck <mwilck at suse.com>
> >
> > Instead of using fixed PARAMS_SIZE-sized arrays for parameters, use
> > dynamically allocated memory.
> >
> > The library version needs to be bumped, because setup_map()
> > argument
> > list has changed.
> >
>
> Looks good. Only minor nits below.
>
> > -
> > /*
> > * Transforms the path group vector into a proper device map
> > string
> > */
> > -int
> > -assemble_map (struct multipath * mp, char * params, int len)
> > +int assemble_map(struct multipath *mp, char **params)
> > {
> > + static const char no_path_retry[] = "queue_if_no_path";
> > + static const char retain_hwhandler[] =
> > "retain_attached_hw_handler";
> > int i, j;
> > int minio;
> > int nr_priority_groups, initial_pg_nr;
> > - char * p;
> > - const char *const end = params + len;
> > - char no_path_retry[] = "queue_if_no_path";
> > - char retain_hwhandler[] = "retain_attached_hw_handler";
>
> Why not use STRBUF_ON_STACK() here?
Good catch. I probably wrote this before I wrote the macro.
>
> > + struct strbuf __attribute__((cleanup(reset_strbuf))) buff =
> > STRBUF_INIT;
> > struct pathgroup * pgp;
> > struct path * pp;
> >
> > @@ -1028,7 +1030,7 @@ int
> > ev_add_path (struct path * pp, struct vectors * vecs, int
> > need_do_map)
> > {
> > struct multipath * mpp;
> > - char params[PARAMS_SIZE] = {0};
> > + char *params __attribute((cleanup(cleanup_charp))) = NULL;
> > int retries = 3;
> > int start_waiter = 0;
> > int ret;
> > @@ -1104,7 +1106,9 @@ rescan:
> > /*
> > * push the map to the device-mapper
> > */
> > - if (setup_map(mpp, params, PARAMS_SIZE, vecs)) {
>
> Is there a reason to free params here, instead of just doing it
> before
> the "goto rescan"?
No strong reason. I thought it was more obvious this way, and perhaps
less prone to future error. I will change it.
Martin
More information about the dm-devel
mailing list