diff options
| author | Nathan Scott <nathans@sgi.com> | 2006-03-30 22:04:17 -0500 |
|---|---|---|
| committer | Nathan Scott <nathans@sgi.com> | 2006-03-30 22:04:17 -0500 |
| commit | 764d1f89a5f2b914bc13b1b8b8920a600a5fba10 (patch) | |
| tree | 9ecbb80f69b1722930d785cda3d0f61b2112c98c | |
| parent | 4b4fa25ced2d719a06a3a63009bea1cf1fbedd55 (diff) | |
[XFS] Implement the silent parameter to fill_super, previously ignored.
SGI-PV: 951299
SGI-Modid: xfs-linux-melb:xfs-kern:25632a
Signed-off-by: Nathan Scott <nathans@sgi.com>
| -rw-r--r-- | fs/xfs/linux-2.6/xfs_super.c | 11 | ||||
| -rw-r--r-- | fs/xfs/xfs_clnt.h | 1 | ||||
| -rw-r--r-- | fs/xfs/xfs_error.h | 3 | ||||
| -rw-r--r-- | fs/xfs/xfs_mount.c | 71 | ||||
| -rw-r--r-- | fs/xfs/xfs_mount.h | 5 | ||||
| -rw-r--r-- | fs/xfs/xfs_vfsops.c | 5 |
6 files changed, 49 insertions, 47 deletions
diff --git a/fs/xfs/linux-2.6/xfs_super.c b/fs/xfs/linux-2.6/xfs_super.c index 1884300417e3..68f4793e8a11 100644 --- a/fs/xfs/linux-2.6/xfs_super.c +++ b/fs/xfs/linux-2.6/xfs_super.c | |||
| @@ -67,7 +67,8 @@ mempool_t *xfs_ioend_pool; | |||
| 67 | 67 | ||
| 68 | STATIC struct xfs_mount_args * | 68 | STATIC struct xfs_mount_args * |
| 69 | xfs_args_allocate( | 69 | xfs_args_allocate( |
| 70 | struct super_block *sb) | 70 | struct super_block *sb, |
| 71 | int silent) | ||
| 71 | { | 72 | { |
| 72 | struct xfs_mount_args *args; | 73 | struct xfs_mount_args *args; |
| 73 | 74 | ||
| @@ -80,8 +81,8 @@ xfs_args_allocate( | |||
| 80 | args->flags |= XFSMNT_DIRSYNC; | 81 | args->flags |= XFSMNT_DIRSYNC; |
| 81 | if (sb->s_flags & MS_SYNCHRONOUS) | 82 | if (sb->s_flags & MS_SYNCHRONOUS) |
| 82 | args->flags |= XFSMNT_WSYNC; | 83 | args->flags |= XFSMNT_WSYNC; |
| 83 | 84 | if (silent) | |
| 84 | /* Default to 32 bit inodes on Linux all the time */ | 85 | args->flags |= XFSMNT_QUIET; |
| 85 | args->flags |= XFSMNT_32BITINODES; | 86 | args->flags |= XFSMNT_32BITINODES; |
| 86 | 87 | ||
| 87 | return args; | 88 | return args; |
| @@ -719,7 +720,7 @@ xfs_fs_remount( | |||
| 719 | char *options) | 720 | char *options) |
| 720 | { | 721 | { |
| 721 | vfs_t *vfsp = vfs_from_sb(sb); | 722 | vfs_t *vfsp = vfs_from_sb(sb); |
| 722 | struct xfs_mount_args *args = xfs_args_allocate(sb); | 723 | struct xfs_mount_args *args = xfs_args_allocate(sb, 0); |
| 723 | int error; | 724 | int error; |
| 724 | 725 | ||
| 725 | VFS_PARSEARGS(vfsp, options, args, 1, error); | 726 | VFS_PARSEARGS(vfsp, options, args, 1, error); |
| @@ -825,7 +826,7 @@ xfs_fs_fill_super( | |||
| 825 | { | 826 | { |
| 826 | vnode_t *rootvp; | 827 | vnode_t *rootvp; |
| 827 | struct vfs *vfsp = vfs_allocate(sb); | 828 | struct vfs *vfsp = vfs_allocate(sb); |
| 828 | struct xfs_mount_args *args = xfs_args_allocate(sb); | 829 | struct xfs_mount_args *args = xfs_args_allocate(sb, silent); |
| 829 | struct kstatfs statvfs; | 830 | struct kstatfs statvfs; |
| 830 | int error, error2; | 831 | int error, error2; |
| 831 | 832 | ||
diff --git a/fs/xfs/xfs_clnt.h b/fs/xfs/xfs_clnt.h index 022fff62085b..5b7eb81453be 100644 --- a/fs/xfs/xfs_clnt.h +++ b/fs/xfs/xfs_clnt.h | |||
| @@ -68,6 +68,7 @@ struct xfs_mount_args { | |||
| 68 | * enforcement */ | 68 | * enforcement */ |
| 69 | #define XFSMNT_PQUOTAENF 0x00000040 /* IRIX project quota limit | 69 | #define XFSMNT_PQUOTAENF 0x00000040 /* IRIX project quota limit |
| 70 | * enforcement */ | 70 | * enforcement */ |
| 71 | #define XFSMNT_QUIET 0x00000080 /* don't report mount errors */ | ||
| 71 | #define XFSMNT_NOALIGN 0x00000200 /* don't allocate at | 72 | #define XFSMNT_NOALIGN 0x00000200 /* don't allocate at |
| 72 | * stripe boundaries*/ | 73 | * stripe boundaries*/ |
| 73 | #define XFSMNT_RETERR 0x00000400 /* return error to user */ | 74 | #define XFSMNT_RETERR 0x00000400 /* return error to user */ |
diff --git a/fs/xfs/xfs_error.h b/fs/xfs/xfs_error.h index 26b8e709a569..bc43163456ef 100644 --- a/fs/xfs/xfs_error.h +++ b/fs/xfs/xfs_error.h | |||
| @@ -186,4 +186,7 @@ extern void xfs_fs_cmn_err(int level, struct xfs_mount *mp, char *fmt, ...); | |||
| 186 | #define xfs_fs_repair_cmn_err(level, mp, fmt, args...) \ | 186 | #define xfs_fs_repair_cmn_err(level, mp, fmt, args...) \ |
| 187 | xfs_fs_cmn_err(level, mp, fmt " Unmount and run xfs_repair.", ## args) | 187 | xfs_fs_cmn_err(level, mp, fmt " Unmount and run xfs_repair.", ## args) |
| 188 | 188 | ||
| 189 | #define xfs_fs_mount_cmn_err(f, fmt, args...) \ | ||
| 190 | ((f & XFS_MFSI_QUIET)? cmn_err(CE_WARN, "XFS: " fmt, ## args) : (void)0) | ||
| 191 | |||
| 189 | #endif /* __XFS_ERROR_H__ */ | 192 | #endif /* __XFS_ERROR_H__ */ |
diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c index 72e7e78bfff8..049fabb7f7e0 100644 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c | |||
| @@ -213,7 +213,8 @@ xfs_mount_free( | |||
| 213 | STATIC int | 213 | STATIC int |
| 214 | xfs_mount_validate_sb( | 214 | xfs_mount_validate_sb( |
| 215 | xfs_mount_t *mp, | 215 | xfs_mount_t *mp, |
| 216 | xfs_sb_t *sbp) | 216 | xfs_sb_t *sbp, |
| 217 | int flags) | ||
| 217 | { | 218 | { |
| 218 | /* | 219 | /* |
| 219 | * If the log device and data device have the | 220 | * If the log device and data device have the |
| @@ -223,33 +224,29 @@ xfs_mount_validate_sb( | |||
| 223 | * a volume filesystem in a non-volume manner. | 224 | * a volume filesystem in a non-volume manner. |
| 224 | */ | 225 | */ |
| 225 | if (sbp->sb_magicnum != XFS_SB_MAGIC) { | 226 | if (sbp->sb_magicnum != XFS_SB_MAGIC) { |
| 226 | cmn_err(CE_WARN, "XFS: bad magic number"); | 227 | xfs_fs_mount_cmn_err(flags, "bad magic number"); |
| 227 | return XFS_ERROR(EWRONGFS); | 228 | return XFS_ERROR(EWRONGFS); |
| 228 | } | 229 | } |
| 229 | 230 | ||
| 230 | if (!XFS_SB_GOOD_VERSION(sbp)) { | 231 | if (!XFS_SB_GOOD_VERSION(sbp)) { |
| 231 | cmn_err(CE_WARN, "XFS: bad version"); | 232 | xfs_fs_mount_cmn_err(flags, "bad version"); |
| 232 | return XFS_ERROR(EWRONGFS); | 233 | return XFS_ERROR(EWRONGFS); |
| 233 | } | 234 | } |
| 234 | 235 | ||
| 235 | if (unlikely( | 236 | if (unlikely( |
| 236 | sbp->sb_logstart == 0 && mp->m_logdev_targp == mp->m_ddev_targp)) { | 237 | sbp->sb_logstart == 0 && mp->m_logdev_targp == mp->m_ddev_targp)) { |
| 237 | cmn_err(CE_WARN, | 238 | xfs_fs_mount_cmn_err(flags, |
| 238 | "XFS: filesystem is marked as having an external log; " | 239 | "filesystem is marked as having an external log; " |
| 239 | "specify logdev on the\nmount command line."); | 240 | "specify logdev on the\nmount command line."); |
| 240 | XFS_CORRUPTION_ERROR("xfs_mount_validate_sb(1)", | 241 | return XFS_ERROR(EINVAL); |
| 241 | XFS_ERRLEVEL_HIGH, mp, sbp); | ||
| 242 | return XFS_ERROR(EFSCORRUPTED); | ||
| 243 | } | 242 | } |
| 244 | 243 | ||
| 245 | if (unlikely( | 244 | if (unlikely( |
| 246 | sbp->sb_logstart != 0 && mp->m_logdev_targp != mp->m_ddev_targp)) { | 245 | sbp->sb_logstart != 0 && mp->m_logdev_targp != mp->m_ddev_targp)) { |
| 247 | cmn_err(CE_WARN, | 246 | xfs_fs_mount_cmn_err(flags, |
| 248 | "XFS: filesystem is marked as having an internal log; " | 247 | "filesystem is marked as having an internal log; " |
| 249 | "don't specify logdev on\nthe mount command line."); | 248 | "do not specify logdev on\nthe mount command line."); |
| 250 | XFS_CORRUPTION_ERROR("xfs_mount_validate_sb(2)", | 249 | return XFS_ERROR(EINVAL); |
| 251 | XFS_ERRLEVEL_HIGH, mp, sbp); | ||
| 252 | return XFS_ERROR(EFSCORRUPTED); | ||
| 253 | } | 250 | } |
| 254 | 251 | ||
| 255 | /* | 252 | /* |
| @@ -274,9 +271,7 @@ xfs_mount_validate_sb( | |||
| 274 | (sbp->sb_rextsize * sbp->sb_blocksize > XFS_MAX_RTEXTSIZE) || | 271 | (sbp->sb_rextsize * sbp->sb_blocksize > XFS_MAX_RTEXTSIZE) || |
| 275 | (sbp->sb_rextsize * sbp->sb_blocksize < XFS_MIN_RTEXTSIZE) || | 272 | (sbp->sb_rextsize * sbp->sb_blocksize < XFS_MIN_RTEXTSIZE) || |
| 276 | (sbp->sb_imax_pct > 100 || sbp->sb_imax_pct < 1))) { | 273 | (sbp->sb_imax_pct > 100 || sbp->sb_imax_pct < 1))) { |
| 277 | cmn_err(CE_WARN, "XFS: SB sanity check 1 failed"); | 274 | xfs_fs_mount_cmn_err(flags, "SB sanity check 1 failed"); |
| 278 | XFS_CORRUPTION_ERROR("xfs_mount_validate_sb(3)", | ||
| 279 | XFS_ERRLEVEL_LOW, mp, sbp); | ||
| 280 | return XFS_ERROR(EFSCORRUPTED); | 275 | return XFS_ERROR(EFSCORRUPTED); |
| 281 | } | 276 | } |
| 282 | 277 | ||
| @@ -289,9 +284,7 @@ xfs_mount_validate_sb( | |||
| 289 | (xfs_drfsbno_t)sbp->sb_agcount * sbp->sb_agblocks || | 284 | (xfs_drfsbno_t)sbp->sb_agcount * sbp->sb_agblocks || |
| 290 | sbp->sb_dblocks < (xfs_drfsbno_t)(sbp->sb_agcount - 1) * | 285 | sbp->sb_dblocks < (xfs_drfsbno_t)(sbp->sb_agcount - 1) * |
| 291 | sbp->sb_agblocks + XFS_MIN_AG_BLOCKS)) { | 286 | sbp->sb_agblocks + XFS_MIN_AG_BLOCKS)) { |
| 292 | cmn_err(CE_WARN, "XFS: SB sanity check 2 failed"); | 287 | xfs_fs_mount_cmn_err(flags, "SB sanity check 2 failed"); |
| 293 | XFS_ERROR_REPORT("xfs_mount_validate_sb(4)", | ||
| 294 | XFS_ERRLEVEL_LOW, mp); | ||
| 295 | return XFS_ERROR(EFSCORRUPTED); | 288 | return XFS_ERROR(EFSCORRUPTED); |
| 296 | } | 289 | } |
| 297 | 290 | ||
| @@ -307,15 +300,13 @@ xfs_mount_validate_sb( | |||
| 307 | (sbp->sb_dblocks << (sbp->sb_blocklog - BBSHIFT)) > UINT_MAX || | 300 | (sbp->sb_dblocks << (sbp->sb_blocklog - BBSHIFT)) > UINT_MAX || |
| 308 | (sbp->sb_rblocks << (sbp->sb_blocklog - BBSHIFT)) > UINT_MAX)) { | 301 | (sbp->sb_rblocks << (sbp->sb_blocklog - BBSHIFT)) > UINT_MAX)) { |
| 309 | #endif | 302 | #endif |
| 310 | cmn_err(CE_WARN, | 303 | xfs_fs_mount_cmn_err(flags, |
| 311 | "XFS: File system is too large to be mounted on this system."); | 304 | "file system too large to be mounted on this system."); |
| 312 | return XFS_ERROR(E2BIG); | 305 | return XFS_ERROR(E2BIG); |
| 313 | } | 306 | } |
| 314 | 307 | ||
| 315 | if (unlikely(sbp->sb_inprogress)) { | 308 | if (unlikely(sbp->sb_inprogress)) { |
| 316 | cmn_err(CE_WARN, "XFS: file system busy"); | 309 | xfs_fs_mount_cmn_err(flags, "file system busy"); |
| 317 | XFS_ERROR_REPORT("xfs_mount_validate_sb(5)", | ||
| 318 | XFS_ERRLEVEL_LOW, mp); | ||
| 319 | return XFS_ERROR(EFSCORRUPTED); | 310 | return XFS_ERROR(EFSCORRUPTED); |
| 320 | } | 311 | } |
| 321 | 312 | ||
| @@ -323,8 +314,8 @@ xfs_mount_validate_sb( | |||
| 323 | * Version 1 directory format has never worked on Linux. | 314 | * Version 1 directory format has never worked on Linux. |
| 324 | */ | 315 | */ |
| 325 | if (unlikely(!XFS_SB_VERSION_HASDIRV2(sbp))) { | 316 | if (unlikely(!XFS_SB_VERSION_HASDIRV2(sbp))) { |
| 326 | cmn_err(CE_WARN, | 317 | xfs_fs_mount_cmn_err(flags, |
| 327 | "XFS: Attempted to mount file system using version 1 directory format"); | 318 | "file system using version 1 directory format"); |
| 328 | return XFS_ERROR(ENOSYS); | 319 | return XFS_ERROR(ENOSYS); |
| 329 | } | 320 | } |
| 330 | 321 | ||
| @@ -332,11 +323,11 @@ xfs_mount_validate_sb( | |||
| 332 | * Until this is fixed only page-sized or smaller data blocks work. | 323 | * Until this is fixed only page-sized or smaller data blocks work. |
| 333 | */ | 324 | */ |
| 334 | if (unlikely(sbp->sb_blocksize > PAGE_SIZE)) { | 325 | if (unlikely(sbp->sb_blocksize > PAGE_SIZE)) { |
| 335 | cmn_err(CE_WARN, | 326 | xfs_fs_mount_cmn_err(flags, |
| 336 | "XFS: Attempted to mount file system with blocksize %d bytes", | 327 | "file system with blocksize %d bytes", |
| 337 | sbp->sb_blocksize); | 328 | sbp->sb_blocksize); |
| 338 | cmn_err(CE_WARN, | 329 | xfs_fs_mount_cmn_err(flags, |
| 339 | "XFS: Only page-sized (%ld) or less blocksizes currently work.", | 330 | "only pagesize (%ld) or less will currently work.", |
| 340 | PAGE_SIZE); | 331 | PAGE_SIZE); |
| 341 | return XFS_ERROR(ENOSYS); | 332 | return XFS_ERROR(ENOSYS); |
| 342 | } | 333 | } |
| @@ -484,7 +475,7 @@ xfs_xlatesb( | |||
| 484 | * Does the initial read of the superblock. | 475 | * Does the initial read of the superblock. |
| 485 | */ | 476 | */ |
| 486 | int | 477 | int |
| 487 | xfs_readsb(xfs_mount_t *mp) | 478 | xfs_readsb(xfs_mount_t *mp, int flags) |
| 488 | { | 479 | { |
| 489 | unsigned int sector_size; | 480 | unsigned int sector_size; |
| 490 | unsigned int extra_flags; | 481 | unsigned int extra_flags; |
| @@ -506,7 +497,7 @@ xfs_readsb(xfs_mount_t *mp) | |||
| 506 | bp = xfs_buf_read_flags(mp->m_ddev_targp, XFS_SB_DADDR, | 497 | bp = xfs_buf_read_flags(mp->m_ddev_targp, XFS_SB_DADDR, |
| 507 | BTOBB(sector_size), extra_flags); | 498 | BTOBB(sector_size), extra_flags); |
| 508 | if (!bp || XFS_BUF_ISERROR(bp)) { | 499 | if (!bp || XFS_BUF_ISERROR(bp)) { |
| 509 | cmn_err(CE_WARN, "XFS: SB read failed"); | 500 | xfs_fs_mount_cmn_err(flags, "SB read failed"); |
| 510 | error = bp ? XFS_BUF_GETERROR(bp) : ENOMEM; | 501 | error = bp ? XFS_BUF_GETERROR(bp) : ENOMEM; |
| 511 | goto fail; | 502 | goto fail; |
| 512 | } | 503 | } |
| @@ -520,9 +511,9 @@ xfs_readsb(xfs_mount_t *mp) | |||
| 520 | sbp = XFS_BUF_TO_SBP(bp); | 511 | sbp = XFS_BUF_TO_SBP(bp); |
| 521 | xfs_xlatesb(XFS_BUF_PTR(bp), &(mp->m_sb), 1, XFS_SB_ALL_BITS); | 512 | xfs_xlatesb(XFS_BUF_PTR(bp), &(mp->m_sb), 1, XFS_SB_ALL_BITS); |
| 522 | 513 | ||
| 523 | error = xfs_mount_validate_sb(mp, &(mp->m_sb)); | 514 | error = xfs_mount_validate_sb(mp, &(mp->m_sb), flags); |
| 524 | if (error) { | 515 | if (error) { |
| 525 | cmn_err(CE_WARN, "XFS: SB validate failed"); | 516 | xfs_fs_mount_cmn_err(flags, "SB validate failed"); |
| 526 | goto fail; | 517 | goto fail; |
| 527 | } | 518 | } |
| 528 | 519 | ||
| @@ -530,8 +521,8 @@ xfs_readsb(xfs_mount_t *mp) | |||
| 530 | * We must be able to do sector-sized and sector-aligned IO. | 521 | * We must be able to do sector-sized and sector-aligned IO. |
| 531 | */ | 522 | */ |
| 532 | if (sector_size > mp->m_sb.sb_sectsize) { | 523 | if (sector_size > mp->m_sb.sb_sectsize) { |
| 533 | cmn_err(CE_WARN, | 524 | xfs_fs_mount_cmn_err(flags, |
| 534 | "XFS: device supports only %u byte sectors (not %u)", | 525 | "device supports only %u byte sectors (not %u)", |
| 535 | sector_size, mp->m_sb.sb_sectsize); | 526 | sector_size, mp->m_sb.sb_sectsize); |
| 536 | error = ENOSYS; | 527 | error = ENOSYS; |
| 537 | goto fail; | 528 | goto fail; |
| @@ -548,7 +539,7 @@ xfs_readsb(xfs_mount_t *mp) | |||
| 548 | bp = xfs_buf_read_flags(mp->m_ddev_targp, XFS_SB_DADDR, | 539 | bp = xfs_buf_read_flags(mp->m_ddev_targp, XFS_SB_DADDR, |
| 549 | BTOBB(sector_size), extra_flags); | 540 | BTOBB(sector_size), extra_flags); |
| 550 | if (!bp || XFS_BUF_ISERROR(bp)) { | 541 | if (!bp || XFS_BUF_ISERROR(bp)) { |
| 551 | cmn_err(CE_WARN, "XFS: SB re-read failed"); | 542 | xfs_fs_mount_cmn_err(flags, "SB re-read failed"); |
| 552 | error = bp ? XFS_BUF_GETERROR(bp) : ENOMEM; | 543 | error = bp ? XFS_BUF_GETERROR(bp) : ENOMEM; |
| 553 | goto fail; | 544 | goto fail; |
| 554 | } | 545 | } |
| @@ -678,7 +669,7 @@ xfs_mountfs( | |||
| 678 | int error = 0; | 669 | int error = 0; |
| 679 | 670 | ||
| 680 | if (mp->m_sb_bp == NULL) { | 671 | if (mp->m_sb_bp == NULL) { |
| 681 | if ((error = xfs_readsb(mp))) { | 672 | if ((error = xfs_readsb(mp, mfsi_flags))) { |
| 682 | return error; | 673 | return error; |
| 683 | } | 674 | } |
| 684 | } | 675 | } |
diff --git a/fs/xfs/xfs_mount.h b/fs/xfs/xfs_mount.h index 66cbee79864e..668ad23fd37c 100644 --- a/fs/xfs/xfs_mount.h +++ b/fs/xfs/xfs_mount.h | |||
| @@ -510,9 +510,12 @@ xfs_preferred_iosize(xfs_mount_t *mp) | |||
| 510 | */ | 510 | */ |
| 511 | #define XFS_MFSI_SECOND 0x01 /* Secondary mount -- skip stuff */ | 511 | #define XFS_MFSI_SECOND 0x01 /* Secondary mount -- skip stuff */ |
| 512 | #define XFS_MFSI_CLIENT 0x02 /* Is a client -- skip lots of stuff */ | 512 | #define XFS_MFSI_CLIENT 0x02 /* Is a client -- skip lots of stuff */ |
| 513 | /* XFS_MFSI_RRINODES */ | ||
| 513 | #define XFS_MFSI_NOUNLINK 0x08 /* Skip unlinked inode processing in */ | 514 | #define XFS_MFSI_NOUNLINK 0x08 /* Skip unlinked inode processing in */ |
| 514 | /* log recovery */ | 515 | /* log recovery */ |
| 515 | #define XFS_MFSI_NO_QUOTACHECK 0x10 /* Skip quotacheck processing */ | 516 | #define XFS_MFSI_NO_QUOTACHECK 0x10 /* Skip quotacheck processing */ |
| 517 | /* XFS_MFSI_CONVERT_SUNIT */ | ||
| 518 | #define XFS_MFSI_QUIET 0x40 /* Be silent if mount errors found */ | ||
| 516 | 519 | ||
| 517 | /* | 520 | /* |
| 518 | * Macros for getting from mount to vfs and back. | 521 | * Macros for getting from mount to vfs and back. |
| @@ -581,7 +584,7 @@ extern int xfs_mod_incore_sb_unlocked(xfs_mount_t *, xfs_sb_field_t, | |||
| 581 | extern int xfs_mod_incore_sb_batch(xfs_mount_t *, xfs_mod_sb_t *, | 584 | extern int xfs_mod_incore_sb_batch(xfs_mount_t *, xfs_mod_sb_t *, |
| 582 | uint, int); | 585 | uint, int); |
| 583 | extern struct xfs_buf *xfs_getsb(xfs_mount_t *, int); | 586 | extern struct xfs_buf *xfs_getsb(xfs_mount_t *, int); |
| 584 | extern int xfs_readsb(xfs_mount_t *mp); | 587 | extern int xfs_readsb(xfs_mount_t *, int); |
| 585 | extern void xfs_freesb(xfs_mount_t *); | 588 | extern void xfs_freesb(xfs_mount_t *); |
| 586 | extern void xfs_do_force_shutdown(bhv_desc_t *, int, char *, int); | 589 | extern void xfs_do_force_shutdown(bhv_desc_t *, int, char *, int); |
| 587 | extern int xfs_syncsub(xfs_mount_t *, int, int, int *); | 590 | extern int xfs_syncsub(xfs_mount_t *, int, int, int *); |
diff --git a/fs/xfs/xfs_vfsops.c b/fs/xfs/xfs_vfsops.c index 504d2a80747a..89020c15d88a 100644 --- a/fs/xfs/xfs_vfsops.c +++ b/fs/xfs/xfs_vfsops.c | |||
| @@ -442,6 +442,9 @@ xfs_mount( | |||
| 442 | p = vfs_bhv_lookup(vfsp, VFS_POSITION_IO); | 442 | p = vfs_bhv_lookup(vfsp, VFS_POSITION_IO); |
| 443 | mp->m_io_ops = p ? *(xfs_ioops_t *) vfs_bhv_custom(p) : xfs_iocore_xfs; | 443 | mp->m_io_ops = p ? *(xfs_ioops_t *) vfs_bhv_custom(p) : xfs_iocore_xfs; |
| 444 | 444 | ||
| 445 | if (args->flags & XFSMNT_QUIET) | ||
| 446 | flags |= XFS_MFSI_QUIET; | ||
| 447 | |||
| 445 | /* | 448 | /* |
| 446 | * Open real time and log devices - order is important. | 449 | * Open real time and log devices - order is important. |
| 447 | */ | 450 | */ |
| @@ -492,7 +495,7 @@ xfs_mount( | |||
| 492 | error = xfs_start_flags(vfsp, args, mp); | 495 | error = xfs_start_flags(vfsp, args, mp); |
| 493 | if (error) | 496 | if (error) |
| 494 | goto error1; | 497 | goto error1; |
| 495 | error = xfs_readsb(mp); | 498 | error = xfs_readsb(mp, flags); |
| 496 | if (error) | 499 | if (error) |
| 497 | goto error1; | 500 | goto error1; |
| 498 | error = xfs_finish_flags(vfsp, args, mp); | 501 | error = xfs_finish_flags(vfsp, args, mp); |
