diff mbox series

xfs: fix backwards logic in xfs_bmap_alloc_account

Message ID 20240109021734.GB722975@frogsfrogsfrogs (mailing list archive)
State Superseded
Headers show
Series xfs: fix backwards logic in xfs_bmap_alloc_account | expand

Commit Message

Darrick J. Wong Jan. 9, 2024, 2:17 a.m. UTC
From: Darrick J. Wong <djwong@kernel.org>

We're only allocating from the realtime device if the inode is marked
for realtime and we're /not/ allocating into the attr fork.

Fixes: 8a3cf489410dd ("xfs: also use xfs_bmap_btalloc_accounting for RT allocations")
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
---
 fs/xfs/libxfs/xfs_bmap.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Christoph Hellwig Jan. 9, 2024, 4:36 a.m. UTC | #1
On Mon, Jan 08, 2024 at 06:17:34PM -0800, Darrick J. Wong wrote:
> From: Darrick J. Wong <djwong@kernel.org>
> 
> We're only allocating from the realtime device if the inode is marked
> for realtime and we're /not/ allocating into the attr fork.

Hmm, interesting how this survived all my rtalloc tests.  How did you
find this?

Reviewed-by: Christoph Hellwig <hch@lst.de>
Darrick J. Wong Jan. 9, 2024, 5:08 a.m. UTC | #2
On Mon, Jan 08, 2024 at 08:36:19PM -0800, Christoph Hellwig wrote:
> On Mon, Jan 08, 2024 at 06:17:34PM -0800, Darrick J. Wong wrote:
> > From: Darrick J. Wong <djwong@kernel.org>
> > 
> > We're only allocating from the realtime device if the inode is marked
> > for realtime and we're /not/ allocating into the attr fork.
> 
> Hmm, interesting how this survived all my rtalloc tests.  How did you
> find this?

I actually found it while reabasing the rt reflink patchset atop
for-next, because you unified the bmap allocator accounting functions
instead of copy-pasting them like I did.  Then I tried generic/476 and
it blew up the first time it encountered a reflink file.

> Reviewed-by: Christoph Hellwig <hch@lst.de>

Thanks!  Chandan, can we get this merged?

--D
Chandan Babu R Jan. 9, 2024, 10:23 a.m. UTC | #3
On Mon, Jan 08, 2024 at 09:08:48 PM -0800, Darrick J. Wong wrote:
> On Mon, Jan 08, 2024 at 08:36:19PM -0800, Christoph Hellwig wrote:
>> On Mon, Jan 08, 2024 at 06:17:34PM -0800, Darrick J. Wong wrote:
>> > From: Darrick J. Wong <djwong@kernel.org>
>> > 
>> > We're only allocating from the realtime device if the inode is marked
>> > for realtime and we're /not/ allocating into the attr fork.
>> 
>> Hmm, interesting how this survived all my rtalloc tests.  How did you
>> find this?
>
> I actually found it while reabasing the rt reflink patchset atop
> for-next, because you unified the bmap allocator accounting functions
> instead of copy-pasting them like I did.  Then I tried generic/476 and
> it blew up the first time it encountered a reflink file.
>
>> Reviewed-by: Christoph Hellwig <hch@lst.de>
>
> Thanks!  Chandan, can we get this merged?

I have picked up the patch and will update for-next soon. I will send the
second pull request for v6.8-rc1 on coming Monday if everything goes well.
Chandan Babu R Jan. 10, 2024, 10:11 a.m. UTC | #4
On Mon, Jan 08, 2024 at 06:17:34 PM -0800, Darrick J. Wong wrote:
> From: Darrick J. Wong <djwong@kernel.org>
>
> We're only allocating from the realtime device if the inode is marked
> for realtime and we're /not/ allocating into the attr fork.
>
> Fixes: 8a3cf489410dd ("xfs: also use xfs_bmap_btalloc_accounting for RT allocations")

The commit ID should be 58643460546d
(https://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git/commit/?id=58643460546da1dc61593fc6fd78762798b4534f)
right?

If yes, I will fix it before pushing it for-next.

> Signed-off-by: Darrick J. Wong <djwong@kernel.org>
> ---
>  fs/xfs/libxfs/xfs_bmap.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c
> index ed7e11697249e..e1f2e61cb308e 100644
> --- a/fs/xfs/libxfs/xfs_bmap.c
> +++ b/fs/xfs/libxfs/xfs_bmap.c
> @@ -3320,7 +3320,7 @@ xfs_bmap_alloc_account(
>  	struct xfs_bmalloca	*ap)
>  {
>  	bool			isrt = XFS_IS_REALTIME_INODE(ap->ip) &&
> -					(ap->flags & XFS_BMAPI_ATTRFORK);
> +					!(ap->flags & XFS_BMAPI_ATTRFORK);
>  	uint			fld;
>  
>  	if (ap->flags & XFS_BMAPI_COWFORK) {
Darrick J. Wong Jan. 10, 2024, 5:47 p.m. UTC | #5
On Wed, Jan 10, 2024 at 03:41:32PM +0530, Chandan Babu R wrote:
> On Mon, Jan 08, 2024 at 06:17:34 PM -0800, Darrick J. Wong wrote:
> > From: Darrick J. Wong <djwong@kernel.org>
> >
> > We're only allocating from the realtime device if the inode is marked
> > for realtime and we're /not/ allocating into the attr fork.
> >
> > Fixes: 8a3cf489410dd ("xfs: also use xfs_bmap_btalloc_accounting for RT allocations")
> 
> The commit ID should be 58643460546d
> (https://git.kernel.org/pub/scm/fs/xfs/xfs-linux.git/commit/?id=58643460546da1dc61593fc6fd78762798b4534f)
> right?
> 
> If yes, I will fix it before pushing it for-next.

Yes.  Apparently I ran git blame on the wrong branch. :(

--D

> > Signed-off-by: Darrick J. Wong <djwong@kernel.org>
> > ---
> >  fs/xfs/libxfs/xfs_bmap.c |    2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c
> > index ed7e11697249e..e1f2e61cb308e 100644
> > --- a/fs/xfs/libxfs/xfs_bmap.c
> > +++ b/fs/xfs/libxfs/xfs_bmap.c
> > @@ -3320,7 +3320,7 @@ xfs_bmap_alloc_account(
> >  	struct xfs_bmalloca	*ap)
> >  {
> >  	bool			isrt = XFS_IS_REALTIME_INODE(ap->ip) &&
> > -					(ap->flags & XFS_BMAPI_ATTRFORK);
> > +					!(ap->flags & XFS_BMAPI_ATTRFORK);
> >  	uint			fld;
> >  
> >  	if (ap->flags & XFS_BMAPI_COWFORK) {
> 
> -- 
> Chandan
>
diff mbox series

Patch

diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c
index ed7e11697249e..e1f2e61cb308e 100644
--- a/fs/xfs/libxfs/xfs_bmap.c
+++ b/fs/xfs/libxfs/xfs_bmap.c
@@ -3320,7 +3320,7 @@  xfs_bmap_alloc_account(
 	struct xfs_bmalloca	*ap)
 {
 	bool			isrt = XFS_IS_REALTIME_INODE(ap->ip) &&
-					(ap->flags & XFS_BMAPI_ATTRFORK);
+					!(ap->flags & XFS_BMAPI_ATTRFORK);
 	uint			fld;
 
 	if (ap->flags & XFS_BMAPI_COWFORK) {