diff options
| -rw-r--r-- | fs/xfs/linux-2.6/xfs_export.c | 3 | ||||
| -rw-r--r-- | fs/xfs/linux-2.6/xfs_vfs.h | 1 | ||||
| -rw-r--r-- | fs/xfs/xfs_fsops.c | 2 | ||||
| -rw-r--r-- | fs/xfs/xfs_mount.c | 9 | ||||
| -rw-r--r-- | fs/xfs/xfs_mount.h | 5 | ||||
| -rw-r--r-- | fs/xfs/xfs_vfsops.c | 11 |
6 files changed, 19 insertions, 12 deletions
diff --git a/fs/xfs/linux-2.6/xfs_export.c b/fs/xfs/linux-2.6/xfs_export.c index 3e97076437be..80eb249f2fa0 100644 --- a/fs/xfs/linux-2.6/xfs_export.c +++ b/fs/xfs/linux-2.6/xfs_export.c | |||
| @@ -96,9 +96,8 @@ linvfs_encode_fh( | |||
| 96 | int is64 = 0; | 96 | int is64 = 0; |
| 97 | #if XFS_BIG_INUMS | 97 | #if XFS_BIG_INUMS |
| 98 | vfs_t *vfs = LINVFS_GET_VFS(inode->i_sb); | 98 | vfs_t *vfs = LINVFS_GET_VFS(inode->i_sb); |
| 99 | xfs_mount_t *mp = XFS_VFSTOM(vfs); | ||
| 100 | 99 | ||
| 101 | if (!(mp->m_flags & XFS_MOUNT_32BITINOOPT)) { | 100 | if (!(vfs->vfs_flag & VFS_32BITINODES)) { |
| 102 | /* filesystem may contain 64bit inode numbers */ | 101 | /* filesystem may contain 64bit inode numbers */ |
| 103 | is64 = XFS_FILEID_TYPE_64FLAG; | 102 | is64 = XFS_FILEID_TYPE_64FLAG; |
| 104 | } | 103 | } |
diff --git a/fs/xfs/linux-2.6/xfs_vfs.h b/fs/xfs/linux-2.6/xfs_vfs.h index d5fb28f7d322..57caf9eddee0 100644 --- a/fs/xfs/linux-2.6/xfs_vfs.h +++ b/fs/xfs/linux-2.6/xfs_vfs.h | |||
| @@ -81,6 +81,7 @@ typedef enum { | |||
| 81 | #define VFS_RDONLY 0x0001 /* read-only vfs */ | 81 | #define VFS_RDONLY 0x0001 /* read-only vfs */ |
| 82 | #define VFS_GRPID 0x0002 /* group-ID assigned from directory */ | 82 | #define VFS_GRPID 0x0002 /* group-ID assigned from directory */ |
| 83 | #define VFS_DMI 0x0004 /* filesystem has the DMI enabled */ | 83 | #define VFS_DMI 0x0004 /* filesystem has the DMI enabled */ |
| 84 | #define VFS_32BITINODES 0x0008 /* do not use inums above 32 bits */ | ||
| 84 | #define VFS_END 0x0008 /* max flag */ | 85 | #define VFS_END 0x0008 /* max flag */ |
| 85 | 86 | ||
| 86 | #define SYNC_ATTR 0x0001 /* sync attributes */ | 87 | #define SYNC_ATTR 0x0001 /* sync attributes */ |
diff --git a/fs/xfs/xfs_fsops.c b/fs/xfs/xfs_fsops.c index 0ca597b0ca79..7ceabd0e2d9d 100644 --- a/fs/xfs/xfs_fsops.c +++ b/fs/xfs/xfs_fsops.c | |||
| @@ -171,7 +171,7 @@ xfs_growfs_data_private( | |||
| 171 | memset(&mp->m_perag[oagcount], 0, | 171 | memset(&mp->m_perag[oagcount], 0, |
| 172 | (nagcount - oagcount) * sizeof(xfs_perag_t)); | 172 | (nagcount - oagcount) * sizeof(xfs_perag_t)); |
| 173 | mp->m_flags |= XFS_MOUNT_32BITINODES; | 173 | mp->m_flags |= XFS_MOUNT_32BITINODES; |
| 174 | nagimax = xfs_initialize_perag(mp, nagcount); | 174 | nagimax = xfs_initialize_perag(XFS_MTOVFS(mp), mp, nagcount); |
| 175 | up_write(&mp->m_peraglock); | 175 | up_write(&mp->m_peraglock); |
| 176 | } | 176 | } |
| 177 | tp = xfs_trans_alloc(mp, XFS_TRANS_GROWFS); | 177 | tp = xfs_trans_alloc(mp, XFS_TRANS_GROWFS); |
diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 9e861d0d3ee6..02b1892aaf74 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c | |||
| @@ -316,7 +316,10 @@ xfs_mount_validate_sb( | |||
| 316 | } | 316 | } |
| 317 | 317 | ||
| 318 | xfs_agnumber_t | 318 | xfs_agnumber_t |
| 319 | xfs_initialize_perag(xfs_mount_t *mp, xfs_agnumber_t agcount) | 319 | xfs_initialize_perag( |
| 320 | struct vfs *vfs, | ||
| 321 | xfs_mount_t *mp, | ||
| 322 | xfs_agnumber_t agcount) | ||
| 320 | { | 323 | { |
| 321 | xfs_agnumber_t index, max_metadata; | 324 | xfs_agnumber_t index, max_metadata; |
| 322 | xfs_perag_t *pag; | 325 | xfs_perag_t *pag; |
| @@ -332,7 +335,7 @@ xfs_initialize_perag(xfs_mount_t *mp, xfs_agnumber_t agcount) | |||
| 332 | /* Clear the mount flag if no inode can overflow 32 bits | 335 | /* Clear the mount flag if no inode can overflow 32 bits |
| 333 | * on this filesystem, or if specifically requested.. | 336 | * on this filesystem, or if specifically requested.. |
| 334 | */ | 337 | */ |
| 335 | if ((mp->m_flags & XFS_MOUNT_32BITINOOPT) && ino > max_inum) { | 338 | if ((vfs->vfs_flag & VFS_32BITINODES) && ino > max_inum) { |
| 336 | mp->m_flags |= XFS_MOUNT_32BITINODES; | 339 | mp->m_flags |= XFS_MOUNT_32BITINODES; |
| 337 | } else { | 340 | } else { |
| 338 | mp->m_flags &= ~XFS_MOUNT_32BITINODES; | 341 | mp->m_flags &= ~XFS_MOUNT_32BITINODES; |
| @@ -944,7 +947,7 @@ xfs_mountfs( | |||
| 944 | mp->m_perag = | 947 | mp->m_perag = |
| 945 | kmem_zalloc(sbp->sb_agcount * sizeof(xfs_perag_t), KM_SLEEP); | 948 | kmem_zalloc(sbp->sb_agcount * sizeof(xfs_perag_t), KM_SLEEP); |
| 946 | 949 | ||
| 947 | mp->m_maxagi = xfs_initialize_perag(mp, sbp->sb_agcount); | 950 | mp->m_maxagi = xfs_initialize_perag(vfsp, mp, sbp->sb_agcount); |
| 948 | 951 | ||
| 949 | /* | 952 | /* |
| 950 | * log's mount-time initialization. Perform 1st part recovery if needed | 953 | * log's mount-time initialization. Perform 1st part recovery if needed |
diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h index f724a2beead9..08b2e0a5d807 100644 --- a/fs/xfs/xfs_mount.h +++ b/fs/xfs/xfs_mount.h | |||
| @@ -402,7 +402,7 @@ typedef struct xfs_mount { | |||
| 402 | /* osyncisdsync is now default*/ | 402 | /* osyncisdsync is now default*/ |
| 403 | #define XFS_MOUNT_32BITINODES (1ULL << 14) /* do not create inodes above | 403 | #define XFS_MOUNT_32BITINODES (1ULL << 14) /* do not create inodes above |
| 404 | * 32 bits in size */ | 404 | * 32 bits in size */ |
| 405 | #define XFS_MOUNT_32BITINOOPT (1ULL << 15) /* saved mount option state */ | 405 | /* (1ULL << 15) -- currently unused */ |
| 406 | #define XFS_MOUNT_NOUUID (1ULL << 16) /* ignore uuid during mount */ | 406 | #define XFS_MOUNT_NOUUID (1ULL << 16) /* ignore uuid during mount */ |
| 407 | #define XFS_MOUNT_BARRIER (1ULL << 17) | 407 | #define XFS_MOUNT_BARRIER (1ULL << 17) |
| 408 | #define XFS_MOUNT_IDELETE (1ULL << 18) /* delete empty inode clusters*/ | 408 | #define XFS_MOUNT_IDELETE (1ULL << 18) /* delete empty inode clusters*/ |
| @@ -557,7 +557,8 @@ extern void xfs_freesb(xfs_mount_t *); | |||
| 557 | extern void xfs_do_force_shutdown(bhv_desc_t *, int, char *, int); | 557 | extern void xfs_do_force_shutdown(bhv_desc_t *, int, char *, int); |
| 558 | extern int xfs_syncsub(xfs_mount_t *, int, int, int *); | 558 | extern int xfs_syncsub(xfs_mount_t *, int, int, int *); |
| 559 | extern int xfs_sync_inodes(xfs_mount_t *, int, int, int *); | 559 | extern int xfs_sync_inodes(xfs_mount_t *, int, int, int *); |
| 560 | extern xfs_agnumber_t xfs_initialize_perag(xfs_mount_t *, xfs_agnumber_t); | 560 | extern xfs_agnumber_t xfs_initialize_perag(struct vfs *, xfs_mount_t *, |
| 561 | xfs_agnumber_t); | ||
| 561 | extern void xfs_xlatesb(void *, struct xfs_sb *, int, __int64_t); | 562 | extern void xfs_xlatesb(void *, struct xfs_sb *, int, __int64_t); |
| 562 | 563 | ||
| 563 | extern struct xfs_dmops xfs_dmcore_stub; | 564 | extern struct xfs_dmops xfs_dmcore_stub; |
diff --git a/fs/xfs/xfs_vfsops.c b/fs/xfs/xfs_vfsops.c index f4f8805e25ba..dd419e1d71ba 100644 --- a/fs/xfs/xfs_vfsops.c +++ b/fs/xfs/xfs_vfsops.c | |||
| @@ -269,7 +269,7 @@ xfs_start_flags( | |||
| 269 | if (ap->flags & XFSMNT_OSYNCISOSYNC) | 269 | if (ap->flags & XFSMNT_OSYNCISOSYNC) |
| 270 | mp->m_flags |= XFS_MOUNT_OSYNCISOSYNC; | 270 | mp->m_flags |= XFS_MOUNT_OSYNCISOSYNC; |
| 271 | if (ap->flags & XFSMNT_32BITINODES) | 271 | if (ap->flags & XFSMNT_32BITINODES) |
| 272 | mp->m_flags |= (XFS_MOUNT_32BITINODES | XFS_MOUNT_32BITINOOPT); | 272 | mp->m_flags |= XFS_MOUNT_32BITINODES; |
| 273 | 273 | ||
| 274 | if (ap->flags & XFSMNT_IOSIZE) { | 274 | if (ap->flags & XFSMNT_IOSIZE) { |
| 275 | if (ap->iosizelog > XFS_MAX_IO_LOG || | 275 | if (ap->iosizelog > XFS_MAX_IO_LOG || |
| @@ -1868,6 +1868,9 @@ printk("XFS: irixsgid is now a sysctl(2) variable, option is deprecated.\n"); | |||
| 1868 | args->sunit = args->swidth = 0; | 1868 | args->sunit = args->swidth = 0; |
| 1869 | } | 1869 | } |
| 1870 | 1870 | ||
| 1871 | if (args->flags & XFSMNT_32BITINODES) | ||
| 1872 | vfsp->vfs_flag |= VFS_32BITINODES; | ||
| 1873 | |||
| 1871 | if (args->flags2) | 1874 | if (args->flags2) |
| 1872 | args->flags |= XFSMNT_FLAGS2; | 1875 | args->flags |= XFSMNT_FLAGS2; |
| 1873 | return 0; | 1876 | return 0; |
| @@ -1929,15 +1932,15 @@ xfs_showargs( | |||
| 1929 | seq_printf(m, "," MNTOPT_SWIDTH "=%d", | 1932 | seq_printf(m, "," MNTOPT_SWIDTH "=%d", |
| 1930 | (int)XFS_FSB_TO_BB(mp, mp->m_swidth)); | 1933 | (int)XFS_FSB_TO_BB(mp, mp->m_swidth)); |
| 1931 | 1934 | ||
| 1932 | if (!(mp->m_flags & XFS_MOUNT_32BITINOOPT)) | ||
| 1933 | seq_printf(m, "," MNTOPT_64BITINODE); | ||
| 1934 | |||
| 1935 | if (!(mp->m_flags & XFS_MOUNT_COMPAT_ATTR)) | 1935 | if (!(mp->m_flags & XFS_MOUNT_COMPAT_ATTR)) |
| 1936 | seq_printf(m, "," MNTOPT_ATTR2); | 1936 | seq_printf(m, "," MNTOPT_ATTR2); |
| 1937 | 1937 | ||
| 1938 | if (!(mp->m_flags & XFS_MOUNT_COMPAT_IOSIZE)) | 1938 | if (!(mp->m_flags & XFS_MOUNT_COMPAT_IOSIZE)) |
| 1939 | seq_printf(m, "," MNTOPT_LARGEIO); | 1939 | seq_printf(m, "," MNTOPT_LARGEIO); |
| 1940 | 1940 | ||
| 1941 | if (!(vfsp->vfs_flag & VFS_32BITINODES)) | ||
| 1942 | seq_printf(m, "," MNTOPT_64BITINODE); | ||
| 1943 | |||
| 1941 | if (vfsp->vfs_flag & VFS_GRPID) | 1944 | if (vfsp->vfs_flag & VFS_GRPID) |
| 1942 | seq_printf(m, "," MNTOPT_GRPID); | 1945 | seq_printf(m, "," MNTOPT_GRPID); |
| 1943 | 1946 | ||
