diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-21 16:36:41 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-21 16:36:41 -0400 |
commit | e2a0883e4071237d09b604a342c28b96b44a04b3 (patch) | |
tree | aa56f4d376b5eb1c32358c19c2669c2a94e0e1fd /fs/ocfs2 | |
parent | 3a990a52f9f25f45469e272017a31e7a3fda60ed (diff) | |
parent | 07c0c5d8b8c122b2f2df9ee574ac3083daefc981 (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull vfs pile 1 from Al Viro:
"This is _not_ all; in particular, Miklos' and Jan's stuff is not there
yet."
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (64 commits)
ext4: initialization of ext4_li_mtx needs to be done earlier
debugfs-related mode_t whack-a-mole
hfsplus: add an ioctl to bless files
hfsplus: change finder_info to u32
hfsplus: initialise userflags
qnx4: new helper - try_extent()
qnx4: get rid of qnx4_bread/qnx4_getblk
take removal of PF_FORKNOEXEC to flush_old_exec()
trim includes in inode.c
um: uml_dup_mmap() relies on ->mmap_sem being held, but activate_mm() doesn't hold it
um: embed ->stub_pages[] into mmu_context
gadgetfs: list_for_each_safe() misuse
ocfs2: fix leaks on failure exits in module_init
ecryptfs: make register_filesystem() the last potential failure exit
ntfs: forgets to unregister sysctls on register_filesystem() failure
logfs: missing cleanup on register_filesystem() failure
jfs: mising cleanup on register_filesystem() failure
make configfs_pin_fs() return root dentry on success
configfs: configfs_create_dir() has parent dentry in dentry->d_parent
configfs: sanitize configfs_create()
...
Diffstat (limited to 'fs/ocfs2')
-rw-r--r-- | fs/ocfs2/dlmfs/dlmfs.c | 14 | ||||
-rw-r--r-- | fs/ocfs2/super.c | 51 |
2 files changed, 27 insertions, 38 deletions
diff --git a/fs/ocfs2/dlmfs/dlmfs.c b/fs/ocfs2/dlmfs/dlmfs.c index abfac0d7ae9c..3b5825ef3193 100644 --- a/fs/ocfs2/dlmfs/dlmfs.c +++ b/fs/ocfs2/dlmfs/dlmfs.c | |||
@@ -582,24 +582,14 @@ static int dlmfs_fill_super(struct super_block * sb, | |||
582 | void * data, | 582 | void * data, |
583 | int silent) | 583 | int silent) |
584 | { | 584 | { |
585 | struct inode * inode; | ||
586 | struct dentry * root; | ||
587 | |||
588 | sb->s_maxbytes = MAX_LFS_FILESIZE; | 585 | sb->s_maxbytes = MAX_LFS_FILESIZE; |
589 | sb->s_blocksize = PAGE_CACHE_SIZE; | 586 | sb->s_blocksize = PAGE_CACHE_SIZE; |
590 | sb->s_blocksize_bits = PAGE_CACHE_SHIFT; | 587 | sb->s_blocksize_bits = PAGE_CACHE_SHIFT; |
591 | sb->s_magic = DLMFS_MAGIC; | 588 | sb->s_magic = DLMFS_MAGIC; |
592 | sb->s_op = &dlmfs_ops; | 589 | sb->s_op = &dlmfs_ops; |
593 | inode = dlmfs_get_root_inode(sb); | 590 | sb->s_root = d_make_root(dlmfs_get_root_inode(sb)); |
594 | if (!inode) | 591 | if (!sb->s_root) |
595 | return -ENOMEM; | ||
596 | |||
597 | root = d_alloc_root(inode); | ||
598 | if (!root) { | ||
599 | iput(inode); | ||
600 | return -ENOMEM; | 592 | return -ENOMEM; |
601 | } | ||
602 | sb->s_root = root; | ||
603 | return 0; | 593 | return 0; |
604 | } | 594 | } |
605 | 595 | ||
diff --git a/fs/ocfs2/super.c b/fs/ocfs2/super.c index 604e12c4e979..68f4541c2db9 100644 --- a/fs/ocfs2/super.c +++ b/fs/ocfs2/super.c | |||
@@ -1154,19 +1154,19 @@ static int ocfs2_fill_super(struct super_block *sb, void *data, int silent) | |||
1154 | } | 1154 | } |
1155 | 1155 | ||
1156 | status = ocfs2_mount_volume(sb); | 1156 | status = ocfs2_mount_volume(sb); |
1157 | if (osb->root_inode) | ||
1158 | inode = igrab(osb->root_inode); | ||
1159 | |||
1160 | if (status < 0) | 1157 | if (status < 0) |
1161 | goto read_super_error; | 1158 | goto read_super_error; |
1162 | 1159 | ||
1160 | if (osb->root_inode) | ||
1161 | inode = igrab(osb->root_inode); | ||
1162 | |||
1163 | if (!inode) { | 1163 | if (!inode) { |
1164 | status = -EIO; | 1164 | status = -EIO; |
1165 | mlog_errno(status); | 1165 | mlog_errno(status); |
1166 | goto read_super_error; | 1166 | goto read_super_error; |
1167 | } | 1167 | } |
1168 | 1168 | ||
1169 | root = d_alloc_root(inode); | 1169 | root = d_make_root(inode); |
1170 | if (!root) { | 1170 | if (!root) { |
1171 | status = -ENOMEM; | 1171 | status = -ENOMEM; |
1172 | mlog_errno(status); | 1172 | mlog_errno(status); |
@@ -1220,9 +1220,6 @@ static int ocfs2_fill_super(struct super_block *sb, void *data, int silent) | |||
1220 | read_super_error: | 1220 | read_super_error: |
1221 | brelse(bh); | 1221 | brelse(bh); |
1222 | 1222 | ||
1223 | if (inode) | ||
1224 | iput(inode); | ||
1225 | |||
1226 | if (osb) { | 1223 | if (osb) { |
1227 | atomic_set(&osb->vol_state, VOLUME_DISABLED); | 1224 | atomic_set(&osb->vol_state, VOLUME_DISABLED); |
1228 | wake_up(&osb->osb_mount_event); | 1225 | wake_up(&osb->osb_mount_event); |
@@ -1627,21 +1624,17 @@ static int __init ocfs2_init(void) | |||
1627 | init_waitqueue_head(&ocfs2__ioend_wq[i]); | 1624 | init_waitqueue_head(&ocfs2__ioend_wq[i]); |
1628 | 1625 | ||
1629 | status = init_ocfs2_uptodate_cache(); | 1626 | status = init_ocfs2_uptodate_cache(); |
1630 | if (status < 0) { | 1627 | if (status < 0) |
1631 | mlog_errno(status); | 1628 | goto out1; |
1632 | goto leave; | ||
1633 | } | ||
1634 | 1629 | ||
1635 | status = ocfs2_initialize_mem_caches(); | 1630 | status = ocfs2_initialize_mem_caches(); |
1636 | if (status < 0) { | 1631 | if (status < 0) |
1637 | mlog_errno(status); | 1632 | goto out2; |
1638 | goto leave; | ||
1639 | } | ||
1640 | 1633 | ||
1641 | ocfs2_wq = create_singlethread_workqueue("ocfs2_wq"); | 1634 | ocfs2_wq = create_singlethread_workqueue("ocfs2_wq"); |
1642 | if (!ocfs2_wq) { | 1635 | if (!ocfs2_wq) { |
1643 | status = -ENOMEM; | 1636 | status = -ENOMEM; |
1644 | goto leave; | 1637 | goto out3; |
1645 | } | 1638 | } |
1646 | 1639 | ||
1647 | ocfs2_debugfs_root = debugfs_create_dir("ocfs2", NULL); | 1640 | ocfs2_debugfs_root = debugfs_create_dir("ocfs2", NULL); |
@@ -1653,17 +1646,23 @@ static int __init ocfs2_init(void) | |||
1653 | ocfs2_set_locking_protocol(); | 1646 | ocfs2_set_locking_protocol(); |
1654 | 1647 | ||
1655 | status = register_quota_format(&ocfs2_quota_format); | 1648 | status = register_quota_format(&ocfs2_quota_format); |
1656 | leave: | 1649 | if (status < 0) |
1657 | if (status < 0) { | 1650 | goto out4; |
1658 | ocfs2_free_mem_caches(); | 1651 | status = register_filesystem(&ocfs2_fs_type); |
1659 | exit_ocfs2_uptodate_cache(); | 1652 | if (!status) |
1660 | mlog_errno(status); | 1653 | return 0; |
1661 | } | ||
1662 | 1654 | ||
1663 | if (status >= 0) { | 1655 | unregister_quota_format(&ocfs2_quota_format); |
1664 | return register_filesystem(&ocfs2_fs_type); | 1656 | out4: |
1665 | } else | 1657 | destroy_workqueue(ocfs2_wq); |
1666 | return -1; | 1658 | debugfs_remove(ocfs2_debugfs_root); |
1659 | out3: | ||
1660 | ocfs2_free_mem_caches(); | ||
1661 | out2: | ||
1662 | exit_ocfs2_uptodate_cache(); | ||
1663 | out1: | ||
1664 | mlog_errno(status); | ||
1665 | return status; | ||
1667 | } | 1666 | } |
1668 | 1667 | ||
1669 | static void __exit ocfs2_exit(void) | 1668 | static void __exit ocfs2_exit(void) |