All of lore.kernel.org
 help / color / mirror / Atom feed
From: lixiaokeng <lixiaokeng@huawei.com>
To: Benjamin Marzinski <bmarzins@redhat.com>
Cc: liuzhiqiang26@huawei.com, linfeilong@huawei.com,
	dm-devel@redhat.com, Martin Wilck <mwilck@suse.com>,
	lutianxiong@huawei.com
Subject: Re: [dm-level] upstream-queue-libmultipath: fix memory leak when iscsi login/out and "multipath -r" executed
Date: Tue, 28 Jul 2020 21:56:04 +0800	[thread overview]
Message-ID: <92b1653b-bf07-a79b-359a-635924102a84@huawei.com> (raw)
In-Reply-To: <20200727164530.GN11089@octiron.msp.redhat.com>

Hi.
    Thanks very much! I will try these patches.
-Lixiaokeng

On 2020/7/28 0:45, Benjamin Marzinski wrote:
> On Sat, Jul 25, 2020 at 01:47:01PM +0800, lixiaokeng wrote:
>> When one iscsi device logs in and logs out with the "multipath -r"
>> executed at the same time, memory leak happens in multipathd
>> process.
>>
>> The reason is following. When "multipath -r" is executed, the path
>> will be free in configure function. Before path_discovery executed,
>> iscsi device logs out. Then path_discovery will not find any path and
>> there is no path in the gvecs->pathvec. When map_discovery function
>> is executed, disassemble_map function will be called. Because
>> gvecs->pathvec->slot is empty and is_deamon is 1, a path will be
>> allocated and is not stored in gvecs->pathvec but store in
>> mpp->pg. But when the mpp is removed and freed by remove_map
>> function, the path will not be free and can't be find anymore.
>>
>> The procedure details given as follows,
>> 1."multipath -r" is executed
>> main
>> 	->child
>> 		->reconfigure
>> 			->configure
>> 				->path_discovery //after iscsi logout
>> 				->map_discovery
>> 					->update_multipath_table
>> 						->disassemble_map
>> 							->alloc_path
>> 2.then "multipath -r" is executed again
>> main
>> main
>> 	->child
>> 		->reconfigure
>> 			->remove_maps_and_stop_waiters
>> 				->remove_maps
>>
>> Here, we delete checking is_deamon. Because whether the process is a
>> daemon process or not, we think the path should be add to gvecs->pathvec.
> 
> There is more work that needs to be done to besides removing the is_daemon
> check.  However, Martin already posted patches that deal with this as
> part of the his large patchset.
> 
> https://www.redhat.com/archives/dm-devel/2020-July/msg00245.html
> 
> You should take a look at those, and at my comments on them, because they
> should resolve your issue.
> 
> -Ben
> 
>>
>> Reported-by: Tianxiong Li <lutianxiong@huawei.com>
>> Signed-off-by: Lixiaokeng <lixiaokeng@huawei.com>
>> Signed-off-by: Zhiqiang Liu <liuzhiqiang26@huawei.com>
>>
>> ---
>>  libmultipath/dmparser.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/libmultipath/dmparser.c b/libmultipath/dmparser.c
>> index b856a07f..d556f642 100644
>> --- a/libmultipath/dmparser.c
>> +++ b/libmultipath/dmparser.c
>> @@ -315,7 +315,7 @@ int disassemble_map(vector pathvec, char *params, struct multipath *mpp,
>>  						WWID_SIZE);
>>  				}
>>  				/* Only call this in multipath client mode */
>> -				if (!is_daemon && store_path(pathvec, pp))
>> +				if (store_path(pathvec, pp))
>>  					goto out1;
>>  			} else {
>>  				if (!strlen(pp->wwid) &&
>> --
> 
> 
> .
> 

      reply	other threads:[~2020-07-28 13:56 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-07-25  5:47 [dm-level] upstream-queue-libmultipath: fix memory leak when iscsi login/out and "multipath -r" executed lixiaokeng
2020-07-27 16:45 ` Benjamin Marzinski
2020-07-28 13:56   ` lixiaokeng [this message]

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=92b1653b-bf07-a79b-359a-635924102a84@huawei.com \
    --to=lixiaokeng@huawei.com \
    --cc=bmarzins@redhat.com \
    --cc=dm-devel@redhat.com \
    --cc=linfeilong@huawei.com \
    --cc=liuzhiqiang26@huawei.com \
    --cc=lutianxiong@huawei.com \
    --cc=mwilck@suse.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.