All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dave Chinner <david@fromorbit.com>
To: "Darrick J. Wong" <djwong@kernel.org>
Cc: hch@lst.de, chandanbabu@kernel.org, linux-xfs@vger.kernel.org
Subject: Re: [PATCH 1/5] xfs: don't treat append-only files as having preallocations
Date: Thu, 13 Jun 2024 16:03:53 +1000	[thread overview]
Message-ID: <ZmqLyfdH5KGzSYDY@dread.disaster.area> (raw)
In-Reply-To: <171821431777.3202459.4876836906447539030.stgit@frogsfrogsfrogs>

On Wed, Jun 12, 2024 at 10:46:48AM -0700, Darrick J. Wong wrote:
> From: Christoph Hellwig <hch@lst.de>
> 
> The XFS XFS_DIFLAG_APPEND maps to the VFS S_APPEND flag, which forbids
> writes that don't append at the current EOF.
> 
> But the commit originally adding XFS_DIFLAG_APPEND support (commit
> a23321e766d in xfs xfs-import repository) also checked it to skip
> releasing speculative preallocations, which doesn't make any sense.

I disagree, there was a very good reason for this behaviour:
preventing append-only log files from getting excessively fragmented
because speculative prealloc would get removed on close().

i.e. applications that slowly log messages to append only files
with the pattern open(O_APPEND); write(a single line to the log);
close(); caused worst case file fragmentation because the close()
always removed the speculative prealloc beyond EOF.

The fix for this pessimisitic XFS behaviour is for the application
to use chattr +A (like they would for ext3/4) hence triggering the
existence of XFS_DIFLAG_APPEND and that avoided the removal
speculative delalloc removed when the file is closed. hence the
fragmentation problems went away.

Note that fragmentation issue didn't affect the log writes - it
badly affected log reads because it turned them into worse case
random read workloads instead of sequential reads.

As such, I think the justification for this change is wrong and that
it removes a longstanding feature that prevents severe fragmentation
of append only log files. I think we should be leaving this code as
it currently stands.

-Dave.
-- 
Dave Chinner
david@fromorbit.com

  reply	other threads:[~2024-06-13  6:03 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-12 17:46 [PATCHSET] xfs: random fixes for 6.10 Darrick J. Wong
2024-06-12 17:46 ` [PATCH 1/5] xfs: don't treat append-only files as having preallocations Darrick J. Wong
2024-06-13  6:03   ` Dave Chinner [this message]
2024-06-13  8:28     ` Christoph Hellwig
2024-06-17  5:03       ` Dave Chinner
2024-06-17  6:46         ` Christoph Hellwig
2024-06-17 23:28           ` Dave Chinner
2024-06-12 17:47 ` [PATCH 2/5] xfs: fix freeing speculative preallocations for preallocated files Darrick J. Wong
2024-06-12 17:47 ` [PATCH 3/5] xfs: restrict when we try to align cow fork delalloc to cowextsz hints Darrick J. Wong
2024-06-13  5:06   ` Christoph Hellwig
2024-06-14  4:13     ` Darrick J. Wong
2024-06-14  4:41       ` Christoph Hellwig
2024-06-14  5:27         ` Darrick J. Wong
2024-06-14  5:30           ` Christoph Hellwig
2024-06-12 17:47 ` [PATCH 4/5] xfs: allow unlinked symlinks and dirs with zero size Darrick J. Wong
2024-06-13  4:57   ` Christoph Hellwig
2024-06-12 17:47 ` [PATCH 5/5] xfs: verify buffer, inode, and dquot items every tx commit Darrick J. Wong
2024-06-13  5:07   ` Christoph Hellwig
2024-06-13  7:04   ` Dave Chinner
2024-06-14  3:49     ` Darrick J. Wong
2024-06-14  4:42       ` Christoph Hellwig
2024-06-14  5:23         ` Darrick J. Wong
2024-06-18  0:18   ` [PATCH v1.1 " Darrick J. Wong
2024-06-18  6:38     ` Christoph Hellwig

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ZmqLyfdH5KGzSYDY@dread.disaster.area \
    --to=david@fromorbit.com \
    --cc=chandanbabu@kernel.org \
    --cc=djwong@kernel.org \
    --cc=hch@lst.de \
    --cc=linux-xfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.