Re: [PATCH v4] ntfs: avoid heap allocation for free-cluster readahead state
From: Namjae Jeon
Date: Sat May 23 2026 - 09:59:54 EST
On Fri, May 22, 2026 at 11:20 PM DaeMyung Kang <charsyam@xxxxxxxxx> wrote:
>
> get_nr_free_clusters() allocates a temporary file_ra_state before it
> publishes the precomputed free cluster count, sets NVolFreeClusterKnown(),
> and wakes vol->free_waitq. If that allocation fails, the worker returns
> without setting the flag or waking waiters, so callers waiting for the free
> count can block indefinitely.
>
> The readahead state is only used synchronously while scanning the bitmap.
> Keep it on the stack and pass it by address to the readahead helper. This
> eliminates the early allocation failure path instead of adding a special
> case that publishes a conservative count and wakes the waitqueue.
> Zero-initialize the on-stack state because file_ra_state_init() only sets
> ra_pages and prev_pos.
>
> Apply the same treatment to __get_nr_free_mft_records(), which scans the
> MFT bitmap with the same short-lived readahead state.
>
> Signed-off-by: DaeMyung Kang <charsyam@xxxxxxxxx>
Applied it to #ntfs-next.
Thanks!