Re: [PATCH v3 0/4] ntfs: fix spurious EIO and ENOSPC on nearly full volumes
From: Namjae Jeon
Date: Sun Oct 04 2026 - 22:27:44 EST
On Sun, Oct 4, 2026 at 6:56 PM Matthias Goergens
<matthias.goergens@xxxxxxxxx> wrote:
>
> These fix three errors returned while free space is left, and a
> contiguous cluster allocation that comes back in two runs. Patch 1
> fixes file creation failing with EIO on a nearly full volume; it now
> goes on until the volume is full and then fails with ENOSPC. Patch 2
> fixes the cluster allocator missing free clusters when its start hint
> lies at or past the end of the volume, which empties the MFT zone, and
> patch 3 removes the fallocate() check that then fails every later call.
> Together the two bugs make fallocate() refuse space that is free until
> the next mount. Patch 4 keeps a contiguous request to a single run:
> fallocate() zeroes only the first run, so the clusters of a second one
> kept the data of a deleted file. Reproducers, run with KASAN and
> lockdep:
> https://github.com/matthiasgoergens/linux/tree/reproducer/2026-10-04-ntfs-nearfull-v3
>
> Changes in v3: Namjae Jeon asked whether a contiguous request can still
> get a second run once the search has left the hint, for instance when
> the run reaches the end of a bitmap page and the next page is skipped as
> full. It can, on that path and on two more: where the search wraps to
> pass 2, and where it shrinks the MFT zone after trying every zone. On
> ntfs-next each left 16 of 20 fallocated clusters reading the data of a
> deleted file. New patch 4 does what he suggested: before setting a
> cluster's bit, it checks that the cluster follows the run, and returns
> the run otherwise. Patches 1 to 3 are unchanged apart from Hyunchul
> Lee's Reviewed-by. Rebased on ntfs-next.
>
> v2: https://lore.kernel.org/all/cover.1790853718.git.matthias.goergens@xxxxxxxxx/
> v1: https://lore.kernel.org/all/cover.1790503811.git.matthias.goergens@xxxxxxxxx/
>
> Matthias Goergens (4):
> ntfs: set the attribute list size before reserving space for it
> ntfs: restart the zone search when the allocation hint fails
> ntfs: do not refuse fallocate() when the MFT zone is empty
> ntfs: do not give a contiguous cluster allocation a second run
Applied them to #ntfs-next.
Thanks!