On Tue, Jan 23, 2024 at 10:30:38AM -0700, Jens Axboe wrote: > We currently use a doubly linked list, which means the head takes up > 16 bytes. As any iteration goes over the full list by first splicing it > to an on-stack copy, we never need to remove members from the middle of > the list. > > Convert it to an hlist instead, saving 8 bytes in the blk_plug structure. > This also helps save 40 bytes of text in the core block code, tested on > arm64. > > This does mean that flush callbacks will be run in reverse. While this > should not pose a problem, we can always change the list splicing to > just iteration-and-add instead, preservering ordering. These lists are > generally just a single entry (or a few entries), either way this should > be fine. That would complete mess up I/O order for anyone using flush callbacks, I don't think that's great.