• Home
  • Raw
  • Download

Lines Matching refs:mp

63 #define xfs_icsb_balance_counter(mp, a, b)		do { } while (0)  argument
64 #define xfs_icsb_balance_counter_locked(mp, a, b) do { } while (0) argument
65 #define xfs_icsb_modify_counters(mp, a, b, c) do { } while (0) argument
131 xfs_mount_t *mp) in xfs_free_perag() argument
133 if (mp->m_perag) { in xfs_free_perag()
136 for (agno = 0; agno < mp->m_maxagi; agno++) in xfs_free_perag()
137 if (mp->m_perag[agno].pagb_list) in xfs_free_perag()
138 kmem_free(mp->m_perag[agno].pagb_list); in xfs_free_perag()
139 kmem_free(mp->m_perag); in xfs_free_perag()
170 xfs_mount_t *mp, in xfs_mount_validate_sb() argument
192 sbp->sb_logstart == 0 && mp->m_logdev_targp == mp->m_ddev_targp)) { in xfs_mount_validate_sb()
200 sbp->sb_logstart != 0 && mp->m_logdev_targp != mp->m_ddev_targp)) { in xfs_mount_validate_sb()
296 xfs_mount_t *mp, in xfs_initialize_perag() argument
303 xfs_sb_t *sbp = &mp->m_sb; in xfs_initialize_perag()
307 agino = XFS_OFFBNO_TO_AGINO(mp, sbp->sb_agblocks - 1, 0); in xfs_initialize_perag()
308 ino = XFS_AGINO_TO_INO(mp, agcount - 1, agino); in xfs_initialize_perag()
313 if ((mp->m_flags & XFS_MOUNT_SMALL_INUMS) && ino > max_inum) { in xfs_initialize_perag()
314 mp->m_flags |= XFS_MOUNT_32BITINODES; in xfs_initialize_perag()
316 mp->m_flags &= ~XFS_MOUNT_32BITINODES; in xfs_initialize_perag()
320 if (mp->m_flags & XFS_MOUNT_32BITINODES) { in xfs_initialize_perag()
324 if (mp->m_maxicount) { in xfs_initialize_perag()
336 ino = XFS_AGINO_TO_INO(mp, index, agino); in xfs_initialize_perag()
343 pag = &mp->m_perag[index]; in xfs_initialize_perag()
352 pag = &mp->m_perag[index]; in xfs_initialize_perag()
472 xfs_readsb(xfs_mount_t *mp, int flags) in xfs_readsb() argument
479 ASSERT(mp->m_sb_bp == NULL); in xfs_readsb()
480 ASSERT(mp->m_ddev_targp != NULL); in xfs_readsb()
487 sector_size = xfs_getsize_buftarg(mp->m_ddev_targp); in xfs_readsb()
490 bp = xfs_buf_read_flags(mp->m_ddev_targp, XFS_SB_DADDR, in xfs_readsb()
504 xfs_sb_from_disk(&mp->m_sb, XFS_BUF_TO_SBP(bp)); in xfs_readsb()
506 error = xfs_mount_validate_sb(mp, &(mp->m_sb), flags); in xfs_readsb()
515 if (sector_size > mp->m_sb.sb_sectsize) { in xfs_readsb()
518 sector_size, mp->m_sb.sb_sectsize); in xfs_readsb()
527 if (sector_size < mp->m_sb.sb_sectsize) { in xfs_readsb()
530 sector_size = mp->m_sb.sb_sectsize; in xfs_readsb()
531 bp = xfs_buf_read_flags(mp->m_ddev_targp, XFS_SB_DADDR, in xfs_readsb()
543 xfs_icsb_reinit_counters(mp); in xfs_readsb()
545 mp->m_sb_bp = bp; in xfs_readsb()
567 xfs_mount_common(xfs_mount_t *mp, xfs_sb_t *sbp) in xfs_mount_common() argument
569 mp->m_agfrotor = mp->m_agirotor = 0; in xfs_mount_common()
570 spin_lock_init(&mp->m_agirotor_lock); in xfs_mount_common()
571 mp->m_maxagi = mp->m_sb.sb_agcount; in xfs_mount_common()
572 mp->m_blkbit_log = sbp->sb_blocklog + XFS_NBBYLOG; in xfs_mount_common()
573 mp->m_blkbb_log = sbp->sb_blocklog - BBSHIFT; in xfs_mount_common()
574 mp->m_sectbb_log = sbp->sb_sectlog - BBSHIFT; in xfs_mount_common()
575 mp->m_agno_log = xfs_highbit32(sbp->sb_agcount - 1) + 1; in xfs_mount_common()
576 mp->m_agino_log = sbp->sb_inopblog + sbp->sb_agblklog; in xfs_mount_common()
577 mp->m_litino = sbp->sb_inodesize - sizeof(struct xfs_dinode); in xfs_mount_common()
578 mp->m_blockmask = sbp->sb_blocksize - 1; in xfs_mount_common()
579 mp->m_blockwsize = sbp->sb_blocksize >> XFS_WORDLOG; in xfs_mount_common()
580 mp->m_blockwmask = mp->m_blockwsize - 1; in xfs_mount_common()
590 mp->m_attroffset = XFS_LITINO(mp) - in xfs_mount_common()
596 mp->m_attroffset = XFS_BMDR_SPACE_CALC(6 * MINABTPTRS); in xfs_mount_common()
601 ASSERT(mp->m_attroffset < XFS_LITINO(mp)); in xfs_mount_common()
603 mp->m_alloc_mxr[0] = xfs_allocbt_maxrecs(mp, sbp->sb_blocksize, 1); in xfs_mount_common()
604 mp->m_alloc_mxr[1] = xfs_allocbt_maxrecs(mp, sbp->sb_blocksize, 0); in xfs_mount_common()
605 mp->m_alloc_mnr[0] = mp->m_alloc_mxr[0] / 2; in xfs_mount_common()
606 mp->m_alloc_mnr[1] = mp->m_alloc_mxr[1] / 2; in xfs_mount_common()
608 mp->m_inobt_mxr[0] = xfs_inobt_maxrecs(mp, sbp->sb_blocksize, 1); in xfs_mount_common()
609 mp->m_inobt_mxr[1] = xfs_inobt_maxrecs(mp, sbp->sb_blocksize, 0); in xfs_mount_common()
610 mp->m_inobt_mnr[0] = mp->m_inobt_mxr[0] / 2; in xfs_mount_common()
611 mp->m_inobt_mnr[1] = mp->m_inobt_mxr[1] / 2; in xfs_mount_common()
613 mp->m_bmap_dmxr[0] = xfs_bmbt_maxrecs(mp, sbp->sb_blocksize, 1); in xfs_mount_common()
614 mp->m_bmap_dmxr[1] = xfs_bmbt_maxrecs(mp, sbp->sb_blocksize, 0); in xfs_mount_common()
615 mp->m_bmap_dmnr[0] = mp->m_bmap_dmxr[0] / 2; in xfs_mount_common()
616 mp->m_bmap_dmnr[1] = mp->m_bmap_dmxr[1] / 2; in xfs_mount_common()
618 mp->m_bsize = XFS_FSB_TO_BB(mp, 1); in xfs_mount_common()
619 mp->m_ialloc_inos = (int)MAX((__uint16_t)XFS_INODES_PER_CHUNK, in xfs_mount_common()
621 mp->m_ialloc_blks = mp->m_ialloc_inos >> sbp->sb_inopblog; in xfs_mount_common()
633 xfs_initialize_perag_data(xfs_mount_t *mp, xfs_agnumber_t agcount) in xfs_initialize_perag_data() argument
637 xfs_sb_t *sbp = &mp->m_sb; in xfs_initialize_perag_data()
651 error = xfs_alloc_pagf_init(mp, NULL, index, 0); in xfs_initialize_perag_data()
655 error = xfs_ialloc_pagi_init(mp, NULL, index); in xfs_initialize_perag_data()
658 pag = &mp->m_perag[index]; in xfs_initialize_perag_data()
668 spin_lock(&mp->m_sb_lock); in xfs_initialize_perag_data()
672 spin_unlock(&mp->m_sb_lock); in xfs_initialize_perag_data()
675 xfs_icsb_reinit_counters(mp); in xfs_initialize_perag_data()
684 xfs_update_alignment(xfs_mount_t *mp) in xfs_update_alignment() argument
686 xfs_sb_t *sbp = &(mp->m_sb); in xfs_update_alignment()
688 if (mp->m_dalign) { in xfs_update_alignment()
693 if ((BBTOB(mp->m_dalign) & mp->m_blockmask) || in xfs_update_alignment()
694 (BBTOB(mp->m_swidth) & mp->m_blockmask)) { in xfs_update_alignment()
695 if (mp->m_flags & XFS_MOUNT_RETERR) { in xfs_update_alignment()
700 mp->m_dalign = mp->m_swidth = 0; in xfs_update_alignment()
705 mp->m_dalign = XFS_BB_TO_FSBT(mp, mp->m_dalign); in xfs_update_alignment()
706 if (mp->m_dalign && (sbp->sb_agblocks % mp->m_dalign)) { in xfs_update_alignment()
707 if (mp->m_flags & XFS_MOUNT_RETERR) { in xfs_update_alignment()
710 xfs_fs_cmn_err(CE_WARN, mp, in xfs_update_alignment()
712 mp->m_dalign, mp->m_swidth, in xfs_update_alignment()
715 mp->m_dalign = 0; in xfs_update_alignment()
716 mp->m_swidth = 0; in xfs_update_alignment()
717 } else if (mp->m_dalign) { in xfs_update_alignment()
718 mp->m_swidth = XFS_BB_TO_FSBT(mp, mp->m_swidth); in xfs_update_alignment()
720 if (mp->m_flags & XFS_MOUNT_RETERR) { in xfs_update_alignment()
721 xfs_fs_cmn_err(CE_WARN, mp, in xfs_update_alignment()
723 mp->m_dalign, in xfs_update_alignment()
724 mp->m_blockmask +1); in xfs_update_alignment()
727 mp->m_swidth = 0; in xfs_update_alignment()
736 if (sbp->sb_unit != mp->m_dalign) { in xfs_update_alignment()
737 sbp->sb_unit = mp->m_dalign; in xfs_update_alignment()
738 mp->m_update_flags |= XFS_SB_UNIT; in xfs_update_alignment()
740 if (sbp->sb_width != mp->m_swidth) { in xfs_update_alignment()
741 sbp->sb_width = mp->m_swidth; in xfs_update_alignment()
742 mp->m_update_flags |= XFS_SB_WIDTH; in xfs_update_alignment()
745 } else if ((mp->m_flags & XFS_MOUNT_NOALIGN) != XFS_MOUNT_NOALIGN && in xfs_update_alignment()
746 xfs_sb_version_hasdalign(&mp->m_sb)) { in xfs_update_alignment()
747 mp->m_dalign = sbp->sb_unit; in xfs_update_alignment()
748 mp->m_swidth = sbp->sb_width; in xfs_update_alignment()
758 xfs_set_maxicount(xfs_mount_t *mp) in xfs_set_maxicount() argument
760 xfs_sb_t *sbp = &(mp->m_sb); in xfs_set_maxicount()
770 do_div(icount, mp->m_ialloc_blks); in xfs_set_maxicount()
771 mp->m_maxicount = (icount * mp->m_ialloc_blks) << in xfs_set_maxicount()
774 mp->m_maxicount = 0; in xfs_set_maxicount()
785 xfs_set_rw_sizes(xfs_mount_t *mp) in xfs_set_rw_sizes() argument
787 xfs_sb_t *sbp = &(mp->m_sb); in xfs_set_rw_sizes()
790 if (!(mp->m_flags & XFS_MOUNT_DFLT_IOSIZE)) { in xfs_set_rw_sizes()
791 if (mp->m_flags & XFS_MOUNT_WSYNC) { in xfs_set_rw_sizes()
799 readio_log = mp->m_readio_log; in xfs_set_rw_sizes()
800 writeio_log = mp->m_writeio_log; in xfs_set_rw_sizes()
804 mp->m_readio_log = sbp->sb_blocklog; in xfs_set_rw_sizes()
806 mp->m_readio_log = readio_log; in xfs_set_rw_sizes()
808 mp->m_readio_blocks = 1 << (mp->m_readio_log - sbp->sb_blocklog); in xfs_set_rw_sizes()
810 mp->m_writeio_log = sbp->sb_blocklog; in xfs_set_rw_sizes()
812 mp->m_writeio_log = writeio_log; in xfs_set_rw_sizes()
814 mp->m_writeio_blocks = 1 << (mp->m_writeio_log - sbp->sb_blocklog); in xfs_set_rw_sizes()
821 xfs_set_inoalignment(xfs_mount_t *mp) in xfs_set_inoalignment() argument
823 if (xfs_sb_version_hasalign(&mp->m_sb) && in xfs_set_inoalignment()
824 mp->m_sb.sb_inoalignmt >= in xfs_set_inoalignment()
825 XFS_B_TO_FSBT(mp, mp->m_inode_cluster_size)) in xfs_set_inoalignment()
826 mp->m_inoalign_mask = mp->m_sb.sb_inoalignmt - 1; in xfs_set_inoalignment()
828 mp->m_inoalign_mask = 0; in xfs_set_inoalignment()
833 if (mp->m_dalign && mp->m_inoalign_mask && in xfs_set_inoalignment()
834 !(mp->m_dalign & mp->m_inoalign_mask)) in xfs_set_inoalignment()
835 mp->m_sinoalign = mp->m_dalign; in xfs_set_inoalignment()
837 mp->m_sinoalign = 0; in xfs_set_inoalignment()
844 xfs_check_sizes(xfs_mount_t *mp) in xfs_check_sizes() argument
850 d = (xfs_daddr_t)XFS_FSB_TO_BB(mp, mp->m_sb.sb_dblocks); in xfs_check_sizes()
851 if (XFS_BB_TO_FSB(mp, d) != mp->m_sb.sb_dblocks) { in xfs_check_sizes()
855 error = xfs_read_buf(mp, mp->m_ddev_targp, in xfs_check_sizes()
856 d - XFS_FSS_TO_BB(mp, 1), in xfs_check_sizes()
857 XFS_FSS_TO_BB(mp, 1), 0, &bp); in xfs_check_sizes()
867 if (mp->m_logdev_targp != mp->m_ddev_targp) { in xfs_check_sizes()
868 d = (xfs_daddr_t)XFS_FSB_TO_BB(mp, mp->m_sb.sb_logblocks); in xfs_check_sizes()
869 if (XFS_BB_TO_FSB(mp, d) != mp->m_sb.sb_logblocks) { in xfs_check_sizes()
873 error = xfs_read_buf(mp, mp->m_logdev_targp, in xfs_check_sizes()
874 d - XFS_FSB_TO_BB(mp, 1), in xfs_check_sizes()
875 XFS_FSB_TO_BB(mp, 1), 0, &bp); in xfs_check_sizes()
902 xfs_mount_t *mp) in xfs_mountfs() argument
904 xfs_sb_t *sbp = &(mp->m_sb); in xfs_mountfs()
911 xfs_mount_common(mp, sbp); in xfs_mountfs()
934 mp->m_update_flags |= XFS_SB_FEATURES2 | XFS_SB_BAD_FEATURES2; in xfs_mountfs()
940 if (xfs_sb_version_hasattr2(&mp->m_sb) && in xfs_mountfs()
941 !(mp->m_flags & XFS_MOUNT_NOATTR2)) in xfs_mountfs()
942 mp->m_flags |= XFS_MOUNT_ATTR2; in xfs_mountfs()
945 if (xfs_sb_version_hasattr2(&mp->m_sb) && in xfs_mountfs()
946 (mp->m_flags & XFS_MOUNT_NOATTR2)) { in xfs_mountfs()
947 xfs_sb_version_removeattr2(&mp->m_sb); in xfs_mountfs()
948 mp->m_update_flags |= XFS_SB_FEATURES2; in xfs_mountfs()
952 mp->m_update_flags |= XFS_SB_VERSIONNUM; in xfs_mountfs()
961 error = xfs_update_alignment(mp); in xfs_mountfs()
965 xfs_alloc_compute_maxlevels(mp); in xfs_mountfs()
966 xfs_bmap_compute_maxlevels(mp, XFS_DATA_FORK); in xfs_mountfs()
967 xfs_bmap_compute_maxlevels(mp, XFS_ATTR_FORK); in xfs_mountfs()
968 xfs_ialloc_compute_maxlevels(mp); in xfs_mountfs()
970 xfs_set_maxicount(mp); in xfs_mountfs()
972 mp->m_maxioffset = xfs_max_file_offset(sbp->sb_blocklog); in xfs_mountfs()
980 if ((mp->m_flags & XFS_MOUNT_NOUUID) == 0) { in xfs_mountfs()
981 if (xfs_uuid_mount(mp)) { in xfs_mountfs()
991 xfs_set_rw_sizes(mp); in xfs_mountfs()
998 mp->m_inode_cluster_size = XFS_INODE_BIG_CLUSTER_SIZE; in xfs_mountfs()
1003 xfs_set_inoalignment(mp); in xfs_mountfs()
1008 error = xfs_check_sizes(mp); in xfs_mountfs()
1015 error = xfs_rtmount_init(mp); in xfs_mountfs()
1025 uuid_getnodeuniq(&sbp->sb_uuid, mp->m_fixedfsid); in xfs_mountfs()
1027 mp->m_dmevmask = 0; /* not persistent; set after each mount */ in xfs_mountfs()
1029 xfs_dir_mount(mp); in xfs_mountfs()
1034 mp->m_attr_magicpct = (mp->m_sb.sb_blocksize * 37) / 100; in xfs_mountfs()
1039 xfs_trans_init(mp); in xfs_mountfs()
1044 init_rwsem(&mp->m_peraglock); in xfs_mountfs()
1045 mp->m_perag = kmem_zalloc(sbp->sb_agcount * sizeof(xfs_perag_t), in xfs_mountfs()
1047 if (!mp->m_perag) in xfs_mountfs()
1050 mp->m_maxagi = xfs_initialize_perag(mp, sbp->sb_agcount); in xfs_mountfs()
1056 error = xfs_log_mount(mp, mp->m_logdev_targp, in xfs_mountfs()
1057 XFS_FSB_TO_DADDR(mp, sbp->sb_logstart), in xfs_mountfs()
1058 XFS_FSB_TO_BB(mp, sbp->sb_logblocks)); in xfs_mountfs()
1065 XFS_ERROR_REPORT("xfs_mountfs_int(1)", XFS_ERRLEVEL_LOW, mp); in xfs_mountfs()
1090 if (xfs_sb_version_haslazysbcount(&mp->m_sb) && in xfs_mountfs()
1091 !XFS_LAST_UNMOUNT_WAS_CLEAN(mp) && in xfs_mountfs()
1092 !mp->m_sb.sb_inprogress) { in xfs_mountfs()
1093 error = xfs_initialize_perag_data(mp, sbp->sb_agcount); in xfs_mountfs()
1102 error = xfs_iget(mp, NULL, sbp->sb_rootino, 0, XFS_ILOCK_EXCL, &rip, 0); in xfs_mountfs()
1113 XFS_BUFTARG_NAME(mp->m_ddev_targp), in xfs_mountfs()
1117 mp); in xfs_mountfs()
1121 mp->m_rootip = rip; /* save it */ in xfs_mountfs()
1128 error = xfs_rtmount_inodes(mp); in xfs_mountfs()
1142 if (mp->m_update_flags && !(mp->m_flags & XFS_MOUNT_RDONLY)) { in xfs_mountfs()
1143 error = xfs_mount_log_sb(mp, mp->m_update_flags); in xfs_mountfs()
1153 error = XFS_QM_INIT(mp, &quotamount, &quotaflags); in xfs_mountfs()
1162 error = xfs_log_mount_finish(mp); in xfs_mountfs()
1171 error = XFS_QM_MOUNT(mp, quotamount, quotaflags); in xfs_mountfs()
1187 resblks = mp->m_sb.sb_dblocks; in xfs_mountfs()
1190 error = xfs_reserve_blocks(mp, &resblks, NULL); in xfs_mountfs()
1203 xfs_log_unmount_dealloc(mp); in xfs_mountfs()
1205 xfs_free_perag(mp); in xfs_mountfs()
1208 uuid_table_remove(&mp->m_sb.sb_uuid); in xfs_mountfs()
1218 struct xfs_mount *mp) in xfs_unmountfs() argument
1227 XFS_QM_UNMOUNT(mp); in xfs_unmountfs()
1229 if (mp->m_rbmip) in xfs_unmountfs()
1230 IRELE(mp->m_rbmip); in xfs_unmountfs()
1231 if (mp->m_rsumip) in xfs_unmountfs()
1232 IRELE(mp->m_rsumip); in xfs_unmountfs()
1233 IRELE(mp->m_rootip); in xfs_unmountfs()
1245 xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE | XFS_LOG_SYNC); in xfs_unmountfs()
1246 xfs_reclaim_inodes(mp, 0, XFS_IFLUSH_ASYNC); in xfs_unmountfs()
1248 XFS_QM_DQPURGEALL(mp, XFS_QMOPT_QUOTALL | XFS_QMOPT_UMOUNTING); in xfs_unmountfs()
1250 if (mp->m_quotainfo) in xfs_unmountfs()
1251 XFS_QM_DONE(mp); in xfs_unmountfs()
1258 xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE | XFS_LOG_SYNC); in xfs_unmountfs()
1260 xfs_binval(mp->m_ddev_targp); in xfs_unmountfs()
1261 if (mp->m_rtdev_targp) { in xfs_unmountfs()
1262 xfs_binval(mp->m_rtdev_targp); in xfs_unmountfs()
1280 error = xfs_reserve_blocks(mp, &resblks, NULL); in xfs_unmountfs()
1285 error = xfs_log_sbcount(mp, 1); in xfs_unmountfs()
1289 xfs_unmountfs_writesb(mp); in xfs_unmountfs()
1290 xfs_unmountfs_wait(mp); /* wait for async bufs */ in xfs_unmountfs()
1291 xfs_log_unmount(mp); /* Done! No more fs ops. */ in xfs_unmountfs()
1293 if ((mp->m_flags & XFS_MOUNT_NOUUID) == 0) in xfs_unmountfs()
1294 uuid_table_remove(&mp->m_sb.sb_uuid); in xfs_unmountfs()
1297 xfs_errortag_clearall(mp, 0); in xfs_unmountfs()
1299 xfs_free_perag(mp); in xfs_unmountfs()
1303 xfs_unmountfs_wait(xfs_mount_t *mp) in xfs_unmountfs_wait() argument
1305 if (mp->m_logdev_targp != mp->m_ddev_targp) in xfs_unmountfs_wait()
1306 xfs_wait_buftarg(mp->m_logdev_targp); in xfs_unmountfs_wait()
1307 if (mp->m_rtdev_targp) in xfs_unmountfs_wait()
1308 xfs_wait_buftarg(mp->m_rtdev_targp); in xfs_unmountfs_wait()
1309 xfs_wait_buftarg(mp->m_ddev_targp); in xfs_unmountfs_wait()
1313 xfs_fs_writable(xfs_mount_t *mp) in xfs_fs_writable() argument
1315 return !(xfs_test_for_freeze(mp) || XFS_FORCED_SHUTDOWN(mp) || in xfs_fs_writable()
1316 (mp->m_flags & XFS_MOUNT_RDONLY)); in xfs_fs_writable()
1332 xfs_mount_t *mp, in xfs_log_sbcount() argument
1338 if (!xfs_fs_writable(mp)) in xfs_log_sbcount()
1341 xfs_icsb_sync_counters(mp, 0); in xfs_log_sbcount()
1347 if (!xfs_sb_version_haslazysbcount(&mp->m_sb)) in xfs_log_sbcount()
1350 tp = _xfs_trans_alloc(mp, XFS_TRANS_SB_COUNT); in xfs_log_sbcount()
1351 error = xfs_trans_reserve(tp, 0, mp->m_sb.sb_sectsize + 128, 0, 0, in xfs_log_sbcount()
1366 xfs_unmountfs_writesb(xfs_mount_t *mp) in xfs_unmountfs_writesb() argument
1375 if (!((mp->m_flags & XFS_MOUNT_RDONLY) || in xfs_unmountfs_writesb()
1376 XFS_FORCED_SHUTDOWN(mp))) { in xfs_unmountfs_writesb()
1378 sbp = xfs_getsb(mp, 0); in xfs_unmountfs_writesb()
1385 ASSERT(XFS_BUF_TARGET(sbp) == mp->m_ddev_targp); in xfs_unmountfs_writesb()
1386 xfsbdstrat(mp, sbp); in xfs_unmountfs_writesb()
1390 mp, sbp, XFS_BUF_ADDR(sbp)); in xfs_unmountfs_writesb()
1409 xfs_mount_t *mp; in xfs_mod_sb() local
1415 mp = tp->t_mountp; in xfs_mod_sb()
1416 bp = xfs_trans_getsb(tp, mp, 0); in xfs_mod_sb()
1422 xfs_sb_to_disk(XFS_BUF_TO_SBP(bp), &mp->m_sb, fields); in xfs_mod_sb()
1449 xfs_mount_t *mp, in xfs_mod_incore_sb_unlocked() argument
1466 lcounter = (long long)mp->m_sb.sb_icount; in xfs_mod_incore_sb_unlocked()
1472 mp->m_sb.sb_icount = lcounter; in xfs_mod_incore_sb_unlocked()
1475 lcounter = (long long)mp->m_sb.sb_ifree; in xfs_mod_incore_sb_unlocked()
1481 mp->m_sb.sb_ifree = lcounter; in xfs_mod_incore_sb_unlocked()
1485 mp->m_sb.sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp); in xfs_mod_incore_sb_unlocked()
1486 res_used = (long long)(mp->m_resblks - mp->m_resblks_avail); in xfs_mod_incore_sb_unlocked()
1490 mp->m_resblks_avail += delta; in xfs_mod_incore_sb_unlocked()
1493 mp->m_resblks_avail = mp->m_resblks; in xfs_mod_incore_sb_unlocked()
1507 lcounter = (long long)mp->m_resblks_avail + delta; in xfs_mod_incore_sb_unlocked()
1511 mp->m_resblks_avail = lcounter; in xfs_mod_incore_sb_unlocked()
1519 mp->m_sb.sb_fdblocks = lcounter + XFS_ALLOC_SET_ASIDE(mp); in xfs_mod_incore_sb_unlocked()
1522 lcounter = (long long)mp->m_sb.sb_frextents; in xfs_mod_incore_sb_unlocked()
1527 mp->m_sb.sb_frextents = lcounter; in xfs_mod_incore_sb_unlocked()
1530 lcounter = (long long)mp->m_sb.sb_dblocks; in xfs_mod_incore_sb_unlocked()
1536 mp->m_sb.sb_dblocks = lcounter; in xfs_mod_incore_sb_unlocked()
1539 scounter = mp->m_sb.sb_agcount; in xfs_mod_incore_sb_unlocked()
1545 mp->m_sb.sb_agcount = scounter; in xfs_mod_incore_sb_unlocked()
1548 scounter = mp->m_sb.sb_imax_pct; in xfs_mod_incore_sb_unlocked()
1554 mp->m_sb.sb_imax_pct = scounter; in xfs_mod_incore_sb_unlocked()
1557 scounter = mp->m_sb.sb_rextsize; in xfs_mod_incore_sb_unlocked()
1563 mp->m_sb.sb_rextsize = scounter; in xfs_mod_incore_sb_unlocked()
1566 scounter = mp->m_sb.sb_rbmblocks; in xfs_mod_incore_sb_unlocked()
1572 mp->m_sb.sb_rbmblocks = scounter; in xfs_mod_incore_sb_unlocked()
1575 lcounter = (long long)mp->m_sb.sb_rblocks; in xfs_mod_incore_sb_unlocked()
1581 mp->m_sb.sb_rblocks = lcounter; in xfs_mod_incore_sb_unlocked()
1584 lcounter = (long long)mp->m_sb.sb_rextents; in xfs_mod_incore_sb_unlocked()
1590 mp->m_sb.sb_rextents = lcounter; in xfs_mod_incore_sb_unlocked()
1593 scounter = mp->m_sb.sb_rextslog; in xfs_mod_incore_sb_unlocked()
1599 mp->m_sb.sb_rextslog = scounter; in xfs_mod_incore_sb_unlocked()
1615 xfs_mount_t *mp, in xfs_mod_incore_sb() argument
1628 if (!(mp->m_flags & XFS_MOUNT_NO_PERCPU_SB)) { in xfs_mod_incore_sb()
1629 status = xfs_icsb_modify_counters(mp, field, in xfs_mod_incore_sb()
1636 spin_lock(&mp->m_sb_lock); in xfs_mod_incore_sb()
1637 status = xfs_mod_incore_sb_unlocked(mp, field, delta, rsvd); in xfs_mod_incore_sb()
1638 spin_unlock(&mp->m_sb_lock); in xfs_mod_incore_sb()
1657 xfs_mod_incore_sb_batch(xfs_mount_t *mp, xfs_mod_sb_t *msb, uint nmsb, int rsvd) in xfs_mod_incore_sb_batch() argument
1669 spin_lock(&mp->m_sb_lock); in xfs_mod_incore_sb_batch()
1682 if (!(mp->m_flags & XFS_MOUNT_NO_PERCPU_SB)) { in xfs_mod_incore_sb_batch()
1683 spin_unlock(&mp->m_sb_lock); in xfs_mod_incore_sb_batch()
1684 status = xfs_icsb_modify_counters(mp, in xfs_mod_incore_sb_batch()
1687 spin_lock(&mp->m_sb_lock); in xfs_mod_incore_sb_batch()
1693 status = xfs_mod_incore_sb_unlocked(mp, in xfs_mod_incore_sb_batch()
1720 if (!(mp->m_flags & XFS_MOUNT_NO_PERCPU_SB)) { in xfs_mod_incore_sb_batch()
1721 spin_unlock(&mp->m_sb_lock); in xfs_mod_incore_sb_batch()
1722 status = xfs_icsb_modify_counters(mp, in xfs_mod_incore_sb_batch()
1726 spin_lock(&mp->m_sb_lock); in xfs_mod_incore_sb_batch()
1732 status = xfs_mod_incore_sb_unlocked(mp, in xfs_mod_incore_sb_batch()
1742 spin_unlock(&mp->m_sb_lock); in xfs_mod_incore_sb_batch()
1757 xfs_mount_t *mp, in xfs_getsb() argument
1762 ASSERT(mp->m_sb_bp != NULL); in xfs_getsb()
1763 bp = mp->m_sb_bp; in xfs_getsb()
1781 xfs_mount_t *mp) in xfs_freesb() argument
1789 bp = xfs_getsb(mp, 0); in xfs_freesb()
1792 mp->m_sb_bp = NULL; in xfs_freesb()
1801 xfs_mount_t *mp) in xfs_uuid_mount() argument
1803 if (uuid_is_nil(&mp->m_sb.sb_uuid)) { in xfs_uuid_mount()
1806 mp->m_fsname); in xfs_uuid_mount()
1809 if (!uuid_table_insert(&mp->m_sb.sb_uuid)) { in xfs_uuid_mount()
1812 mp->m_fsname); in xfs_uuid_mount()
1825 xfs_mount_t *mp, in xfs_mount_log_sb() argument
1835 tp = xfs_trans_alloc(mp, XFS_TRANS_SB_UNIT); in xfs_mount_log_sb()
1836 error = xfs_trans_reserve(tp, 0, mp->m_sb.sb_sectsize + 128, 0, 0, in xfs_mount_log_sb()
1917 xfs_mount_t *mp; in xfs_icsb_cpu_notify() local
1919 mp = (xfs_mount_t *)container_of(nfb, xfs_mount_t, m_icsb_notifier); in xfs_icsb_cpu_notify()
1921 per_cpu_ptr(mp->m_sb_cnts, (unsigned long)hcpu); in xfs_icsb_cpu_notify()
1931 xfs_icsb_lock(mp); in xfs_icsb_cpu_notify()
1932 xfs_icsb_balance_counter(mp, XFS_SBS_ICOUNT, 0); in xfs_icsb_cpu_notify()
1933 xfs_icsb_balance_counter(mp, XFS_SBS_IFREE, 0); in xfs_icsb_cpu_notify()
1934 xfs_icsb_balance_counter(mp, XFS_SBS_FDBLOCKS, 0); in xfs_icsb_cpu_notify()
1935 xfs_icsb_unlock(mp); in xfs_icsb_cpu_notify()
1942 xfs_icsb_lock(mp); in xfs_icsb_cpu_notify()
1943 spin_lock(&mp->m_sb_lock); in xfs_icsb_cpu_notify()
1944 xfs_icsb_disable_counter(mp, XFS_SBS_ICOUNT); in xfs_icsb_cpu_notify()
1945 xfs_icsb_disable_counter(mp, XFS_SBS_IFREE); in xfs_icsb_cpu_notify()
1946 xfs_icsb_disable_counter(mp, XFS_SBS_FDBLOCKS); in xfs_icsb_cpu_notify()
1948 mp->m_sb.sb_icount += cntp->icsb_icount; in xfs_icsb_cpu_notify()
1949 mp->m_sb.sb_ifree += cntp->icsb_ifree; in xfs_icsb_cpu_notify()
1950 mp->m_sb.sb_fdblocks += cntp->icsb_fdblocks; in xfs_icsb_cpu_notify()
1954 xfs_icsb_balance_counter_locked(mp, XFS_SBS_ICOUNT, 0); in xfs_icsb_cpu_notify()
1955 xfs_icsb_balance_counter_locked(mp, XFS_SBS_IFREE, 0); in xfs_icsb_cpu_notify()
1956 xfs_icsb_balance_counter_locked(mp, XFS_SBS_FDBLOCKS, 0); in xfs_icsb_cpu_notify()
1957 spin_unlock(&mp->m_sb_lock); in xfs_icsb_cpu_notify()
1958 xfs_icsb_unlock(mp); in xfs_icsb_cpu_notify()
1968 xfs_mount_t *mp) in xfs_icsb_init_counters() argument
1973 mp->m_sb_cnts = alloc_percpu(xfs_icsb_cnts_t); in xfs_icsb_init_counters()
1974 if (mp->m_sb_cnts == NULL) in xfs_icsb_init_counters()
1978 mp->m_icsb_notifier.notifier_call = xfs_icsb_cpu_notify; in xfs_icsb_init_counters()
1979 mp->m_icsb_notifier.priority = 0; in xfs_icsb_init_counters()
1980 register_hotcpu_notifier(&mp->m_icsb_notifier); in xfs_icsb_init_counters()
1984 cntp = (xfs_icsb_cnts_t *)per_cpu_ptr(mp->m_sb_cnts, i); in xfs_icsb_init_counters()
1988 mutex_init(&mp->m_icsb_mutex); in xfs_icsb_init_counters()
1994 mp->m_icsb_counters = -1; in xfs_icsb_init_counters()
2000 xfs_mount_t *mp) in xfs_icsb_reinit_counters() argument
2002 xfs_icsb_lock(mp); in xfs_icsb_reinit_counters()
2007 mp->m_icsb_counters = -1; in xfs_icsb_reinit_counters()
2008 xfs_icsb_balance_counter(mp, XFS_SBS_ICOUNT, 0); in xfs_icsb_reinit_counters()
2009 xfs_icsb_balance_counter(mp, XFS_SBS_IFREE, 0); in xfs_icsb_reinit_counters()
2010 xfs_icsb_balance_counter(mp, XFS_SBS_FDBLOCKS, 0); in xfs_icsb_reinit_counters()
2011 xfs_icsb_unlock(mp); in xfs_icsb_reinit_counters()
2016 xfs_mount_t *mp) in xfs_icsb_destroy_counters() argument
2018 if (mp->m_sb_cnts) { in xfs_icsb_destroy_counters()
2019 unregister_hotcpu_notifier(&mp->m_icsb_notifier); in xfs_icsb_destroy_counters()
2020 free_percpu(mp->m_sb_cnts); in xfs_icsb_destroy_counters()
2022 mutex_destroy(&mp->m_icsb_mutex); in xfs_icsb_destroy_counters()
2044 xfs_mount_t *mp) in xfs_icsb_lock_all_counters() argument
2050 cntp = (xfs_icsb_cnts_t *)per_cpu_ptr(mp->m_sb_cnts, i); in xfs_icsb_lock_all_counters()
2057 xfs_mount_t *mp) in xfs_icsb_unlock_all_counters() argument
2063 cntp = (xfs_icsb_cnts_t *)per_cpu_ptr(mp->m_sb_cnts, i); in xfs_icsb_unlock_all_counters()
2070 xfs_mount_t *mp, in xfs_icsb_count() argument
2080 xfs_icsb_lock_all_counters(mp); in xfs_icsb_count()
2083 cntp = (xfs_icsb_cnts_t *)per_cpu_ptr(mp->m_sb_cnts, i); in xfs_icsb_count()
2090 xfs_icsb_unlock_all_counters(mp); in xfs_icsb_count()
2095 xfs_mount_t *mp, in xfs_icsb_counter_disabled() argument
2099 return test_bit(field, &mp->m_icsb_counters); in xfs_icsb_counter_disabled()
2104 xfs_mount_t *mp, in xfs_icsb_disable_counter() argument
2119 if (xfs_icsb_counter_disabled(mp, field)) in xfs_icsb_disable_counter()
2122 xfs_icsb_lock_all_counters(mp); in xfs_icsb_disable_counter()
2123 if (!test_and_set_bit(field, &mp->m_icsb_counters)) { in xfs_icsb_disable_counter()
2126 xfs_icsb_count(mp, &cnt, XFS_ICSB_LAZY_COUNT); in xfs_icsb_disable_counter()
2129 mp->m_sb.sb_icount = cnt.icsb_icount; in xfs_icsb_disable_counter()
2132 mp->m_sb.sb_ifree = cnt.icsb_ifree; in xfs_icsb_disable_counter()
2135 mp->m_sb.sb_fdblocks = cnt.icsb_fdblocks; in xfs_icsb_disable_counter()
2142 xfs_icsb_unlock_all_counters(mp); in xfs_icsb_disable_counter()
2147 xfs_mount_t *mp, in xfs_icsb_enable_counter() argument
2157 xfs_icsb_lock_all_counters(mp); in xfs_icsb_enable_counter()
2159 cntp = per_cpu_ptr(mp->m_sb_cnts, i); in xfs_icsb_enable_counter()
2176 clear_bit(field, &mp->m_icsb_counters); in xfs_icsb_enable_counter()
2177 xfs_icsb_unlock_all_counters(mp); in xfs_icsb_enable_counter()
2182 xfs_mount_t *mp, in xfs_icsb_sync_counters_locked() argument
2187 xfs_icsb_count(mp, &cnt, flags); in xfs_icsb_sync_counters_locked()
2189 if (!xfs_icsb_counter_disabled(mp, XFS_SBS_ICOUNT)) in xfs_icsb_sync_counters_locked()
2190 mp->m_sb.sb_icount = cnt.icsb_icount; in xfs_icsb_sync_counters_locked()
2191 if (!xfs_icsb_counter_disabled(mp, XFS_SBS_IFREE)) in xfs_icsb_sync_counters_locked()
2192 mp->m_sb.sb_ifree = cnt.icsb_ifree; in xfs_icsb_sync_counters_locked()
2193 if (!xfs_icsb_counter_disabled(mp, XFS_SBS_FDBLOCKS)) in xfs_icsb_sync_counters_locked()
2194 mp->m_sb.sb_fdblocks = cnt.icsb_fdblocks; in xfs_icsb_sync_counters_locked()
2202 xfs_mount_t *mp, in xfs_icsb_sync_counters() argument
2205 spin_lock(&mp->m_sb_lock); in xfs_icsb_sync_counters()
2206 xfs_icsb_sync_counters_locked(mp, flags); in xfs_icsb_sync_counters()
2207 spin_unlock(&mp->m_sb_lock); in xfs_icsb_sync_counters()
2227 #define XFS_ICSB_FDBLK_CNTR_REENABLE(mp) \ argument
2228 (uint64_t)(512 + XFS_ALLOC_SET_ASIDE(mp))
2231 xfs_mount_t *mp, in xfs_icsb_balance_counter_locked() argument
2240 xfs_icsb_disable_counter(mp, field); in xfs_icsb_balance_counter_locked()
2245 count = mp->m_sb.sb_icount; in xfs_icsb_balance_counter_locked()
2251 count = mp->m_sb.sb_ifree; in xfs_icsb_balance_counter_locked()
2257 count = mp->m_sb.sb_fdblocks; in xfs_icsb_balance_counter_locked()
2259 if (count < max(min, XFS_ICSB_FDBLK_CNTR_REENABLE(mp))) in xfs_icsb_balance_counter_locked()
2268 xfs_icsb_enable_counter(mp, field, count, resid); in xfs_icsb_balance_counter_locked()
2273 xfs_mount_t *mp, in xfs_icsb_balance_counter() argument
2277 spin_lock(&mp->m_sb_lock); in xfs_icsb_balance_counter()
2278 xfs_icsb_balance_counter_locked(mp, fields, min_per_cpu); in xfs_icsb_balance_counter()
2279 spin_unlock(&mp->m_sb_lock); in xfs_icsb_balance_counter()
2284 xfs_mount_t *mp, in xfs_icsb_modify_counters() argument
2296 icsbp = (xfs_icsb_cnts_t *)per_cpu_ptr(mp->m_sb_cnts, cpu); in xfs_icsb_modify_counters()
2301 if (unlikely(xfs_icsb_counter_disabled(mp, field))) in xfs_icsb_modify_counters()
2304 if (unlikely(xfs_icsb_counter_disabled(mp, field))) { in xfs_icsb_modify_counters()
2327 BUG_ON((mp->m_resblks - mp->m_resblks_avail) != 0); in xfs_icsb_modify_counters()
2329 lcounter = icsbp->icsb_fdblocks - XFS_ALLOC_SET_ASIDE(mp); in xfs_icsb_modify_counters()
2333 icsbp->icsb_fdblocks = lcounter + XFS_ALLOC_SET_ASIDE(mp); in xfs_icsb_modify_counters()
2351 xfs_icsb_lock(mp); in xfs_icsb_modify_counters()
2359 if (!(xfs_icsb_counter_disabled(mp, field))) { in xfs_icsb_modify_counters()
2360 xfs_icsb_unlock(mp); in xfs_icsb_modify_counters()
2375 spin_lock(&mp->m_sb_lock); in xfs_icsb_modify_counters()
2376 ret = xfs_mod_incore_sb_unlocked(mp, field, delta, rsvd); in xfs_icsb_modify_counters()
2377 spin_unlock(&mp->m_sb_lock); in xfs_icsb_modify_counters()
2386 xfs_icsb_balance_counter(mp, field, 0); in xfs_icsb_modify_counters()
2387 xfs_icsb_unlock(mp); in xfs_icsb_modify_counters()
2400 xfs_icsb_lock(mp); in xfs_icsb_modify_counters()
2410 xfs_icsb_balance_counter(mp, field, delta); in xfs_icsb_modify_counters()
2411 xfs_icsb_unlock(mp); in xfs_icsb_modify_counters()