NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: kern/54504: -9/-current WAPBL panic: current transaction too big, to flush
The following reply was made to PR kern/54504; it has been noted by GNATS.
From: Konrad Schroder <perseant%hhhh.org@localhost>
To: Jaromir Dolecek <jaromir.dolecek%gmail.com@localhost>
Cc: gnats-bugs%netbsd.org@localhost, kardel%netbsd.org@localhost
Subject: Re: kern/54504: -9/-current WAPBL panic: current transaction too big,
to flush
Date: Fri, 28 Aug 2020 21:12:07 -0700
This is a multi-part message in MIME format.
--------------63F2D72458998E5B4007ADAC
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit
> Let me chceck the detail first. It seemms to me the check is inherently not MP safe, and thus not a hood final solution. I would prefer if it properly bailed out if unallocation registration fails, as is done elsewhere, rather then checking size before operation.
>
> Please dont commit this for now. I should be again available later in the week, I am currentlt on move so cant check.
>
> Jaromir
Okay, I won't commit until you give me the green light. I've added the same mutex lock as is present in wapbl_begin(), and the result is at
http://www.hhhh.org/perseant/ffs-wapbl-check-r3.diff
It would of course be possible to try to allocate space for all of the blocks, but managing the allocations for the other metadata (cylinder groups, in particular) sounds more difficult than it's worth. If I understand correctly, to be conservative you'd need to allocate one CG bitmap block per data block freed, plus indirect blocks. That's why I went for the much simpler, though admittedly crude, method of checking every once in a while (after every indirect block freed), while being very conservative about how much space is needed.
Thanks,
-Konrad
--------------63F2D72458998E5B4007ADAC
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: 7bit
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
<pre style="white-space: pre-wrap; color: rgb(0, 0, 0); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">> Let me chceck the detail first. It seemms to me the check is inherently not MP safe, and thus not a hood final solution. I would prefer if it properly bailed out if unallocation registration fails, as is done elsewhere, rather then checking size before operation.
>
> Please dont commit this for now. I should be again available later in the week, I am currentlt on move so cant check.
>
> Jaromir
Okay, I won't commit until you give me the green light. I've added the same mutex lock as is present in wapbl_begin(), and the result is at
<a href="http://www.hhhh.org/perseant/ffs-wapbl-check-r3.diff">http://www.hhhh.org/perseant/ffs-wapbl-check-r3.diff</a>
It would of course be possible to try to allocate space for all of the blocks, but managing the allocations for the other metadata (cylinder groups, in particular) sounds more difficult than it's worth. If I understand correctly, to be conservative you'd need to allocate one CG bitmap block per data block freed, plus indirect blocks. That's why I went for the much simpler, though admittedly crude, method of checking every once in a while (after every indirect block freed), while being very conservative about how much space is needed.
Thanks,
-Konrad
</pre>
</body>
</html>
--------------63F2D72458998E5B4007ADAC--
Home |
Main Index |
Thread Index |
Old Index