linux-xfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: lukas@herbolt.com
To: Christoph Hellwig <hch@infradead.org>
Cc: linux-xfs@vger.kernel.org
Subject: Re: [PATCH RFC] xfs: add FALLOC_FL_WRITE_ZEROES to XFS code base
Date: Tue, 14 Oct 2025 10:10:51 +0200	[thread overview]
Message-ID: <dee6b75856d013f8aa6de1c17ff0f20a@herbolt.com> (raw)
In-Reply-To: <aOCfus7PgLl812qf@infradead.org>

On 2025-10-04 06:16, Christoph Hellwig wrote:
> On Fri, Oct 03, 2025 at 09:00:20PM -0700, Darrick J. Wong wrote:
>> > > -	error = xfs_alloc_file_space(XFS_I(inode), offset, len);
>> > > +	if (mode & FALLOC_FL_WRITE_ZEROES) {
>> > > +		if (!bdev_write_zeroes_unmap_sectors(inode->i_sb->s_bdev))
>> 
>>      		                         not correct ^^^^^^^^^^^^^^^^^^^
>> 
>> You need to find the block device associated with the file because XFS
>> is a multi-device filesystem.
> 
> Indeed. xfs_inode_buftarg will do the work, but we'll need to ensure

Thanks for xfs_inode_buftarg pointer.

> the RT bit doesn't get flipped, i.e. it needs to hold a lock between
> that check and allocation the blocks if there were none yet.

I am having bit of trouble with that. If I get it right we should hold
the XFS_ILOCK_EXCL but this lock is then grabbed in the 
xfs_trans_alloc_inode.

So I would need to release before and there would be again a small 
window
where the RT flag can be flipped.

Looking at the xfs_alloc_file_space, there is also check for the RT bit 
without
lock, so this also need an attention.
     rt = XFS_IS_REALTIME_INODE(ip);
     extsz = xfs_get_extsz_hint(ip);

Or the xfs_trans_alloc_inode would need to check if we are a;ready 
holding the
lock Is there a way how to check the current thread is the owner of the
xfs_ilock rw_sem?

Something like?
---
static inline bool is_current_writer(struct rw_semaphore *sem)
{
     /* The rwsem_owner() helper can be used to get the owner */
     return sem->owner == current;
}
---

  reply	other threads:[~2025-10-14  8:11 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-02 12:28 [PATCH RFC] xfs: add FALLOC_FL_WRITE_ZEROES to XFS code base Lukas Herbolt
2025-10-03  7:51 ` Christoph Hellwig
2025-10-04  4:00   ` Darrick J. Wong
2025-10-04  4:16     ` Christoph Hellwig
2025-10-14  8:10       ` lukas [this message]
2025-10-14 21:15         ` Darrick J. Wong
2025-10-15  6:30 ` Nirjhar Roy (IBM)

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=dee6b75856d013f8aa6de1c17ff0f20a@herbolt.com \
    --to=lukas@herbolt.com \
    --cc=hch@infradead.org \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).