diff options
author | Niv Sardi <xaiki@debian.org> | 2008-11-06 23:07:12 -0500 |
---|---|---|
committer | Niv Sardi <xaiki@debian.org> | 2008-11-06 23:07:12 -0500 |
commit | dcd7b4e5c0649b1d2219399529b20de1df517e55 (patch) | |
tree | ef00739e48ddda0a30061d62a7348ed4b0c9aeeb /fs/xfs/xfs_mount.c | |
parent | 75fa67706cce5272bcfc51ed646f2da21f3bdb6e (diff) | |
parent | 91b777125175077fb74025608dba87f100586c62 (diff) |
Merge branch 'master' of git://oss.sgi.com:8090/xfs/linux-2.6
Diffstat (limited to 'fs/xfs/xfs_mount.c')
-rw-r--r-- | fs/xfs/xfs_mount.c | 47 |
1 files changed, 18 insertions, 29 deletions
diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index a4503f5e9497..177976dfea04 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c | |||
@@ -567,8 +567,6 @@ xfs_readsb(xfs_mount_t *mp, int flags) | |||
567 | STATIC void | 567 | STATIC void |
568 | xfs_mount_common(xfs_mount_t *mp, xfs_sb_t *sbp) | 568 | xfs_mount_common(xfs_mount_t *mp, xfs_sb_t *sbp) |
569 | { | 569 | { |
570 | int i; | ||
571 | |||
572 | mp->m_agfrotor = mp->m_agirotor = 0; | 570 | mp->m_agfrotor = mp->m_agirotor = 0; |
573 | spin_lock_init(&mp->m_agirotor_lock); | 571 | spin_lock_init(&mp->m_agirotor_lock); |
574 | mp->m_maxagi = mp->m_sb.sb_agcount; | 572 | mp->m_maxagi = mp->m_sb.sb_agcount; |
@@ -582,7 +580,6 @@ xfs_mount_common(xfs_mount_t *mp, xfs_sb_t *sbp) | |||
582 | mp->m_blockmask = sbp->sb_blocksize - 1; | 580 | mp->m_blockmask = sbp->sb_blocksize - 1; |
583 | mp->m_blockwsize = sbp->sb_blocksize >> XFS_WORDLOG; | 581 | mp->m_blockwsize = sbp->sb_blocksize >> XFS_WORDLOG; |
584 | mp->m_blockwmask = mp->m_blockwsize - 1; | 582 | mp->m_blockwmask = mp->m_blockwsize - 1; |
585 | INIT_LIST_HEAD(&mp->m_del_inodes); | ||
586 | 583 | ||
587 | /* | 584 | /* |
588 | * Setup for attributes, in case they get created. | 585 | * Setup for attributes, in case they get created. |
@@ -605,24 +602,20 @@ xfs_mount_common(xfs_mount_t *mp, xfs_sb_t *sbp) | |||
605 | } | 602 | } |
606 | ASSERT(mp->m_attroffset < XFS_LITINO(mp)); | 603 | ASSERT(mp->m_attroffset < XFS_LITINO(mp)); |
607 | 604 | ||
608 | for (i = 0; i < 2; i++) { | 605 | mp->m_alloc_mxr[0] = xfs_allocbt_maxrecs(mp, sbp->sb_blocksize, 1); |
609 | mp->m_alloc_mxr[i] = XFS_BTREE_BLOCK_MAXRECS(sbp->sb_blocksize, | 606 | mp->m_alloc_mxr[1] = xfs_allocbt_maxrecs(mp, sbp->sb_blocksize, 0); |
610 | xfs_alloc, i == 0); | 607 | mp->m_alloc_mnr[0] = mp->m_alloc_mxr[0] / 2; |
611 | mp->m_alloc_mnr[i] = XFS_BTREE_BLOCK_MINRECS(sbp->sb_blocksize, | 608 | mp->m_alloc_mnr[1] = mp->m_alloc_mxr[1] / 2; |
612 | xfs_alloc, i == 0); | 609 | |
613 | } | 610 | mp->m_inobt_mxr[0] = xfs_inobt_maxrecs(mp, sbp->sb_blocksize, 1); |
614 | for (i = 0; i < 2; i++) { | 611 | mp->m_inobt_mxr[1] = xfs_inobt_maxrecs(mp, sbp->sb_blocksize, 0); |
615 | mp->m_bmap_dmxr[i] = XFS_BTREE_BLOCK_MAXRECS(sbp->sb_blocksize, | 612 | mp->m_inobt_mnr[0] = mp->m_inobt_mxr[0] / 2; |
616 | xfs_bmbt, i == 0); | 613 | mp->m_inobt_mnr[1] = mp->m_inobt_mxr[1] / 2; |
617 | mp->m_bmap_dmnr[i] = XFS_BTREE_BLOCK_MINRECS(sbp->sb_blocksize, | 614 | |
618 | xfs_bmbt, i == 0); | 615 | mp->m_bmap_dmxr[0] = xfs_bmbt_maxrecs(mp, sbp->sb_blocksize, 1); |
619 | } | 616 | mp->m_bmap_dmxr[1] = xfs_bmbt_maxrecs(mp, sbp->sb_blocksize, 0); |
620 | for (i = 0; i < 2; i++) { | 617 | mp->m_bmap_dmnr[0] = mp->m_bmap_dmxr[0] / 2; |
621 | mp->m_inobt_mxr[i] = XFS_BTREE_BLOCK_MAXRECS(sbp->sb_blocksize, | 618 | mp->m_bmap_dmnr[1] = mp->m_bmap_dmxr[1] / 2; |
622 | xfs_inobt, i == 0); | ||
623 | mp->m_inobt_mnr[i] = XFS_BTREE_BLOCK_MINRECS(sbp->sb_blocksize, | ||
624 | xfs_inobt, i == 0); | ||
625 | } | ||
626 | 619 | ||
627 | mp->m_bsize = XFS_FSB_TO_BB(mp, 1); | 620 | mp->m_bsize = XFS_FSB_TO_BB(mp, 1); |
628 | mp->m_ialloc_inos = (int)MAX((__uint16_t)XFS_INODES_PER_CHUNK, | 621 | mp->m_ialloc_inos = (int)MAX((__uint16_t)XFS_INODES_PER_CHUNK, |
@@ -1241,10 +1234,13 @@ xfs_unmountfs( | |||
1241 | * need to force the log first. | 1234 | * need to force the log first. |
1242 | */ | 1235 | */ |
1243 | xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE | XFS_LOG_SYNC); | 1236 | xfs_log_force(mp, (xfs_lsn_t)0, XFS_LOG_FORCE | XFS_LOG_SYNC); |
1244 | xfs_iflush_all(mp); | 1237 | xfs_reclaim_inodes(mp, 0, XFS_IFLUSH_ASYNC); |
1245 | 1238 | ||
1246 | XFS_QM_DQPURGEALL(mp, XFS_QMOPT_QUOTALL | XFS_QMOPT_UMOUNTING); | 1239 | XFS_QM_DQPURGEALL(mp, XFS_QMOPT_QUOTALL | XFS_QMOPT_UMOUNTING); |
1247 | 1240 | ||
1241 | if (mp->m_quotainfo) | ||
1242 | XFS_QM_DONE(mp); | ||
1243 | |||
1248 | /* | 1244 | /* |
1249 | * Flush out the log synchronously so that we know for sure | 1245 | * Flush out the log synchronously so that we know for sure |
1250 | * that nothing is pinned. This is important because bflush() | 1246 | * that nothing is pinned. This is important because bflush() |
@@ -1285,11 +1281,6 @@ xfs_unmountfs( | |||
1285 | xfs_unmountfs_wait(mp); /* wait for async bufs */ | 1281 | xfs_unmountfs_wait(mp); /* wait for async bufs */ |
1286 | xfs_log_unmount(mp); /* Done! No more fs ops. */ | 1282 | xfs_log_unmount(mp); /* Done! No more fs ops. */ |
1287 | 1283 | ||
1288 | /* | ||
1289 | * All inodes from this mount point should be freed. | ||
1290 | */ | ||
1291 | ASSERT(mp->m_inodes == NULL); | ||
1292 | |||
1293 | if ((mp->m_flags & XFS_MOUNT_NOUUID) == 0) | 1284 | if ((mp->m_flags & XFS_MOUNT_NOUUID) == 0) |
1294 | uuid_table_remove(&mp->m_sb.sb_uuid); | 1285 | uuid_table_remove(&mp->m_sb.sb_uuid); |
1295 | 1286 | ||
@@ -1297,8 +1288,6 @@ xfs_unmountfs( | |||
1297 | xfs_errortag_clearall(mp, 0); | 1288 | xfs_errortag_clearall(mp, 0); |
1298 | #endif | 1289 | #endif |
1299 | xfs_free_perag(mp); | 1290 | xfs_free_perag(mp); |
1300 | if (mp->m_quotainfo) | ||
1301 | XFS_QM_DONE(mp); | ||
1302 | } | 1291 | } |
1303 | 1292 | ||
1304 | STATIC void | 1293 | STATIC void |