destroy_directio_ctx() is only called from free_io_err_stat_path(), and free_io_err_stat_path() is very short, so combine them. Signed-off-by: Benjamin Marzinski <bmarzins@xxxxxxxxxx> --- libmultipath/io_err_stat.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/libmultipath/io_err_stat.c b/libmultipath/io_err_stat.c index 92871f40..bf78a236 100644 --- a/libmultipath/io_err_stat.c +++ b/libmultipath/io_err_stat.c @@ -161,12 +161,15 @@ fail_close: return 1; } -static void destroy_directio_ctx(struct io_err_stat_path *p) +static void free_io_err_stat_path(struct io_err_stat_path *p) { int i; - if (!p || !p->dio_ctx_array) + if (!p) return; + if (!p->dio_ctx_array) + goto free_path; + cancel_inflight_io(p); for (i = 0; i < CONCUR_NR_EVENT; i++) @@ -175,6 +178,8 @@ static void destroy_directio_ctx(struct io_err_stat_path *p) if (p->fd > 0) close(p->fd); +free_path: + FREE(p); } static struct io_err_stat_path *alloc_io_err_stat_path(void) @@ -197,11 +202,6 @@ static struct io_err_stat_path *alloc_io_err_stat_path(void) return p; } -static void free_io_err_stat_path(struct io_err_stat_path *p) -{ - FREE(p); -} - static void free_io_err_pathvec(void) { struct io_err_stat_path *path; @@ -211,10 +211,8 @@ static void free_io_err_pathvec(void) pthread_cleanup_push(cleanup_mutex, &io_err_pathvec_lock); if (!io_err_pathvec) goto out; - vector_foreach_slot(io_err_pathvec, path, i) { - destroy_directio_ctx(path); + vector_foreach_slot(io_err_pathvec, path, i) free_io_err_stat_path(path); - } vector_free(io_err_pathvec); io_err_pathvec = NULL; out: @@ -250,7 +248,7 @@ static int enqueue_io_err_stat_by_path(struct path *path) goto free_ioerr_path; pthread_mutex_lock(&io_err_pathvec_lock); if (!vector_alloc_slot(io_err_pathvec)) - goto unlock_destroy; + goto unlock_pathvec; vector_set_slot(io_err_pathvec, p); pthread_mutex_unlock(&io_err_pathvec_lock); @@ -258,9 +256,8 @@ static int enqueue_io_err_stat_by_path(struct path *path) path->mpp->alias, path->dev); return 0; -unlock_destroy: +unlock_pathvec: pthread_mutex_unlock(&io_err_pathvec_lock); - destroy_directio_ctx(p); free_ioerr_path: free_io_err_stat_path(p); @@ -637,7 +634,6 @@ static void service_paths(void) vector_foreach_slot_backwards(tmp_pathvec, pp, i) { end_io_err_stat(pp); vector_del_slot(tmp_pathvec, i); - destroy_directio_ctx(pp); free_io_err_stat_path(pp); } vector_reset(tmp_pathvec); -- 2.17.2 -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel