xfs: remove XFS_MOUNT_NO_PERCPU_SB
Fail the mount if we can't allocate memory for the per-CPU counters. This is consistent with how we handle everything else in the mount path and makes the superblock counter modification a lot simpler. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Alex Elder <aelder@sgi.com>
This commit is contained in:
committed by
Alex Elder
parent
50f59e8eed
commit
61ba35dea0
@@ -1518,8 +1518,9 @@ xfs_fs_fill_super(
|
|||||||
if (error)
|
if (error)
|
||||||
goto out_free_fsname;
|
goto out_free_fsname;
|
||||||
|
|
||||||
if (xfs_icsb_init_counters(mp))
|
error = xfs_icsb_init_counters(mp);
|
||||||
mp->m_flags |= XFS_MOUNT_NO_PERCPU_SB;
|
if (error)
|
||||||
|
goto out_close_devices;
|
||||||
|
|
||||||
error = xfs_readsb(mp, flags);
|
error = xfs_readsb(mp, flags);
|
||||||
if (error)
|
if (error)
|
||||||
@@ -1580,6 +1581,7 @@ xfs_fs_fill_super(
|
|||||||
xfs_freesb(mp);
|
xfs_freesb(mp);
|
||||||
out_destroy_counters:
|
out_destroy_counters:
|
||||||
xfs_icsb_destroy_counters(mp);
|
xfs_icsb_destroy_counters(mp);
|
||||||
|
out_close_devices:
|
||||||
xfs_close_devices(mp);
|
xfs_close_devices(mp);
|
||||||
out_free_fsname:
|
out_free_fsname:
|
||||||
xfs_free_fsname(mp);
|
xfs_free_fsname(mp);
|
||||||
|
@@ -1856,12 +1856,8 @@ xfs_mod_incore_sb(
|
|||||||
case XFS_SBS_ICOUNT:
|
case XFS_SBS_ICOUNT:
|
||||||
case XFS_SBS_IFREE:
|
case XFS_SBS_IFREE:
|
||||||
case XFS_SBS_FDBLOCKS:
|
case XFS_SBS_FDBLOCKS:
|
||||||
if (!(mp->m_flags & XFS_MOUNT_NO_PERCPU_SB)) {
|
status = xfs_icsb_modify_counters(mp, field, delta, rsvd);
|
||||||
status = xfs_icsb_modify_counters(mp, field,
|
break;
|
||||||
delta, rsvd);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
/* FALLTHROUGH */
|
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
spin_lock(&mp->m_sb_lock);
|
spin_lock(&mp->m_sb_lock);
|
||||||
@@ -1910,15 +1906,12 @@ xfs_mod_incore_sb_batch(xfs_mount_t *mp, xfs_mod_sb_t *msb, uint nmsb, int rsvd)
|
|||||||
case XFS_SBS_ICOUNT:
|
case XFS_SBS_ICOUNT:
|
||||||
case XFS_SBS_IFREE:
|
case XFS_SBS_IFREE:
|
||||||
case XFS_SBS_FDBLOCKS:
|
case XFS_SBS_FDBLOCKS:
|
||||||
if (!(mp->m_flags & XFS_MOUNT_NO_PERCPU_SB)) {
|
spin_unlock(&mp->m_sb_lock);
|
||||||
spin_unlock(&mp->m_sb_lock);
|
status = xfs_icsb_modify_counters(mp,
|
||||||
status = xfs_icsb_modify_counters(mp,
|
msbp->msb_field,
|
||||||
msbp->msb_field,
|
msbp->msb_delta, rsvd);
|
||||||
msbp->msb_delta, rsvd);
|
spin_lock(&mp->m_sb_lock);
|
||||||
spin_lock(&mp->m_sb_lock);
|
break;
|
||||||
break;
|
|
||||||
}
|
|
||||||
/* FALLTHROUGH */
|
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
status = xfs_mod_incore_sb_unlocked(mp,
|
status = xfs_mod_incore_sb_unlocked(mp,
|
||||||
@@ -1948,16 +1941,13 @@ xfs_mod_incore_sb_batch(xfs_mount_t *mp, xfs_mod_sb_t *msb, uint nmsb, int rsvd)
|
|||||||
case XFS_SBS_ICOUNT:
|
case XFS_SBS_ICOUNT:
|
||||||
case XFS_SBS_IFREE:
|
case XFS_SBS_IFREE:
|
||||||
case XFS_SBS_FDBLOCKS:
|
case XFS_SBS_FDBLOCKS:
|
||||||
if (!(mp->m_flags & XFS_MOUNT_NO_PERCPU_SB)) {
|
spin_unlock(&mp->m_sb_lock);
|
||||||
spin_unlock(&mp->m_sb_lock);
|
status = xfs_icsb_modify_counters(mp,
|
||||||
status = xfs_icsb_modify_counters(mp,
|
msbp->msb_field,
|
||||||
msbp->msb_field,
|
-(msbp->msb_delta),
|
||||||
-(msbp->msb_delta),
|
rsvd);
|
||||||
rsvd);
|
spin_lock(&mp->m_sb_lock);
|
||||||
spin_lock(&mp->m_sb_lock);
|
break;
|
||||||
break;
|
|
||||||
}
|
|
||||||
/* FALLTHROUGH */
|
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
status = xfs_mod_incore_sb_unlocked(mp,
|
status = xfs_mod_incore_sb_unlocked(mp,
|
||||||
|
@@ -232,8 +232,6 @@ typedef struct xfs_mount {
|
|||||||
#define XFS_MOUNT_DIRSYNC (1ULL << 21) /* synchronous directory ops */
|
#define XFS_MOUNT_DIRSYNC (1ULL << 21) /* synchronous directory ops */
|
||||||
#define XFS_MOUNT_COMPAT_IOSIZE (1ULL << 22) /* don't report large preferred
|
#define XFS_MOUNT_COMPAT_IOSIZE (1ULL << 22) /* don't report large preferred
|
||||||
* I/O size in stat() */
|
* I/O size in stat() */
|
||||||
#define XFS_MOUNT_NO_PERCPU_SB (1ULL << 23) /* don't use per-cpu superblock
|
|
||||||
counters */
|
|
||||||
#define XFS_MOUNT_FILESTREAMS (1ULL << 24) /* enable the filestreams
|
#define XFS_MOUNT_FILESTREAMS (1ULL << 24) /* enable the filestreams
|
||||||
allocator */
|
allocator */
|
||||||
#define XFS_MOUNT_NOATTR2 (1ULL << 25) /* disable use of attr2 format */
|
#define XFS_MOUNT_NOATTR2 (1ULL << 25) /* disable use of attr2 format */
|
||||||
|
Reference in New Issue
Block a user