Lines Matching refs:mp

58 	struct xfs_mount	*mp,
63 mp->m_flags &= ~(XFS_MOUNT_DAX_ALWAYS | XFS_MOUNT_DAX_NEVER);
66 mp->m_flags |= XFS_MOUNT_DAX_ALWAYS;
67 mp->m_flags &= ~XFS_MOUNT_DAX_NEVER;
70 mp->m_flags |= XFS_MOUNT_DAX_NEVER;
71 mp->m_flags &= ~XFS_MOUNT_DAX_ALWAYS;
170 struct xfs_mount *mp = XFS_M(root->d_sb);
174 if (mp->m_flags & xfs_infop->flag)
179 (mp->m_flags & XFS_MOUNT_SMALL_INUMS) ? 32 : 64);
181 if (mp->m_flags & XFS_MOUNT_ALLOCSIZE)
183 (1 << mp->m_allocsize_log) >> 10);
185 if (mp->m_logbufs > 0)
186 seq_printf(m, ",logbufs=%d", mp->m_logbufs);
187 if (mp->m_logbsize > 0)
188 seq_printf(m, ",logbsize=%dk", mp->m_logbsize >> 10);
190 if (mp->m_logname)
191 seq_show_option(m, "logdev", mp->m_logname);
192 if (mp->m_rtname)
193 seq_show_option(m, "rtdev", mp->m_rtname);
195 if (mp->m_dalign > 0)
197 (int)XFS_FSB_TO_BB(mp, mp->m_dalign));
198 if (mp->m_swidth > 0)
200 (int)XFS_FSB_TO_BB(mp, mp->m_swidth));
202 if (mp->m_qflags & XFS_UQUOTA_ACCT) {
203 if (mp->m_qflags & XFS_UQUOTA_ENFD)
209 if (mp->m_qflags & XFS_PQUOTA_ACCT) {
210 if (mp->m_qflags & XFS_PQUOTA_ENFD)
215 if (mp->m_qflags & XFS_GQUOTA_ACCT) {
216 if (mp->m_qflags & XFS_GQUOTA_ENFD)
222 if (!(mp->m_qflags & XFS_ALL_QUOTA_ACCT))
238 * because in the growfs case, mp->m_sb.sb_agcount is not yet updated
245 struct xfs_mount *mp,
250 xfs_sb_t *sbp = &mp->m_sb;
259 if (M_IGEO(mp)->maxicount) {
272 agino = XFS_AGB_TO_AGINO(mp, sbp->sb_agblocks - 1);
273 ino = XFS_AGINO_TO_INO(mp, agcount - 1, agino);
280 if ((mp->m_flags & XFS_MOUNT_SMALL_INUMS) && ino > XFS_MAXINUMBER_32)
281 mp->m_flags |= XFS_MOUNT_32BITINODES;
283 mp->m_flags &= ~XFS_MOUNT_32BITINODES;
288 ino = XFS_AGINO_TO_INO(mp, index, agino);
290 pag = xfs_perag_get(mp, index);
292 if (mp->m_flags & XFS_MOUNT_32BITINODES) {
312 return (mp->m_flags & XFS_MOUNT_32BITINODES) ? maxagi : agcount;
317 xfs_mount_t *mp,
324 mp);
327 xfs_warn(mp, "Invalid device [%s], error=%d", name, error);
350 struct xfs_mount *mp)
352 struct dax_device *dax_ddev = mp->m_ddev_targp->bt_daxdev;
354 if (mp->m_logdev_targp && mp->m_logdev_targp != mp->m_ddev_targp) {
355 struct block_device *logdev = mp->m_logdev_targp->bt_bdev;
356 struct dax_device *dax_logdev = mp->m_logdev_targp->bt_daxdev;
358 xfs_free_buftarg(mp->m_logdev_targp);
362 if (mp->m_rtdev_targp) {
363 struct block_device *rtdev = mp->m_rtdev_targp->bt_bdev;
364 struct dax_device *dax_rtdev = mp->m_rtdev_targp->bt_daxdev;
366 xfs_free_buftarg(mp->m_rtdev_targp);
370 xfs_free_buftarg(mp->m_ddev_targp);
386 struct xfs_mount *mp)
388 struct block_device *ddev = mp->m_super->s_bdev;
397 if (mp->m_logname) {
398 error = xfs_blkdev_get(mp, mp->m_logname, &logdev);
404 if (mp->m_rtname) {
405 error = xfs_blkdev_get(mp, mp->m_rtname, &rtdev);
410 xfs_warn(mp,
422 mp->m_ddev_targp = xfs_alloc_buftarg(mp, ddev, dax_ddev);
423 if (!mp->m_ddev_targp)
427 mp->m_rtdev_targp = xfs_alloc_buftarg(mp, rtdev, dax_rtdev);
428 if (!mp->m_rtdev_targp)
433 mp->m_logdev_targp = xfs_alloc_buftarg(mp, logdev, dax_logdev);
434 if (!mp->m_logdev_targp)
437 mp->m_logdev_targp = mp->m_ddev_targp;
443 if (mp->m_rtdev_targp)
444 xfs_free_buftarg(mp->m_rtdev_targp);
446 xfs_free_buftarg(mp->m_ddev_targp);
465 struct xfs_mount *mp)
469 error = xfs_setsize_buftarg(mp->m_ddev_targp, mp->m_sb.sb_sectsize);
473 if (mp->m_logdev_targp && mp->m_logdev_targp != mp->m_ddev_targp) {
476 if (xfs_sb_version_hassector(&mp->m_sb))
477 log_sector_size = mp->m_sb.sb_logsectsize;
478 error = xfs_setsize_buftarg(mp->m_logdev_targp,
483 if (mp->m_rtdev_targp) {
484 error = xfs_setsize_buftarg(mp->m_rtdev_targp,
485 mp->m_sb.sb_sectsize);
495 struct xfs_mount *mp)
497 mp->m_buf_workqueue = alloc_workqueue("xfs-buf/%s",
498 WQ_MEM_RECLAIM|WQ_FREEZABLE, 1, mp->m_super->s_id);
499 if (!mp->m_buf_workqueue)
502 mp->m_unwritten_workqueue = alloc_workqueue("xfs-conv/%s",
503 WQ_MEM_RECLAIM|WQ_FREEZABLE, 0, mp->m_super->s_id);
504 if (!mp->m_unwritten_workqueue)
507 mp->m_cil_workqueue = alloc_workqueue("xfs-cil/%s",
509 0, mp->m_super->s_id);
510 if (!mp->m_cil_workqueue)
513 mp->m_reclaim_workqueue = alloc_workqueue("xfs-reclaim/%s",
514 WQ_MEM_RECLAIM|WQ_FREEZABLE, 0, mp->m_super->s_id);
515 if (!mp->m_reclaim_workqueue)
518 mp->m_eofblocks_workqueue = alloc_workqueue("xfs-eofblocks/%s",
519 WQ_MEM_RECLAIM|WQ_FREEZABLE, 0, mp->m_super->s_id);
520 if (!mp->m_eofblocks_workqueue)
523 mp->m_sync_workqueue = alloc_workqueue("xfs-sync/%s", WQ_FREEZABLE, 0,
524 mp->m_super->s_id);
525 if (!mp->m_sync_workqueue)
531 destroy_workqueue(mp->m_eofblocks_workqueue);
533 destroy_workqueue(mp->m_reclaim_workqueue);
535 destroy_workqueue(mp->m_cil_workqueue);
537 destroy_workqueue(mp->m_unwritten_workqueue);
539 destroy_workqueue(mp->m_buf_workqueue);
546 struct xfs_mount *mp)
548 destroy_workqueue(mp->m_sync_workqueue);
549 destroy_workqueue(mp->m_eofblocks_workqueue);
550 destroy_workqueue(mp->m_reclaim_workqueue);
551 destroy_workqueue(mp->m_cil_workqueue);
552 destroy_workqueue(mp->m_unwritten_workqueue);
553 destroy_workqueue(mp->m_buf_workqueue);
560 struct xfs_mount *mp = container_of(work, struct xfs_mount,
562 struct super_block *sb = mp->m_super;
578 struct xfs_mount *mp)
584 if (flush_work(&mp->m_flush_inodes_work))
587 queue_work(mp->m_sync_workqueue, &mp->m_flush_inodes_work);
588 flush_work(&mp->m_flush_inodes_work);
674 struct xfs_mount *mp = ip->i_mount;
682 if (xfs_trans_alloc(mp, &M_RES(mp)->tr_fsyncts, 0, 0, 0, &tp))
747 struct xfs_mount *mp)
749 kfree(mp->m_rtname);
750 kfree(mp->m_logname);
751 kmem_free(mp);
759 struct xfs_mount *mp = XFS_M(sb);
768 error = xfs_log_force(mp, XFS_LOG_SYNC);
778 flush_delayed_work(&mp->m_log->l_work);
789 struct xfs_mount *mp = XFS_M(dentry->d_sb);
790 xfs_sb_t *sbp = &mp->m_sb;
802 id = huge_encode_dev(mp->m_ddev_targp->bt_dev);
805 icount = percpu_counter_sum(&mp->m_icount);
806 ifree = percpu_counter_sum(&mp->m_ifree);
807 fdblocks = percpu_counter_sum(&mp->m_fdblocks);
809 spin_lock(&mp->m_sb_lock);
813 spin_unlock(&mp->m_sb_lock);
816 statp->f_bfree = max_t(int64_t, fdblocks - mp->m_alloc_set_aside, 0);
819 fakeinos = XFS_FSB_TO_INO(mp, statp->f_bfree);
821 if (M_IGEO(mp)->maxicount)
824 M_IGEO(mp)->maxicount);
837 ((mp->m_qflags & (XFS_PQUOTA_ACCT|XFS_PQUOTA_ENFD))) ==
841 if (XFS_IS_REALTIME_MOUNT(mp) &&
852 xfs_save_resvblks(struct xfs_mount *mp)
856 mp->m_resblks_save = mp->m_resblks;
857 xfs_reserve_blocks(mp, &resblks, NULL);
861 xfs_restore_resvblks(struct xfs_mount *mp)
865 if (mp->m_resblks_save) {
866 resblks = mp->m_resblks_save;
867 mp->m_resblks_save = 0;
869 resblks = xfs_default_resblks(mp);
871 xfs_reserve_blocks(mp, &resblks, NULL);
889 struct xfs_mount *mp)
893 cancel_delayed_work_sync(&mp->m_log->l_work);
896 xfs_log_force(mp, XFS_LOG_SYNC);
900 error = xfs_log_sbcount(mp);
902 xfs_warn(mp, "xfs_attr_quiesce: failed to log sb changes. "
904 xfs_log_quiesce(mp);
917 struct xfs_mount *mp = XFS_M(sb);
927 xfs_stop_block_reaping(mp);
928 xfs_save_resvblks(mp);
929 xfs_quiesce_attr(mp);
930 ret = xfs_sync_sb(mp, true);
939 struct xfs_mount *mp = XFS_M(sb);
941 xfs_restore_resvblks(mp);
942 xfs_log_work_queue(mp);
943 xfs_start_block_reaping(mp);
953 struct xfs_mount *mp)
955 int ronly = (mp->m_flags & XFS_MOUNT_RDONLY);
958 if (xfs_sb_version_haslogv2(&mp->m_sb)) {
959 if (mp->m_logbsize <= 0 &&
960 mp->m_sb.sb_logsunit > XLOG_BIG_RECORD_BSIZE) {
961 mp->m_logbsize = mp->m_sb.sb_logsunit;
962 } else if (mp->m_logbsize > 0 &&
963 mp->m_logbsize < mp->m_sb.sb_logsunit) {
964 xfs_warn(mp,
970 if (mp->m_logbsize > XLOG_BIG_RECORD_BSIZE) {
971 xfs_warn(mp,
980 if (xfs_sb_version_hascrc(&mp->m_sb) &&
981 (mp->m_flags & XFS_MOUNT_NOATTR2)) {
982 xfs_warn(mp, "Cannot mount a V5 filesystem as noattr2. "
991 if (xfs_sb_version_hasattr2(&mp->m_sb) &&
992 !(mp->m_flags & XFS_MOUNT_NOATTR2))
993 mp->m_flags |= XFS_MOUNT_ATTR2;
998 if ((mp->m_sb.sb_flags & XFS_SBF_READONLY) && !ronly) {
999 xfs_warn(mp,
1004 if ((mp->m_qflags & (XFS_GQUOTA_ACCT | XFS_GQUOTA_ACTIVE)) &&
1005 (mp->m_qflags & (XFS_PQUOTA_ACCT | XFS_PQUOTA_ACTIVE)) &&
1006 !xfs_sb_version_has_pquotino(&mp->m_sb)) {
1007 xfs_warn(mp,
1017 struct xfs_mount *mp)
1021 error = percpu_counter_init(&mp->m_icount, 0, GFP_KERNEL);
1025 error = percpu_counter_init(&mp->m_ifree, 0, GFP_KERNEL);
1029 error = percpu_counter_init(&mp->m_fdblocks, 0, GFP_KERNEL);
1033 error = percpu_counter_init(&mp->m_delalloc_blks, 0, GFP_KERNEL);
1040 percpu_counter_destroy(&mp->m_fdblocks);
1042 percpu_counter_destroy(&mp->m_ifree);
1044 percpu_counter_destroy(&mp->m_icount);
1050 struct xfs_mount *mp)
1052 percpu_counter_set(&mp->m_icount, mp->m_sb.sb_icount);
1053 percpu_counter_set(&mp->m_ifree, mp->m_sb.sb_ifree);
1054 percpu_counter_set(&mp->m_fdblocks, mp->m_sb.sb_fdblocks);
1059 struct xfs_mount *mp)
1061 percpu_counter_destroy(&mp->m_icount);
1062 percpu_counter_destroy(&mp->m_ifree);
1063 percpu_counter_destroy(&mp->m_fdblocks);
1064 ASSERT(XFS_FORCED_SHUTDOWN(mp) ||
1065 percpu_counter_sum(&mp->m_delalloc_blks) == 0);
1066 percpu_counter_destroy(&mp->m_delalloc_blks);
1073 struct xfs_mount *mp = XFS_M(sb);
1079 xfs_notice(mp, "Unmounting Filesystem");
1080 xfs_filestream_unmount(mp);
1081 xfs_unmountfs(mp);
1083 xfs_freesb(mp);
1084 free_percpu(mp->m_stats.xs_stats);
1085 xfs_destroy_percpu_counters(mp);
1086 xfs_destroy_mount_workqueues(mp);
1087 xfs_close_devices(mp);
1090 xfs_mount_free(mp);
1181 * NOTE: mp->m_super is NULL here!
1343 struct xfs_mount *mp)
1348 if ((mp->m_flags & XFS_MOUNT_NORECOVERY) &&
1349 !(mp->m_flags & XFS_MOUNT_RDONLY)) {
1350 xfs_warn(mp, "no-recovery mounts must be read-only.");
1354 if ((mp->m_flags & XFS_MOUNT_NOALIGN) &&
1355 (mp->m_dalign || mp->m_swidth)) {
1356 xfs_warn(mp,
1361 if (!IS_ENABLED(CONFIG_XFS_QUOTA) && mp->m_qflags != 0) {
1362 xfs_warn(mp, "quota support not available in this kernel.");
1366 if ((mp->m_dalign && !mp->m_swidth) ||
1367 (!mp->m_dalign && mp->m_swidth)) {
1368 xfs_warn(mp, "sunit and swidth must be specified together");
1372 if (mp->m_dalign && (mp->m_swidth % mp->m_dalign != 0)) {
1373 xfs_warn(mp,
1375 mp->m_swidth, mp->m_dalign);
1379 if (mp->m_logbufs != -1 &&
1380 mp->m_logbufs != 0 &&
1381 (mp->m_logbufs < XLOG_MIN_ICLOGS ||
1382 mp->m_logbufs > XLOG_MAX_ICLOGS)) {
1383 xfs_warn(mp, "invalid logbufs value: %d [not %d-%d]",
1384 mp->m_logbufs, XLOG_MIN_ICLOGS, XLOG_MAX_ICLOGS);
1388 if (mp->m_logbsize != -1 &&
1389 mp->m_logbsize != 0 &&
1390 (mp->m_logbsize < XLOG_MIN_RECORD_BSIZE ||
1391 mp->m_logbsize > XLOG_MAX_RECORD_BSIZE ||
1392 !is_power_of_2(mp->m_logbsize))) {
1393 xfs_warn(mp,
1395 mp->m_logbsize);
1399 if ((mp->m_flags & XFS_MOUNT_ALLOCSIZE) &&
1400 (mp->m_allocsize_log > XFS_MAX_IO_LOG ||
1401 mp->m_allocsize_log < XFS_MIN_IO_LOG)) {
1402 xfs_warn(mp, "invalid log iosize: %d [not %d-%d]",
1403 mp->m_allocsize_log, XFS_MIN_IO_LOG, XFS_MAX_IO_LOG);
1415 struct xfs_mount *mp = sb->s_fs_info;
1419 mp->m_super = sb;
1421 error = xfs_fc_validate_params(mp);
1440 xfs_notice(mp, "Delaying mount for %d seconds.",
1448 error = xfs_open_devices(mp);
1452 error = xfs_init_mount_workqueues(mp);
1456 error = xfs_init_percpu_counters(mp);
1461 mp->m_stats.xs_stats = alloc_percpu(struct xfsstats);
1462 if (!mp->m_stats.xs_stats) {
1467 error = xfs_readsb(mp, flags);
1471 error = xfs_finish_flags(mp);
1475 error = xfs_setup_devices(mp);
1480 if (!xfs_sb_version_hascrc(&mp->m_sb)) {
1482 xfs_warn_once(mp,
1485 xfs_warn(mp,
1503 if (XFS_B_TO_FSBT(mp, MAX_LFS_FILESIZE) > XFS_MAX_FILEOFF) {
1504 xfs_warn(mp,
1506 XFS_B_TO_FSBT(mp, MAX_LFS_FILESIZE),
1512 error = xfs_filestream_mount(mp);
1521 sb->s_blocksize = mp->m_sb.sb_blocksize;
1526 if (xfs_sb_version_hasbigtime(&mp->m_sb)) {
1533 trace_xfs_inode_timestamp_range(mp, sb->s_time_min, sb->s_time_max);
1539 if (XFS_SB_VERSION_NUM(&mp->m_sb) == XFS_SB_VERSION_5)
1542 if (xfs_sb_version_hasbigtime(&mp->m_sb))
1543 xfs_warn(mp,
1546 if (mp->m_flags & XFS_MOUNT_DAX_ALWAYS) {
1549 xfs_warn(mp,
1552 datadev_is_dax = bdev_dax_supported(mp->m_ddev_targp->bt_bdev,
1554 if (mp->m_rtdev_targp)
1556 mp->m_rtdev_targp->bt_bdev, sb->s_blocksize);
1558 xfs_alert(mp,
1560 xfs_mount_set_dax_mode(mp, XFS_DAX_NEVER);
1562 if (xfs_sb_version_hasreflink(&mp->m_sb)) {
1563 xfs_alert(mp,
1570 if (mp->m_flags & XFS_MOUNT_DISCARD) {
1574 xfs_warn(mp, "mounting with \"discard\" option, but "
1576 mp->m_flags &= ~XFS_MOUNT_DISCARD;
1580 if (xfs_sb_version_hasreflink(&mp->m_sb)) {
1581 if (mp->m_sb.sb_rblocks) {
1582 xfs_alert(mp,
1589 xfs_info(mp, "using DEBUG-only always_cow mode.");
1590 mp->m_always_cow = true;
1594 if (xfs_sb_version_hasrmapbt(&mp->m_sb) && mp->m_sb.sb_rblocks) {
1595 xfs_alert(mp,
1601 if (xfs_sb_version_hasinobtcounts(&mp->m_sb))
1602 xfs_warn(mp,
1605 error = xfs_mountfs(mp);
1609 root = igrab(VFS_I(mp->m_rootip));
1623 xfs_filestream_unmount(mp);
1625 xfs_freesb(mp);
1627 free_percpu(mp->m_stats.xs_stats);
1629 xfs_destroy_percpu_counters(mp);
1631 xfs_destroy_mount_workqueues(mp);
1633 xfs_close_devices(mp);
1636 xfs_mount_free(mp);
1640 xfs_filestream_unmount(mp);
1641 xfs_unmountfs(mp);
1654 struct xfs_mount *mp)
1656 struct xfs_sb *sbp = &mp->m_sb;
1659 if (mp->m_flags & XFS_MOUNT_NORECOVERY) {
1660 xfs_warn(mp,
1667 xfs_warn(mp,
1674 mp->m_flags &= ~XFS_MOUNT_RDONLY;
1680 if (mp->m_update_sb) {
1681 error = xfs_sync_sb(mp, false);
1683 xfs_warn(mp, "failed to write sb changes");
1686 mp->m_update_sb = false;
1693 xfs_restore_resvblks(mp);
1694 xfs_log_work_queue(mp);
1697 error = xfs_reflink_recover_cow(mp);
1699 xfs_err(mp,
1701 xfs_force_shutdown(mp, SHUTDOWN_CORRUPT_INCORE);
1704 xfs_start_block_reaping(mp);
1707 error = xfs_fs_reserve_ag_blocks(mp);
1716 struct xfs_mount *mp)
1724 error = sync_filesystem(mp->m_super);
1732 xfs_stop_block_reaping(mp);
1740 error = xfs_icache_free_cowblocks(mp, &eofb);
1742 xfs_force_shutdown(mp, SHUTDOWN_CORRUPT_INCORE);
1747 error = xfs_fs_unreserve_ag_blocks(mp);
1749 xfs_force_shutdown(mp, SHUTDOWN_CORRUPT_INCORE);
1760 xfs_save_resvblks(mp);
1762 xfs_quiesce_attr(mp);
1763 mp->m_flags |= XFS_MOUNT_RDONLY;
1784 struct xfs_mount *mp = XFS_M(fc->root->d_sb);
1786 xfs_sb_t *sbp = &mp->m_sb;
1791 if (XFS_SB_VERSION_NUM(&mp->m_sb) == XFS_SB_VERSION_5)
1799 if ((mp->m_flags & XFS_MOUNT_SMALL_INUMS) &&
1801 mp->m_flags &= ~XFS_MOUNT_SMALL_INUMS;
1802 mp->m_maxagi = xfs_set_inode_alloc(mp, sbp->sb_agcount);
1806 if (!(mp->m_flags & XFS_MOUNT_SMALL_INUMS) &&
1808 mp->m_flags |= XFS_MOUNT_SMALL_INUMS;
1809 mp->m_maxagi = xfs_set_inode_alloc(mp, sbp->sb_agcount);
1813 if ((mp->m_flags & XFS_MOUNT_RDONLY) && !(flags & SB_RDONLY)) {
1814 error = xfs_remount_rw(mp);
1820 if (!(mp->m_flags & XFS_MOUNT_RDONLY) && (flags & SB_RDONLY)) {
1821 error = xfs_remount_ro(mp);
1832 struct xfs_mount *mp = fc->s_fs_info;
1835 * mp is stored in the fs_context when it is initialized.
1836 * mp is transferred to the superblock on a successful mount,
1840 if (mp)
1841 xfs_mount_free(mp);
1854 struct xfs_mount *mp;
1856 mp = kmem_alloc(sizeof(struct xfs_mount), KM_ZERO);
1857 if (!mp)
1860 spin_lock_init(&mp->m_sb_lock);
1861 spin_lock_init(&mp->m_agirotor_lock);
1862 INIT_RADIX_TREE(&mp->m_perag_tree, GFP_ATOMIC);
1863 spin_lock_init(&mp->m_perag_lock);
1864 mutex_init(&mp->m_growlock);
1865 INIT_WORK(&mp->m_flush_inodes_work, xfs_flush_inodes_worker);
1866 INIT_DELAYED_WORK(&mp->m_reclaim_work, xfs_reclaim_worker);
1867 INIT_DELAYED_WORK(&mp->m_eofblocks_work, xfs_eofblocks_worker);
1868 INIT_DELAYED_WORK(&mp->m_cowblocks_work, xfs_cowblocks_worker);
1869 mp->m_kobj.kobject.kset = xfs_kset;
1876 mp->m_finobt_nores = true;
1881 mp->m_logbufs = -1;
1882 mp->m_logbsize = -1;
1883 mp->m_allocsize_log = 16; /* 64k */
1889 mp->m_flags |= XFS_MOUNT_RDONLY;
1891 mp->m_flags |= XFS_MOUNT_DIRSYNC;
1893 mp->m_flags |= XFS_MOUNT_WSYNC;
1895 fc->s_fs_info = mp;