DragonFly kernel List (threaded) for 2012-05
Re: Master branch and 3.0 release branch performance & disk use fixes
On Tue, May 1, 2012 at 10:21 PM, Matthew Dillon
> Â Â The following fixes have gone into master and also been MFC'd to the
> Â Â release branch (commitids for master):
> Â Â Â Â b642a6c1f5bbb295e29522d99c65038f459288ac
> Â Â Â Â kernel - Fix degenerate cluster_write() cases
> Â Â Â Â 66030e2b4635359f2d84f23298c9d8ce1e6af5da
> Â Â Â Â HAMMER VFS - Only set B_CLUSTEROK on 64K buffers
> Â Â This fixes a serious performance issue which we introduced when we
> Â Â turned on the cluster buf code in HAMMER. Â The code inadvertently
> Â Â removed a file EOF check that caused fragmentory writes to the
> Â Â end of a file to immediately flush to disk, greatly reducing filesystem
> Â Â performance by causing excessive writes to disk as well as temporary
> Â Â blocking conditions due to the I/O in progress.
> Â Â Since HAMMER does allocate-on-flush this also caused bloated
> Â Â filesystem space usage. Â The space would be recovered automatically
> Â Â by the nightly hammer cleanup code but in the mean time could eat a
> Â Â huge amount of space (4x to 25x) when writing out a file.
> Â Â There was also a 'zeros in file' bug reported for HAMMER which I
> Â Â believe these commits should get rid of.
To make things clearer, this bug did not exist in the 3.0 release or
3.0.2. It was only present on the master branch and in the head of the
3.0 branch (DragonFly_RELEASE_3_0).