namei.c (10ce3cc919f50c2043b41ca968b43c26a3672600) namei.c (8de52778798fe39660a8d6b26f290e0c93202761)
1/*
2 * linux/fs/minix/namei.c
3 *
4 * Copyright (C) 1991, 1992 Linus Torvalds
5 */
6
7#include "minix.h"
8

--- 80 unchanged lines hidden (view full) ---

89 goto out;
90}
91
92static int minix_link(struct dentry * old_dentry, struct inode * dir,
93 struct dentry *dentry)
94{
95 struct inode *inode = old_dentry->d_inode;
96
1/*
2 * linux/fs/minix/namei.c
3 *
4 * Copyright (C) 1991, 1992 Linus Torvalds
5 */
6
7#include "minix.h"
8

--- 80 unchanged lines hidden (view full) ---

89 goto out;
90}
91
92static int minix_link(struct dentry * old_dentry, struct inode * dir,
93 struct dentry *dentry)
94{
95 struct inode *inode = old_dentry->d_inode;
96
97 if (inode->i_nlink >= minix_sb(inode->i_sb)->s_link_max)
98 return -EMLINK;
99
100 inode->i_ctime = CURRENT_TIME_SEC;
101 inode_inc_link_count(inode);
102 ihold(inode);
103 return add_nondir(dentry, inode);
104}
105
106static int minix_mkdir(struct inode * dir, struct dentry *dentry, umode_t mode)
107{
108 struct inode * inode;
97 inode->i_ctime = CURRENT_TIME_SEC;
98 inode_inc_link_count(inode);
99 ihold(inode);
100 return add_nondir(dentry, inode);
101}
102
103static int minix_mkdir(struct inode * dir, struct dentry *dentry, umode_t mode)
104{
105 struct inode * inode;
109 int err = -EMLINK;
106 int err;
110
107
111 if (dir->i_nlink >= minix_sb(dir->i_sb)->s_link_max)
112 goto out;
113
114 inode_inc_link_count(dir);
115
116 inode = minix_new_inode(dir, S_IFDIR | mode, &err);
117 if (!inode)
118 goto out_dir;
119
120 minix_set_inode(inode, 0);
121

--- 54 unchanged lines hidden (view full) ---

176 }
177 }
178 return err;
179}
180
181static int minix_rename(struct inode * old_dir, struct dentry *old_dentry,
182 struct inode * new_dir, struct dentry *new_dentry)
183{
108 inode_inc_link_count(dir);
109
110 inode = minix_new_inode(dir, S_IFDIR | mode, &err);
111 if (!inode)
112 goto out_dir;
113
114 minix_set_inode(inode, 0);
115

--- 54 unchanged lines hidden (view full) ---

170 }
171 }
172 return err;
173}
174
175static int minix_rename(struct inode * old_dir, struct dentry *old_dentry,
176 struct inode * new_dir, struct dentry *new_dentry)
177{
184 struct minix_sb_info * info = minix_sb(old_dir->i_sb);
185 struct inode * old_inode = old_dentry->d_inode;
186 struct inode * new_inode = new_dentry->d_inode;
187 struct page * dir_page = NULL;
188 struct minix_dir_entry * dir_de = NULL;
189 struct page * old_page;
190 struct minix_dir_entry * old_de;
191 int err = -ENOENT;
192

--- 21 unchanged lines hidden (view full) ---

214 if (!new_de)
215 goto out_dir;
216 minix_set_link(new_de, new_page, old_inode);
217 new_inode->i_ctime = CURRENT_TIME_SEC;
218 if (dir_de)
219 drop_nlink(new_inode);
220 inode_dec_link_count(new_inode);
221 } else {
178 struct inode * old_inode = old_dentry->d_inode;
179 struct inode * new_inode = new_dentry->d_inode;
180 struct page * dir_page = NULL;
181 struct minix_dir_entry * dir_de = NULL;
182 struct page * old_page;
183 struct minix_dir_entry * old_de;
184 int err = -ENOENT;
185

--- 21 unchanged lines hidden (view full) ---

207 if (!new_de)
208 goto out_dir;
209 minix_set_link(new_de, new_page, old_inode);
210 new_inode->i_ctime = CURRENT_TIME_SEC;
211 if (dir_de)
212 drop_nlink(new_inode);
213 inode_dec_link_count(new_inode);
214 } else {
222 if (dir_de) {
223 err = -EMLINK;
224 if (new_dir->i_nlink >= info->s_link_max)
225 goto out_dir;
226 }
227 err = minix_add_link(new_dentry, old_inode);
228 if (err)
229 goto out_dir;
230 if (dir_de)
231 inode_inc_link_count(new_dir);
232 }
233
234 minix_delete_entry(old_de, old_page);

--- 35 unchanged lines hidden ---
215 err = minix_add_link(new_dentry, old_inode);
216 if (err)
217 goto out_dir;
218 if (dir_de)
219 inode_inc_link_count(new_dir);
220 }
221
222 minix_delete_entry(old_de, old_page);

--- 35 unchanged lines hidden ---