Skip to content

io_u: get io_u from io_u_freelist when TD_FSYNCING#1943

Merged
axboe merged 1 commit into
axboe:masterfrom
JeongJonghwi:fsync-get-io-u-from-freelist
Jul 16, 2025
Merged

io_u: get io_u from io_u_freelist when TD_FSYNCING#1943
axboe merged 1 commit into
axboe:masterfrom
JeongJonghwi:fsync-get-io-u-from-freelist

Conversation

@JeongJonghwi
Copy link
Copy Markdown
Contributor

As Commit 813445e ('backend: clean up requeued io_u's') has been applied, backend cleans up the remained io_u's in td->io_u_requeues. However, with end_fsync=1, the __get_io_u() function returns an io_u from td->io_u_requeues if any io_u exist, and pops it. This leads that the synced io_u will not put file which it got, and, finally, cannot close the file.

This patch returns io_u from td->io_u_free_list when td->runstate is TD_FSYNCING, so that the io_u's in td->io_u_requeues will be cleaned up and leads to close file appropriately.

As Commit 813445e ('backend: clean up requeued io_u's') has been
applied, backend cleans up the remained io_u's in td->io_u_requeues.
However, with end_fsync=1, the __get_io_u() function returns an io_u
from td->io_u_requeues if any io_u exist, and pops it. This leads that
the synced io_u will not put file which it got, and, finally, cannot
close the file.

This patch returns io_u from td->io_u_free_list when td->runstate is
TD_FSYNCING, so that the io_u's in td->io_u_requeues will be cleaned up
and leads to close file appropriately.

Signed-off-by: Jonghwi Jeong <[email protected]>
@axboe axboe merged commit 34fa726 into axboe:master Jul 16, 2025
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants