Lines Matching +full:block +full:- +full:offset
1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright (c) 2000-2003,2005 Silicon Graphics, Inc.
16 struct xfs_buf *rbmbp; /* bitmap block buffer */
17 struct xfs_buf *sumbp; /* summary block buffer */
19 xfs_fileoff_t rbmoff; /* bitmap block number */
20 xfs_fileoff_t sumoff; /* summary block number */
31 if (mp->m_rtxblklog >= 0) in xfs_rtx_to_rtb()
32 return start + (rtx << mp->m_rtxblklog); in xfs_rtx_to_rtb()
33 return start + (rtx * mp->m_sb.sb_rextsize); in xfs_rtx_to_rtb()
42 if (likely(mp->m_rtxblklog >= 0)) in xfs_rgbno_to_rtx()
43 return rgbno >> mp->m_rtxblklog; in xfs_rgbno_to_rtx()
44 return rgbno / mp->m_sb.sb_rextsize; in xfs_rgbno_to_rtx()
52 if (mp->m_rtxblklog >= 0) in xfs_rtbxlen_to_blen()
53 return rtbxlen << mp->m_rtxblklog; in xfs_rtbxlen_to_blen()
55 return rtbxlen * mp->m_sb.sb_rextsize; in xfs_rtbxlen_to_blen()
63 if (mp->m_rtxblklog >= 0) in xfs_rtxlen_to_extlen()
64 return rtxlen << mp->m_rtxblklog; in xfs_rtxlen_to_extlen()
66 return rtxlen * mp->m_sb.sb_rextsize; in xfs_rtxlen_to_extlen()
75 if (mp->m_rtxblklog >= 0) in xfs_extlen_to_rtxmod()
76 return len & mp->m_rtxblkmask; in xfs_extlen_to_rtxmod()
78 return len % mp->m_sb.sb_rextsize; in xfs_extlen_to_rtxmod()
86 if (mp->m_rtxblklog >= 0) in xfs_extlen_to_rtxlen()
87 return len >> mp->m_rtxblklog; in xfs_extlen_to_rtxlen()
89 return len / mp->m_sb.sb_rextsize; in xfs_extlen_to_rtxlen()
92 /* Convert an rt block count into an rt extent count. */
98 if (likely(mp->m_rtxblklog >= 0)) in xfs_blen_to_rtbxlen()
99 return blen >> mp->m_rtxblklog; in xfs_blen_to_rtbxlen()
101 return div_u64(blen, mp->m_sb.sb_rextsize); in xfs_blen_to_rtbxlen()
104 /* Return the offset of a file block length within an rt extent. */
110 if (likely(mp->m_rtxblklog >= 0)) in xfs_blen_to_rtxoff()
111 return blen & mp->m_rtxblkmask; in xfs_blen_to_rtxoff()
113 return do_div(blen, mp->m_sb.sb_rextsize); in xfs_blen_to_rtxoff()
116 /* Round this block count up to the nearest rt extent size. */
122 return roundup_64(blen, mp->m_sb.sb_rextsize); in xfs_blen_roundup_rtx()
125 /* Convert an rt block number into an rt extent number. */
131 /* open-coded 64-bit masking operation */ in xfs_rtb_to_rtx()
132 rtbno &= mp->m_groups[XG_TYPE_RTG].blkmask; in xfs_rtb_to_rtx()
133 if (likely(mp->m_rtxblklog >= 0)) in xfs_rtb_to_rtx()
134 return rtbno >> mp->m_rtxblklog; in xfs_rtb_to_rtx()
135 return div_u64(rtbno, mp->m_sb.sb_rextsize); in xfs_rtb_to_rtx()
138 /* Return the offset of a rtgroup block number within an rt extent. */
144 return rgbno % mp->m_sb.sb_rextsize; in xfs_rgbno_to_rtxoff()
147 /* Return the offset of an rt block number within an rt extent. */
153 /* open-coded 64-bit masking operation */ in xfs_rtb_to_rtxoff()
154 rtbno &= mp->m_groups[XG_TYPE_RTG].blkmask; in xfs_rtb_to_rtxoff()
155 if (likely(mp->m_rtxblklog >= 0)) in xfs_rtb_to_rtxoff()
156 return rtbno & mp->m_rtxblkmask; in xfs_rtb_to_rtxoff()
157 return do_div(rtbno, mp->m_sb.sb_rextsize); in xfs_rtb_to_rtxoff()
160 /* Round this file block offset up to the nearest rt extent size. */
166 return roundup_64(off, mp->m_sb.sb_rextsize); in xfs_fileoff_roundup_rtx()
169 /* Round this file block offset down to the nearest rt extent size. */
175 return rounddown_64(off, mp->m_sb.sb_rextsize); in xfs_fileoff_rounddown_rtx()
178 /* Convert an rt extent number to a file block offset in the rt bitmap file. */
185 return div_u64(rtx, mp->m_rtx_per_rbmblock); in xfs_rtx_to_rbmblock()
187 return rtx >> mp->m_blkbit_log; in xfs_rtx_to_rbmblock()
190 /* Convert an rt extent number to a word offset within an rt bitmap block. */
199 div_u64_rem(rtx >> XFS_NBWORDLOG, mp->m_blockwsize, &mod); in xfs_rtx_to_rbmword()
203 return (rtx >> XFS_NBWORDLOG) & (mp->m_blockwsize - 1); in xfs_rtx_to_rbmword()
206 /* Convert a file block offset in the rt bitmap file to an rt extent number. */
213 return rbmoff * mp->m_rtx_per_rbmblock; in xfs_rbmblock_to_rtx()
215 return rbmoff << mp->m_blkbit_log; in xfs_rbmblock_to_rtx()
218 /* Return a pointer to a bitmap word within a rt bitmap block. */
224 struct xfs_mount *mp = args->mp; in xfs_rbmblock_wordptr()
226 struct xfs_rtbuf_blkinfo *hdr = args->rbmbp->b_addr; in xfs_rbmblock_wordptr()
231 words = args->rbmbp->b_addr; in xfs_rbmblock_wordptr()
244 if (xfs_has_rtgroups(args->mp)) in xfs_rtbitmap_getword()
245 return be32_to_cpu(word->rtg); in xfs_rtbitmap_getword()
246 return word->old; in xfs_rtbitmap_getword()
258 if (xfs_has_rtgroups(args->mp)) in xfs_rtbitmap_setword()
259 word->rtg = cpu_to_be32(value); in xfs_rtbitmap_setword()
261 word->old = value; in xfs_rtbitmap_setword()
265 * Convert a rt extent length and rt bitmap block number to a xfs_suminfo_t
266 * offset within the rt summary file.
274 return log2_len * mp->m_sb.sb_rbmblocks + rbmoff; in xfs_rtsumoffs()
278 * Convert an xfs_suminfo_t offset to a file block offset within the rt summary
287 return rsumoff / mp->m_blockwsize; in xfs_rtsumoffs_to_block()
293 * Convert an xfs_suminfo_t offset to an info word offset within an rt summary
294 * block.
301 unsigned int mask = mp->m_blockmask >> XFS_SUMINFOLOG; in xfs_rtsumoffs_to_infoword()
304 return rsumoff % mp->m_blockwsize; in xfs_rtsumoffs_to_infoword()
309 /* Return a pointer to a summary info word within a rt summary block. */
316 struct xfs_rtbuf_blkinfo *hdr = args->sumbp->b_addr; in xfs_rsumblock_infoptr()
318 if (xfs_has_rtgroups(args->mp)) in xfs_rsumblock_infoptr()
321 info = args->sumbp->b_addr; in xfs_rsumblock_infoptr()
334 if (xfs_has_rtgroups(args->mp)) in xfs_suminfo_get()
335 return be32_to_cpu(info->rtg); in xfs_suminfo_get()
336 return info->old; in xfs_suminfo_get()
348 if (xfs_has_rtgroups(args->mp)) { in xfs_suminfo_add()
349 be32_add_cpu(&info->rtg, delta); in xfs_suminfo_add()
350 return be32_to_cpu(info->rtg); in xfs_suminfo_add()
353 info->old += delta; in xfs_suminfo_add()
354 return info->old; in xfs_suminfo_add()
386 int xfs_rtbitmap_read_buf(struct xfs_rtalloc_args *args, xfs_fileoff_t block);
387 int xfs_rtsummary_read_buf(struct xfs_rtalloc_args *args, xfs_fileoff_t block);
431 # define xfs_rtfree_extent(t,b,l) (-ENOSYS)
437 return -ENOSYS; in xfs_rtfree_blocks()
439 # define xfs_rtalloc_query_range(m,t,l,h,f,p) (-ENOSYS)
440 # define xfs_rtalloc_query_all(m,t,f,p) (-ENOSYS)
441 # define xfs_rtbitmap_read_buf(a,b) (-ENOSYS)
442 # define xfs_rtsummary_read_buf(a,b) (-ENOSYS)
444 # define xfs_rtalloc_extent_is_free(m,t,s,l,i) (-ENOSYS)