namei.c (10ce3cc919f50c2043b41ca968b43c26a3672600) | namei.c (8de52778798fe39660a8d6b26f290e0c93202761) |
---|---|
1/* 2 * linux/fs/sysv/namei.c 3 * 4 * minix/namei.c 5 * Copyright (C) 1991, 1992 Linus Torvalds 6 * 7 * coh/namei.c 8 * Copyright (C) 1993 Pascal Haible, Bruno Haible --- 107 unchanged lines hidden (view full) --- 116 goto out; 117} 118 119static int sysv_link(struct dentry * old_dentry, struct inode * dir, 120 struct dentry * dentry) 121{ 122 struct inode *inode = old_dentry->d_inode; 123 | 1/* 2 * linux/fs/sysv/namei.c 3 * 4 * minix/namei.c 5 * Copyright (C) 1991, 1992 Linus Torvalds 6 * 7 * coh/namei.c 8 * Copyright (C) 1993 Pascal Haible, Bruno Haible --- 107 unchanged lines hidden (view full) --- 116 goto out; 117} 118 119static int sysv_link(struct dentry * old_dentry, struct inode * dir, 120 struct dentry * dentry) 121{ 122 struct inode *inode = old_dentry->d_inode; 123 |
124 if (inode->i_nlink >= SYSV_SB(inode->i_sb)->s_link_max) 125 return -EMLINK; 126 | |
127 inode->i_ctime = CURRENT_TIME_SEC; 128 inode_inc_link_count(inode); 129 ihold(inode); 130 131 return add_nondir(dentry, inode); 132} 133 134static int sysv_mkdir(struct inode * dir, struct dentry *dentry, umode_t mode) 135{ 136 struct inode * inode; | 124 inode->i_ctime = CURRENT_TIME_SEC; 125 inode_inc_link_count(inode); 126 ihold(inode); 127 128 return add_nondir(dentry, inode); 129} 130 131static int sysv_mkdir(struct inode * dir, struct dentry *dentry, umode_t mode) 132{ 133 struct inode * inode; |
137 int err = -EMLINK; | 134 int err; |
138 | 135 |
139 if (dir->i_nlink >= SYSV_SB(dir->i_sb)->s_link_max) 140 goto out; | |
141 inode_inc_link_count(dir); 142 143 inode = sysv_new_inode(dir, S_IFDIR|mode); 144 err = PTR_ERR(inode); 145 if (IS_ERR(inode)) 146 goto out_dir; 147 148 sysv_set_inode(inode, 0); --- 97 unchanged lines hidden (view full) --- 246 if (!new_de) 247 goto out_dir; 248 sysv_set_link(new_de, new_page, old_inode); 249 new_inode->i_ctime = CURRENT_TIME_SEC; 250 if (dir_de) 251 drop_nlink(new_inode); 252 inode_dec_link_count(new_inode); 253 } else { | 136 inode_inc_link_count(dir); 137 138 inode = sysv_new_inode(dir, S_IFDIR|mode); 139 err = PTR_ERR(inode); 140 if (IS_ERR(inode)) 141 goto out_dir; 142 143 sysv_set_inode(inode, 0); --- 97 unchanged lines hidden (view full) --- 241 if (!new_de) 242 goto out_dir; 243 sysv_set_link(new_de, new_page, old_inode); 244 new_inode->i_ctime = CURRENT_TIME_SEC; 245 if (dir_de) 246 drop_nlink(new_inode); 247 inode_dec_link_count(new_inode); 248 } else { |
254 if (dir_de) { 255 err = -EMLINK; 256 if (new_dir->i_nlink >= SYSV_SB(new_dir->i_sb)->s_link_max) 257 goto out_dir; 258 } | |
259 err = sysv_add_link(new_dentry, old_inode); 260 if (err) 261 goto out_dir; 262 if (dir_de) 263 inode_inc_link_count(new_dir); 264 } 265 266 sysv_delete_entry(old_de, old_page); --- 35 unchanged lines hidden --- | 249 err = sysv_add_link(new_dentry, old_inode); 250 if (err) 251 goto out_dir; 252 if (dir_de) 253 inode_inc_link_count(new_dir); 254 } 255 256 sysv_delete_entry(old_de, old_page); --- 35 unchanged lines hidden --- |