Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 243206
b: refs/heads/master
c: 704b290
h: refs/heads/master
v: v3
  • Loading branch information
Dave Chinner authored and Dave Chinner committed Mar 25, 2011
1 parent 832ffda commit b9032d5
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 11 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 7401aafd5019d32a888e5f27332cf580945574bf
refs/heads/master: 704b2907c2d47ceb187c0e25a6bbc2174b198f2f
34 changes: 24 additions & 10 deletions trunk/fs/xfs/linux-2.6/xfs_super.c
Original file line number Diff line number Diff line change
Expand Up @@ -1539,17 +1539,31 @@ xfs_fs_fill_super(
if (error)
goto out_free_sb;

error = xfs_mountfs(mp);
if (error)
goto out_filestream_unmount;

/*
* we must configure the block size in the superblock before we run the
* full mount process as the mount process can lookup and cache inodes.
* For the same reason we must also initialise the syncd and register
* the inode cache shrinker so that inodes can be reclaimed during
* operations like a quotacheck that iterate all inodes in the
* filesystem.
*/
sb->s_magic = XFS_SB_MAGIC;
sb->s_blocksize = mp->m_sb.sb_blocksize;
sb->s_blocksize_bits = ffs(sb->s_blocksize) - 1;
sb->s_maxbytes = xfs_max_file_offset(sb->s_blocksize_bits);
sb->s_time_gran = 1;
set_posix_acl_flag(sb);

error = xfs_syncd_init(mp);
if (error)
goto out_filestream_unmount;

xfs_inode_shrinker_register(mp);

error = xfs_mountfs(mp);
if (error)
goto out_syncd_stop;

root = igrab(VFS_I(mp->m_rootip));
if (!root) {
error = ENOENT;
Expand All @@ -1565,14 +1579,11 @@ xfs_fs_fill_super(
goto fail_vnrele;
}

error = xfs_syncd_init(mp);
if (error)
goto fail_vnrele;

xfs_inode_shrinker_register(mp);

return 0;

out_syncd_stop:
xfs_inode_shrinker_unregister(mp);
xfs_syncd_stop(mp);
out_filestream_unmount:
xfs_filestream_unmount(mp);
out_free_sb:
Expand All @@ -1596,6 +1607,9 @@ xfs_fs_fill_super(
}

fail_unmount:
xfs_inode_shrinker_unregister(mp);
xfs_syncd_stop(mp);

/*
* Blow away any referenced inode in the filestreams cache.
* This can and will cause log traffic as inodes go inactive
Expand Down

0 comments on commit b9032d5

Please sign in to comment.