mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
xfs: create a helper to compute the blockcount of a max sized remote value
Create a helper function to compute the number of fsblocks needed to store a maximally-sized extended attribute value. Signed-off-by: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Andrey Albershteyn <aalbersh@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
a5714b67ca
commit
204a26aa1d
@ -1036,7 +1036,7 @@ xfs_attr_set(
|
|||||||
break;
|
break;
|
||||||
case XFS_ATTRUPDATE_REMOVE:
|
case XFS_ATTRUPDATE_REMOVE:
|
||||||
XFS_STATS_INC(mp, xs_attr_remove);
|
XFS_STATS_INC(mp, xs_attr_remove);
|
||||||
rmt_blks = xfs_attr3_rmt_blocks(mp, XFS_XATTR_SIZE_MAX);
|
rmt_blks = xfs_attr3_max_rmt_blocks(mp);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,6 +8,12 @@
|
|||||||
|
|
||||||
unsigned int xfs_attr3_rmt_blocks(struct xfs_mount *mp, unsigned int attrlen);
|
unsigned int xfs_attr3_rmt_blocks(struct xfs_mount *mp, unsigned int attrlen);
|
||||||
|
|
||||||
|
/* Number of rmt blocks needed to store the maximally sized attr value */
|
||||||
|
static inline unsigned int xfs_attr3_max_rmt_blocks(struct xfs_mount *mp)
|
||||||
|
{
|
||||||
|
return xfs_attr3_rmt_blocks(mp, XFS_XATTR_SIZE_MAX);
|
||||||
|
}
|
||||||
|
|
||||||
int xfs_attr_rmtval_get(struct xfs_da_args *args);
|
int xfs_attr_rmtval_get(struct xfs_da_args *args);
|
||||||
int xfs_attr_rmtval_stale(struct xfs_inode *ip, struct xfs_bmbt_irec *map,
|
int xfs_attr_rmtval_stale(struct xfs_inode *ip, struct xfs_bmbt_irec *map,
|
||||||
xfs_buf_flags_t incore_flags);
|
xfs_buf_flags_t incore_flags);
|
||||||
|
@ -223,7 +223,7 @@ xrep_bufscan_max_sectors(
|
|||||||
int max_fsbs;
|
int max_fsbs;
|
||||||
|
|
||||||
/* Remote xattr values are the largest buffers that we support. */
|
/* Remote xattr values are the largest buffers that we support. */
|
||||||
max_fsbs = xfs_attr3_rmt_blocks(mp, XFS_XATTR_SIZE_MAX);
|
max_fsbs = xfs_attr3_max_rmt_blocks(mp);
|
||||||
|
|
||||||
return XFS_FSB_TO_BB(mp, min_t(xfs_extlen_t, fsblocks, max_fsbs));
|
return XFS_FSB_TO_BB(mp, min_t(xfs_extlen_t, fsblocks, max_fsbs));
|
||||||
}
|
}
|
||||||
@ -806,7 +806,7 @@ xreap_bmapi_binval(
|
|||||||
* of the next hole.
|
* of the next hole.
|
||||||
*/
|
*/
|
||||||
off = imap->br_startoff + imap->br_blockcount;
|
off = imap->br_startoff + imap->br_blockcount;
|
||||||
max_off = off + xfs_attr3_rmt_blocks(mp, XFS_XATTR_SIZE_MAX);
|
max_off = off + xfs_attr3_max_rmt_blocks(mp);
|
||||||
while (off < max_off) {
|
while (off < max_off) {
|
||||||
struct xfs_bmbt_irec hmap;
|
struct xfs_bmbt_irec hmap;
|
||||||
int nhmaps = 1;
|
int nhmaps = 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user