Lines Matching refs:mp
31 xfs_mount_t *mp, /* file system mount structure */ in xfs_rtget_summary() argument
39 return xfs_rtmodify_summary_int(mp, tp, log, bbno, 0, rbpp, rsb, sum); in xfs_rtget_summary()
48 xfs_mount_t *mp, /* file system mount structure */ in xfs_rtany_summary() argument
62 if (mp->m_rsum_cache && low < mp->m_rsum_cache[bbno]) in xfs_rtany_summary()
63 low = mp->m_rsum_cache[bbno]; in xfs_rtany_summary()
72 error = xfs_rtget_summary(mp, tp, log, bbno, rbpp, rsb, &sum); in xfs_rtany_summary()
90 if (mp->m_rsum_cache && log > mp->m_rsum_cache[bbno]) in xfs_rtany_summary()
91 mp->m_rsum_cache[bbno] = log; in xfs_rtany_summary()
143 xfs_mount_t *mp, /* file system mount point */ in xfs_rtallocate_range() argument
161 error = xfs_rtfind_back(mp, tp, start, 0, &preblock); in xfs_rtallocate_range()
168 error = xfs_rtfind_forw(mp, tp, end, mp->m_sb.sb_rextents - 1, in xfs_rtallocate_range()
177 error = xfs_rtmodify_summary(mp, tp, in xfs_rtallocate_range()
179 XFS_BITTOBLOCK(mp, preblock), -1, rbpp, rsb); in xfs_rtallocate_range()
188 error = xfs_rtmodify_summary(mp, tp, in xfs_rtallocate_range()
190 XFS_BITTOBLOCK(mp, preblock), 1, rbpp, rsb); in xfs_rtallocate_range()
200 error = xfs_rtmodify_summary(mp, tp, in xfs_rtallocate_range()
202 XFS_BITTOBLOCK(mp, end + 1), 1, rbpp, rsb); in xfs_rtallocate_range()
210 error = xfs_rtmodify_range(mp, tp, start, len, 0); in xfs_rtallocate_range()
222 xfs_mount_t *mp, /* file system mount point */ in xfs_rtallocate_extent_block() argument
246 for (i = XFS_BLOCKTOBIT(mp, bbno), besti = -1, bestlen = 0, in xfs_rtallocate_extent_block()
247 end = XFS_BLOCKTOBIT(mp, bbno + 1) - 1; in xfs_rtallocate_extent_block()
251 maxlen = min(mp->m_sb.sb_rextents, i + maxlen) - i; in xfs_rtallocate_extent_block()
257 error = xfs_rtcheck_range(mp, tp, i, maxlen, 1, &next, &stat); in xfs_rtallocate_extent_block()
265 error = xfs_rtallocate_range(mp, tp, i, maxlen, rbpp, in xfs_rtallocate_extent_block()
293 error = xfs_rtfind_forw(mp, tp, next, end, &i); in xfs_rtallocate_extent_block()
318 error = xfs_rtallocate_range(mp, tp, besti, bestlen, rbpp, rsb); in xfs_rtallocate_extent_block()
342 xfs_mount_t *mp, /* file system mount point */ in xfs_rtallocate_extent_exact() argument
362 error = xfs_rtcheck_range(mp, tp, bno, maxlen, 1, &next, &isfree); in xfs_rtallocate_extent_exact()
370 error = xfs_rtallocate_range(mp, tp, bno, maxlen, rbpp, rsb); in xfs_rtallocate_extent_exact()
405 error = xfs_rtallocate_range(mp, tp, bno, maxlen, rbpp, rsb); in xfs_rtallocate_extent_exact()
421 xfs_mount_t *mp, /* file system mount point */ in xfs_rtallocate_extent_near() argument
446 if (bno >= mp->m_sb.sb_rextents) in xfs_rtallocate_extent_near()
447 bno = mp->m_sb.sb_rextents - 1; in xfs_rtallocate_extent_near()
450 maxlen = min(mp->m_sb.sb_rextents, bno + maxlen) - bno; in xfs_rtallocate_extent_near()
459 error = xfs_rtallocate_extent_exact(mp, tp, bno, minlen, maxlen, len, in xfs_rtallocate_extent_near()
471 bbno = XFS_BITTOBLOCK(mp, bno); in xfs_rtallocate_extent_near()
483 error = xfs_rtany_summary(mp, tp, log2len, mp->m_rsumlevels - 1, in xfs_rtallocate_extent_near()
501 error = xfs_rtallocate_extent_block(mp, tp, in xfs_rtallocate_extent_near()
530 error = xfs_rtany_summary(mp, tp, in xfs_rtallocate_extent_near()
531 log2len, mp->m_rsumlevels - 1, in xfs_rtallocate_extent_near()
546 error = xfs_rtallocate_extent_block(mp, in xfs_rtallocate_extent_near()
568 error = xfs_rtallocate_extent_block(mp, tp, in xfs_rtallocate_extent_near()
593 else if (i > 0 && (int)bbno + i < mp->m_sb.sb_rbmblocks - 1) in xfs_rtallocate_extent_near()
599 else if (i <= 0 && (int)bbno - i < mp->m_sb.sb_rbmblocks - 1) in xfs_rtallocate_extent_near()
624 xfs_mount_t *mp, /* file system mount point */ in xfs_rtallocate_extent_size() argument
651 for (l = xfs_highbit32(maxlen); l < mp->m_rsumlevels; l++) { in xfs_rtallocate_extent_size()
655 for (i = 0; i < mp->m_sb.sb_rbmblocks; i++) { in xfs_rtallocate_extent_size()
659 error = xfs_rtget_summary(mp, tp, l, i, rbpp, rsb, in xfs_rtallocate_extent_size()
672 error = xfs_rtallocate_extent_block(mp, tp, i, maxlen, in xfs_rtallocate_extent_size()
689 if (XFS_BITTOBLOCK(mp, n) > i + 1) in xfs_rtallocate_extent_size()
690 i = XFS_BITTOBLOCK(mp, n) - 1; in xfs_rtallocate_extent_size()
714 for (i = 0; i < mp->m_sb.sb_rbmblocks; i++) { in xfs_rtallocate_extent_size()
718 error = xfs_rtget_summary(mp, tp, l, i, rbpp, rsb, in xfs_rtallocate_extent_size()
733 error = xfs_rtallocate_extent_block(mp, tp, i, in xfs_rtallocate_extent_size()
752 if (XFS_BITTOBLOCK(mp, n) > i + 1) in xfs_rtallocate_extent_size()
753 i = XFS_BITTOBLOCK(mp, n) - 1; in xfs_rtallocate_extent_size()
768 struct xfs_mount *mp, /* file system mount point */ in xfs_growfs_rt_alloc() argument
784 if (ip == mp->m_rsumip) in xfs_growfs_rt_alloc()
793 resblks = XFS_GROWFSRT_SPACE_RES(mp, nblocks - oblocks); in xfs_growfs_rt_alloc()
797 error = xfs_trans_alloc(mp, &M_RES(mp)->tr_growrtalloc, resblks, in xfs_growfs_rt_alloc()
841 error = xfs_trans_alloc(mp, &M_RES(mp)->tr_growrtzero, in xfs_growfs_rt_alloc()
853 d = XFS_FSB_TO_DADDR(mp, fsbno); in xfs_growfs_rt_alloc()
854 error = xfs_trans_get_buf(tp, mp->m_ddev_targp, d, in xfs_growfs_rt_alloc()
855 mp->m_bsize, 0, &bp); in xfs_growfs_rt_alloc()
861 memset(bp->b_addr, 0, mp->m_sb.sb_blocksize); in xfs_growfs_rt_alloc()
862 xfs_trans_log_buf(tp, bp, 0, mp->m_sb.sb_blocksize - 1); in xfs_growfs_rt_alloc()
885 xfs_mount_t *mp, /* file system mount structure */ in xfs_alloc_rsum_cache() argument
893 mp->m_rsum_cache = kvzalloc(rbmblocks, GFP_KERNEL); in xfs_alloc_rsum_cache()
894 if (!mp->m_rsum_cache) in xfs_alloc_rsum_cache()
895 xfs_warn(mp, "could not allocate realtime summary cache"); in xfs_alloc_rsum_cache()
907 xfs_mount_t *mp, /* mount point for filesystem */ in xfs_growfs_rt() argument
928 sbp = &mp->m_sb; in xfs_growfs_rt()
934 if (!XFS_IS_REALTIME_MOUNT(mp)) in xfs_growfs_rt()
940 if (!mp->m_rbmip || !mp->m_rsumip) in xfs_growfs_rt()
952 if (XFS_FSB_TO_B(mp, in->extsize) > XFS_MAX_RTEXTSIZE || in xfs_growfs_rt()
953 XFS_FSB_TO_B(mp, in->extsize) < XFS_MIN_RTEXTSIZE) in xfs_growfs_rt()
957 if (xfs_has_rmapbt(mp) || xfs_has_reflink(mp)) in xfs_growfs_rt()
967 error = xfs_buf_read_uncached(mp->m_rtdev_targp, in xfs_growfs_rt()
968 XFS_FSB_TO_BB(mp, nrblocks - 1), in xfs_growfs_rt()
969 XFS_FSB_TO_BB(mp, 1), 0, &bp, NULL); in xfs_growfs_rt()
983 nrsumblocks = XFS_B_TO_FSB(mp, nrsumsize); in xfs_growfs_rt()
984 nrsumsize = XFS_FSB_TO_B(mp, nrsumblocks); in xfs_growfs_rt()
990 if (nrsumblocks > (mp->m_sb.sb_logblocks >> 1)) in xfs_growfs_rt()
996 rbmblocks = XFS_B_TO_FSB(mp, mp->m_rbmip->i_disk_size); in xfs_growfs_rt()
997 rsumblocks = XFS_B_TO_FSB(mp, mp->m_rsumip->i_disk_size); in xfs_growfs_rt()
1001 error = xfs_growfs_rt_alloc(mp, rbmblocks, nrbmblocks, mp->m_rbmip); in xfs_growfs_rt()
1004 error = xfs_growfs_rt_alloc(mp, rsumblocks, nrsumblocks, mp->m_rsumip); in xfs_growfs_rt()
1008 rsum_cache = mp->m_rsum_cache; in xfs_growfs_rt()
1010 xfs_alloc_rsum_cache(mp, nrbmblocks); in xfs_growfs_rt()
1023 ((sbp->sb_rextents & ((1 << mp->m_blkbit_log) - 1)) != 0); in xfs_growfs_rt()
1029 *nmp = *mp; in xfs_growfs_rt()
1047 nrsumblocks = XFS_B_TO_FSB(mp, nrsumsize); in xfs_growfs_rt()
1048 nmp->m_rsumsize = nrsumsize = XFS_FSB_TO_B(mp, nrsumblocks); in xfs_growfs_rt()
1052 error = xfs_trans_alloc(mp, &M_RES(mp)->tr_growrtfree, 0, 0, 0, in xfs_growfs_rt()
1059 xfs_ilock(mp->m_rbmip, XFS_ILOCK_EXCL | XFS_ILOCK_RTBITMAP); in xfs_growfs_rt()
1060 xfs_trans_ijoin(tp, mp->m_rbmip, XFS_ILOCK_EXCL); in xfs_growfs_rt()
1066 mp->m_rbmip->i_disk_size = in xfs_growfs_rt()
1068 i_size_write(VFS_I(mp->m_rbmip), mp->m_rbmip->i_disk_size); in xfs_growfs_rt()
1069 xfs_trans_log_inode(tp, mp->m_rbmip, XFS_ILOG_CORE); in xfs_growfs_rt()
1073 xfs_ilock(mp->m_rsumip, XFS_ILOCK_EXCL | XFS_ILOCK_RTSUM); in xfs_growfs_rt()
1074 xfs_trans_ijoin(tp, mp->m_rsumip, XFS_ILOCK_EXCL); in xfs_growfs_rt()
1080 mp->m_rsumip->i_disk_size = nmp->m_rsumsize; in xfs_growfs_rt()
1081 i_size_write(VFS_I(mp->m_rsumip), mp->m_rsumip->i_disk_size); in xfs_growfs_rt()
1082 xfs_trans_log_inode(tp, mp->m_rsumip, XFS_ILOG_CORE); in xfs_growfs_rt()
1088 mp->m_rsumlevels != nmp->m_rsumlevels) { in xfs_growfs_rt()
1089 error = xfs_rtcopy_summary(mp, nmp, tp); in xfs_growfs_rt()
1130 mp->m_rsumlevels = nrsumlevels; in xfs_growfs_rt()
1131 mp->m_rsumsize = nrsumsize; in xfs_growfs_rt()
1138 mp->m_features |= XFS_FEAT_REALTIME; in xfs_growfs_rt()
1144 error = xfs_update_secondary_sbs(mp); in xfs_growfs_rt()
1157 if (rsum_cache != mp->m_rsum_cache) { in xfs_growfs_rt()
1159 kmem_free(mp->m_rsum_cache); in xfs_growfs_rt()
1160 mp->m_rsum_cache = rsum_cache; in xfs_growfs_rt()
1185 xfs_mount_t *mp = tp->t_mountp; in xfs_rtallocate_extent() local
1191 ASSERT(xfs_isilocked(mp->m_rbmip, XFS_ILOCK_EXCL)); in xfs_rtallocate_extent()
1213 error = xfs_rtallocate_extent_size(mp, tp, minlen, maxlen, len, in xfs_rtallocate_extent()
1216 error = xfs_rtallocate_extent_near(mp, tp, bno, minlen, maxlen, in xfs_rtallocate_extent()
1248 struct xfs_mount *mp) /* file system mount structure */ in xfs_rtmount_init() argument
1255 sbp = &mp->m_sb; in xfs_rtmount_init()
1258 if (mp->m_rtdev_targp == NULL) { in xfs_rtmount_init()
1259 xfs_warn(mp, in xfs_rtmount_init()
1263 mp->m_rsumlevels = sbp->sb_rextslog + 1; in xfs_rtmount_init()
1264 mp->m_rsumsize = in xfs_rtmount_init()
1265 (uint)sizeof(xfs_suminfo_t) * mp->m_rsumlevels * in xfs_rtmount_init()
1267 mp->m_rsumsize = roundup(mp->m_rsumsize, sbp->sb_blocksize); in xfs_rtmount_init()
1268 mp->m_rbmip = mp->m_rsumip = NULL; in xfs_rtmount_init()
1272 d = (xfs_daddr_t)XFS_FSB_TO_BB(mp, mp->m_sb.sb_rblocks); in xfs_rtmount_init()
1273 if (XFS_BB_TO_FSB(mp, d) != mp->m_sb.sb_rblocks) { in xfs_rtmount_init()
1274 xfs_warn(mp, "realtime mount -- %llu != %llu", in xfs_rtmount_init()
1275 (unsigned long long) XFS_BB_TO_FSB(mp, d), in xfs_rtmount_init()
1276 (unsigned long long) mp->m_sb.sb_rblocks); in xfs_rtmount_init()
1279 error = xfs_buf_read_uncached(mp->m_rtdev_targp, in xfs_rtmount_init()
1280 d - XFS_FSB_TO_BB(mp, 1), in xfs_rtmount_init()
1281 XFS_FSB_TO_BB(mp, 1), 0, &bp, NULL); in xfs_rtmount_init()
1283 xfs_warn(mp, "realtime device size check failed"); in xfs_rtmount_init()
1292 struct xfs_mount *mp, in xfs_rtalloc_count_frextent() argument
1309 struct xfs_mount *mp) in xfs_rtalloc_reinit_frextents() argument
1314 xfs_ilock(mp->m_rbmip, XFS_ILOCK_SHARED | XFS_ILOCK_RTBITMAP); in xfs_rtalloc_reinit_frextents()
1315 error = xfs_rtalloc_query_all(mp, NULL, xfs_rtalloc_count_frextent, in xfs_rtalloc_reinit_frextents()
1317 xfs_iunlock(mp->m_rbmip, XFS_ILOCK_SHARED | XFS_ILOCK_RTBITMAP); in xfs_rtalloc_reinit_frextents()
1321 spin_lock(&mp->m_sb_lock); in xfs_rtalloc_reinit_frextents()
1322 mp->m_sb.sb_frextents = val; in xfs_rtalloc_reinit_frextents()
1323 spin_unlock(&mp->m_sb_lock); in xfs_rtalloc_reinit_frextents()
1324 percpu_counter_set(&mp->m_frextents, mp->m_sb.sb_frextents); in xfs_rtalloc_reinit_frextents()
1369 xfs_mount_t *mp) /* file system mount structure */ in xfs_rtmount_inodes() argument
1374 sbp = &mp->m_sb; in xfs_rtmount_inodes()
1375 error = xfs_iget(mp, NULL, sbp->sb_rbmino, 0, 0, &mp->m_rbmip); in xfs_rtmount_inodes()
1378 ASSERT(mp->m_rbmip != NULL); in xfs_rtmount_inodes()
1380 error = xfs_rtmount_iread_extents(mp->m_rbmip, XFS_ILOCK_RTBITMAP); in xfs_rtmount_inodes()
1384 error = xfs_iget(mp, NULL, sbp->sb_rsumino, 0, 0, &mp->m_rsumip); in xfs_rtmount_inodes()
1387 ASSERT(mp->m_rsumip != NULL); in xfs_rtmount_inodes()
1389 error = xfs_rtmount_iread_extents(mp->m_rsumip, XFS_ILOCK_RTSUM); in xfs_rtmount_inodes()
1393 xfs_alloc_rsum_cache(mp, sbp->sb_rbmblocks); in xfs_rtmount_inodes()
1397 xfs_irele(mp->m_rsumip); in xfs_rtmount_inodes()
1399 xfs_irele(mp->m_rbmip); in xfs_rtmount_inodes()
1405 struct xfs_mount *mp) in xfs_rtunmount_inodes() argument
1407 kmem_free(mp->m_rsum_cache); in xfs_rtunmount_inodes()
1408 if (mp->m_rbmip) in xfs_rtunmount_inodes()
1409 xfs_irele(mp->m_rbmip); in xfs_rtunmount_inodes()
1410 if (mp->m_rsumip) in xfs_rtunmount_inodes()
1411 xfs_irele(mp->m_rsumip); in xfs_rtunmount_inodes()
1423 xfs_mount_t *mp, /* file system mount point */ in xfs_rtpick_extent() argument
1434 ASSERT(xfs_isilocked(mp->m_rbmip, XFS_ILOCK_EXCL)); in xfs_rtpick_extent()
1436 seqp = (uint64_t *)&VFS_I(mp->m_rbmip)->i_atime; in xfs_rtpick_extent()
1437 if (!(mp->m_rbmip->i_diflags & XFS_DIFLAG_NEWRTBM)) { in xfs_rtpick_extent()
1438 mp->m_rbmip->i_diflags |= XFS_DIFLAG_NEWRTBM; in xfs_rtpick_extent()
1446 b = (mp->m_sb.sb_rextents * ((resid << 1) + 1ULL)) >> in xfs_rtpick_extent()
1448 if (b >= mp->m_sb.sb_rextents) in xfs_rtpick_extent()
1449 div64_u64_rem(b, mp->m_sb.sb_rextents, &b); in xfs_rtpick_extent()
1450 if (b + len > mp->m_sb.sb_rextents) in xfs_rtpick_extent()
1451 b = mp->m_sb.sb_rextents - len; in xfs_rtpick_extent()
1454 xfs_trans_log_inode(tp, mp->m_rbmip, XFS_ILOG_CORE); in xfs_rtpick_extent()