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 ---