diff options
-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); |