Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 8 Jan 2011 23:10:21 +0300
From:      Lev Serebryakov <lev@FreeBSD.org>
To:        Kostik Belousov <kostikbel@gmail.com>
Cc:        freebsd-stable@freebsd.org
Subject:   Re: 8.2-PRERELEASE: live deadlock, almost all processes in "pfault" state
Message-ID:  <1544327450.20110108231021@serebryakov.spb.ru>
In-Reply-To: <20110108195613.GW12599@deviant.kiev.zoral.com.ua>
References:  <204344488.20110108214457@serebryakov.spb.ru> <20110108190232.GU12599@deviant.kiev.zoral.com.ua> <1792026896.20110108222909@serebryakov.spb.ru> <20110108195613.GW12599@deviant.kiev.zoral.com.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
Hello, Kostik.
You wrote 8 =D1=CE=D7=C1=D2=D1 2011 =C7., 22:56:13:


>>   And, if it is "classic deadlock" is here any "classical" solution to
>> it?
> Do not allocate during bio processing.
 So, if GEOM need some cache, it needs pre-allocate it and implements
custom allocator over allocated chunk? :(

 And what is "bio processing" in this context? geom_raid5 puts all
bios into the (private, internal) queue and geom_start() exits
immediately, and bio could spend rather long time in queue (if it is
write request) before it will be sent to underlying provider. And,
yes, it could be combined with other bios to form new one (why
allocation of new bio is needed).

 So, is "bio processing" a whole time before bio is complete, or only
geom_start() call or what?

 Also, RAID5 needs to read data (other stripes) and write data (new
checksum) when "write" bio is processed. BTW, "system" geom_raid3 and
geom_vinum (with raid5 volume) need to do the same to maintain
checksums, so they could deadlock (in theory) too, if problem is
"allocate memory during bio processing". And geom_mirror needs
allocate bio for second (third, ...) component on every write...

--=20
// Black Lion AKA Lev Serebryakov <lev@FreeBSD.org>




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1544327450.20110108231021>