On Mon, 2020-07-13 at 12:13 +0200, Zdenek Kabelac wrote: > Dne 13. 07. 20 v 12:08 Martin Wilck napsal(a): > > > > Ben has already added support for dm_hold_control_dev() in > > libmultipath > > (e24d8b1 ("libmutipath: don't close fd on dm_lib_release")). But > > this > > doesn't protect us from calling _open_control() simultaneously in > > separate code paths, as Lixiaokeng has pointed out. > > > > I don't see how it would, as dm_hold_control_dev() also just > > changes > > a static variable. > > Here I'm not familiar with multipath codebase (more a question for > Ben > likely), but is 'dm_hold...()' being used in non-threaded way - i.e. > in > dmeventd these functions are called before/after threads are > finished - so > there would be no way 2 threads may call this function in parallel ? Yes, it's called via pthread_once(). @Lixiaokeng, that would suggest a simpler solution to your fd leak problem than what I posted before. You'd just need to apply Ben's patch "libmutipath: don't close fd on dm_lib_release" submitted March 24th. Contrary to what I said before, this patch is NOT merged yet. The commit id e24d8b1 was from my "upstream-queue" branch only (https://github.com/openSUSE/multipath-tools/tree/upstream-queue) Could you try with that patch (and without mine sent previously)? Martin -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel