Re: [RFC PATCH v4 7/8] xfs: reserve blocks for truncating realtime inode

From: Darrick J. Wong
Date: Fri May 31 2024 - 10:10:14 EST


On Fri, May 31, 2024 at 05:42:37AM -0700, Christoph Hellwig wrote:
> > - error = xfs_trans_alloc(mp, &M_RES(mp)->tr_itruncate, 0, 0, 0, &tp);
> > + resblks = XFS_IS_REALTIME_INODE(ip) ? XFS_DIOSTRAT_SPACE_RES(mp, 0) : 0;
>
> This probably wants a comment explaining that we need the block
> reservation for bmap btree block allocations / splits that can happen
> because we can split a written extent into one written and one
> unwritten, while for the data fork we'll always just shorten or
> remove extents.

"for the data fork"? <confused>

This always runs on the data fork. Did you mean "for files with alloc
unit > 1 fsblock"?

> I'd also find this more readable if resblks was initialized to 0,
> and this became a:
>
> if (XFS_IS_REALTIME_INODE(ip))
> resblks = XFS_DIOSTRAT_SPACE_RES(mp, 0);

Agreed.

--D