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/exofs | |
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/exofs')
-rw-r--r-- | fs/exofs/namei.c | 13 | ||||
-rw-r--r-- | fs/exofs/super.c | 4 |
2 files changed, 3 insertions, 14 deletions
diff --git a/fs/exofs/namei.c b/fs/exofs/namei.c index 9dbf0c301030..fc7161d6bf6b 100644 --- a/fs/exofs/namei.c +++ b/fs/exofs/namei.c | |||
@@ -143,9 +143,6 @@ static int exofs_link(struct dentry *old_dentry, struct inode *dir, | |||
143 | { | 143 | { |
144 | struct inode *inode = old_dentry->d_inode; | 144 | struct inode *inode = old_dentry->d_inode; |
145 | 145 | ||
146 | if (inode->i_nlink >= EXOFS_LINK_MAX) | ||
147 | return -EMLINK; | ||
148 | |||
149 | inode->i_ctime = CURRENT_TIME; | 146 | inode->i_ctime = CURRENT_TIME; |
150 | inode_inc_link_count(inode); | 147 | inode_inc_link_count(inode); |
151 | ihold(inode); | 148 | ihold(inode); |
@@ -156,10 +153,7 @@ static int exofs_link(struct dentry *old_dentry, struct inode *dir, | |||
156 | static int exofs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) | 153 | static int exofs_mkdir(struct inode *dir, struct dentry *dentry, umode_t mode) |
157 | { | 154 | { |
158 | struct inode *inode; | 155 | struct inode *inode; |
159 | int err = -EMLINK; | 156 | int err; |
160 | |||
161 | if (dir->i_nlink >= EXOFS_LINK_MAX) | ||
162 | goto out; | ||
163 | 157 | ||
164 | inode_inc_link_count(dir); | 158 | inode_inc_link_count(dir); |
165 | 159 | ||
@@ -275,11 +269,6 @@ static int exofs_rename(struct inode *old_dir, struct dentry *old_dentry, | |||
275 | if (err) | 269 | if (err) |
276 | goto out_dir; | 270 | goto out_dir; |
277 | } else { | 271 | } else { |
278 | if (dir_de) { | ||
279 | err = -EMLINK; | ||
280 | if (new_dir->i_nlink >= EXOFS_LINK_MAX) | ||
281 | goto out_dir; | ||
282 | } | ||
283 | err = exofs_add_link(new_dentry, old_inode); | 272 | err = exofs_add_link(new_dentry, old_inode); |
284 | if (err) | 273 | if (err) |
285 | goto out_dir; | 274 | goto out_dir; |
diff --git a/fs/exofs/super.c b/fs/exofs/super.c index d22cd168c6ee..7f2b590a36b7 100644 --- a/fs/exofs/super.c +++ b/fs/exofs/super.c | |||
@@ -754,6 +754,7 @@ static int exofs_fill_super(struct super_block *sb, void *data, int silent) | |||
754 | sb->s_blocksize = EXOFS_BLKSIZE; | 754 | sb->s_blocksize = EXOFS_BLKSIZE; |
755 | sb->s_blocksize_bits = EXOFS_BLKSHIFT; | 755 | sb->s_blocksize_bits = EXOFS_BLKSHIFT; |
756 | sb->s_maxbytes = MAX_LFS_FILESIZE; | 756 | sb->s_maxbytes = MAX_LFS_FILESIZE; |
757 | sb->s_max_links = EXOFS_LINK_MAX; | ||
757 | atomic_set(&sbi->s_curr_pending, 0); | 758 | atomic_set(&sbi->s_curr_pending, 0); |
758 | sb->s_bdev = NULL; | 759 | sb->s_bdev = NULL; |
759 | sb->s_dev = 0; | 760 | sb->s_dev = 0; |
@@ -818,9 +819,8 @@ static int exofs_fill_super(struct super_block *sb, void *data, int silent) | |||
818 | ret = PTR_ERR(root); | 819 | ret = PTR_ERR(root); |
819 | goto free_sbi; | 820 | goto free_sbi; |
820 | } | 821 | } |
821 | sb->s_root = d_alloc_root(root); | 822 | sb->s_root = d_make_root(root); |
822 | if (!sb->s_root) { | 823 | if (!sb->s_root) { |
823 | iput(root); | ||
824 | EXOFS_ERR("ERROR: get root inode failed\n"); | 824 | EXOFS_ERR("ERROR: get root inode failed\n"); |
825 | ret = -ENOMEM; | 825 | ret = -ENOMEM; |
826 | goto free_sbi; | 826 | goto free_sbi; |