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