Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 23 Sep 2017 18:18:01 +0200
From:      Andreas Longwitz <longwitz@incore.de>
To:        Don Lewis <truckman@FreeBSD.org>
Cc:        kostikbel@gmail.com, mckusick@mckusick.com, freebsd-fs@freebsd.org
Subject:   Re: fsync: giving up on dirty on ufs partitions running vfs_write_suspend()
Message-ID:  <59C68939.2040509@incore.de>
In-Reply-To: <201709222220.v8MMKEW5085371@gw.catspoiler.org>
References:  <201709222220.v8MMKEW5085371@gw.catspoiler.org>

next in thread | previous in thread | raw e-mail | index | archive | help
Don Lewis wrote:
>> Patch against HEAD:
>> --- vfs_default.c.orig  2017-09-22 11:56:26.950084000 +0200
>> +++ vfs_default.c       2017-09-22 11:58:33.211196000 +0200
>> @@ -690,6 +690,8 @@
>>                         bremfree(bp);
>>                         bawrite(bp);
>>                 }
>> +               if( maxretry < 1000)
>> +                       DELAY(1000); /* 1 ms */
>>                 BO_LOCK(bo);
>>                 goto loop2;
>>         }
> 
> Do you need to use a busy loop here, or can you yield the cpu by using
> something like pause(9)?
> 

No, I don't need a busy loop, it is even bad if we have only one CPU. I
have assumed that the person doing eventually a commit for this problem
will much better know than I how to wait 1 ms in the kernel.

I have repested my tests with "pause("dirty", hz/1000)" instead of
"DELAY(1000)" and got the same results in maximal loop numbers and spent
times as before.

-- 
Andreas Longwitz




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