Loading fs/minix/namei.c +18 −30 Original line number Diff line number Diff line Loading @@ -6,18 +6,6 @@ #include "minix.h" static inline void inc_count(struct inode *inode) { inode->i_nlink++; mark_inode_dirty(inode); } static inline void dec_count(struct inode *inode) { inode->i_nlink--; mark_inode_dirty(inode); } static int add_nondir(struct dentry *dentry, struct inode *inode) { int err = minix_add_link(dentry, inode); Loading @@ -25,7 +13,7 @@ static int add_nondir(struct dentry *dentry, struct inode *inode) d_instantiate(dentry, inode); return 0; } dec_count(inode); inode_dec_link_count(inode); iput(inode); return err; } Loading Loading @@ -125,7 +113,7 @@ static int minix_symlink(struct inode * dir, struct dentry *dentry, return err; out_fail: dec_count(inode); inode_dec_link_count(inode); iput(inode); goto out; } Loading @@ -139,7 +127,7 @@ static int minix_link(struct dentry * old_dentry, struct inode * dir, return -EMLINK; inode->i_ctime = CURRENT_TIME_SEC; inc_count(inode); inode_inc_link_count(inode); atomic_inc(&inode->i_count); return add_nondir(dentry, inode); } Loading @@ -152,7 +140,7 @@ static int minix_mkdir(struct inode * dir, struct dentry *dentry, int mode) if (dir->i_nlink >= minix_sb(dir->i_sb)->s_link_max) goto out; inc_count(dir); inode_inc_link_count(dir); inode = minix_new_inode(dir, &err); if (!inode) Loading @@ -163,7 +151,7 @@ static int minix_mkdir(struct inode * dir, struct dentry *dentry, int mode) inode->i_mode |= S_ISGID; minix_set_inode(inode, 0); inc_count(inode); inode_inc_link_count(inode); err = minix_make_empty(inode, dir); if (err) Loading @@ -178,11 +166,11 @@ static int minix_mkdir(struct inode * dir, struct dentry *dentry, int mode) return err; out_fail: dec_count(inode); dec_count(inode); inode_dec_link_count(inode); inode_dec_link_count(inode); iput(inode); out_dir: dec_count(dir); inode_dec_link_count(dir); goto out; } Loading @@ -202,7 +190,7 @@ static int minix_unlink(struct inode * dir, struct dentry *dentry) goto end_unlink; inode->i_ctime = dir->i_ctime; dec_count(inode); inode_dec_link_count(inode); end_unlink: return err; } Loading @@ -215,8 +203,8 @@ static int minix_rmdir(struct inode * dir, struct dentry *dentry) if (minix_empty_dir(inode)) { err = minix_unlink(dir, dentry); if (!err) { dec_count(dir); dec_count(inode); inode_dec_link_count(dir); inode_dec_link_count(inode); } } return err; Loading Loading @@ -257,34 +245,34 @@ static int minix_rename(struct inode * old_dir, struct dentry *old_dentry, new_de = minix_find_entry(new_dentry, &new_page); if (!new_de) goto out_dir; inc_count(old_inode); inode_inc_link_count(old_inode); minix_set_link(new_de, new_page, old_inode); new_inode->i_ctime = CURRENT_TIME_SEC; if (dir_de) new_inode->i_nlink--; dec_count(new_inode); inode_dec_link_count(new_inode); } else { if (dir_de) { err = -EMLINK; if (new_dir->i_nlink >= info->s_link_max) goto out_dir; } inc_count(old_inode); inode_inc_link_count(old_inode); err = minix_add_link(new_dentry, old_inode); if (err) { dec_count(old_inode); inode_dec_link_count(old_inode); goto out_dir; } if (dir_de) inc_count(new_dir); inode_inc_link_count(new_dir); } minix_delete_entry(old_de, old_page); dec_count(old_inode); inode_dec_link_count(old_inode); if (dir_de) { minix_set_link(dir_de, dir_page, new_dir); dec_count(old_dir); inode_dec_link_count(old_dir); } return 0; Loading Loading
fs/minix/namei.c +18 −30 Original line number Diff line number Diff line Loading @@ -6,18 +6,6 @@ #include "minix.h" static inline void inc_count(struct inode *inode) { inode->i_nlink++; mark_inode_dirty(inode); } static inline void dec_count(struct inode *inode) { inode->i_nlink--; mark_inode_dirty(inode); } static int add_nondir(struct dentry *dentry, struct inode *inode) { int err = minix_add_link(dentry, inode); Loading @@ -25,7 +13,7 @@ static int add_nondir(struct dentry *dentry, struct inode *inode) d_instantiate(dentry, inode); return 0; } dec_count(inode); inode_dec_link_count(inode); iput(inode); return err; } Loading Loading @@ -125,7 +113,7 @@ static int minix_symlink(struct inode * dir, struct dentry *dentry, return err; out_fail: dec_count(inode); inode_dec_link_count(inode); iput(inode); goto out; } Loading @@ -139,7 +127,7 @@ static int minix_link(struct dentry * old_dentry, struct inode * dir, return -EMLINK; inode->i_ctime = CURRENT_TIME_SEC; inc_count(inode); inode_inc_link_count(inode); atomic_inc(&inode->i_count); return add_nondir(dentry, inode); } Loading @@ -152,7 +140,7 @@ static int minix_mkdir(struct inode * dir, struct dentry *dentry, int mode) if (dir->i_nlink >= minix_sb(dir->i_sb)->s_link_max) goto out; inc_count(dir); inode_inc_link_count(dir); inode = minix_new_inode(dir, &err); if (!inode) Loading @@ -163,7 +151,7 @@ static int minix_mkdir(struct inode * dir, struct dentry *dentry, int mode) inode->i_mode |= S_ISGID; minix_set_inode(inode, 0); inc_count(inode); inode_inc_link_count(inode); err = minix_make_empty(inode, dir); if (err) Loading @@ -178,11 +166,11 @@ static int minix_mkdir(struct inode * dir, struct dentry *dentry, int mode) return err; out_fail: dec_count(inode); dec_count(inode); inode_dec_link_count(inode); inode_dec_link_count(inode); iput(inode); out_dir: dec_count(dir); inode_dec_link_count(dir); goto out; } Loading @@ -202,7 +190,7 @@ static int minix_unlink(struct inode * dir, struct dentry *dentry) goto end_unlink; inode->i_ctime = dir->i_ctime; dec_count(inode); inode_dec_link_count(inode); end_unlink: return err; } Loading @@ -215,8 +203,8 @@ static int minix_rmdir(struct inode * dir, struct dentry *dentry) if (minix_empty_dir(inode)) { err = minix_unlink(dir, dentry); if (!err) { dec_count(dir); dec_count(inode); inode_dec_link_count(dir); inode_dec_link_count(inode); } } return err; Loading Loading @@ -257,34 +245,34 @@ static int minix_rename(struct inode * old_dir, struct dentry *old_dentry, new_de = minix_find_entry(new_dentry, &new_page); if (!new_de) goto out_dir; inc_count(old_inode); inode_inc_link_count(old_inode); minix_set_link(new_de, new_page, old_inode); new_inode->i_ctime = CURRENT_TIME_SEC; if (dir_de) new_inode->i_nlink--; dec_count(new_inode); inode_dec_link_count(new_inode); } else { if (dir_de) { err = -EMLINK; if (new_dir->i_nlink >= info->s_link_max) goto out_dir; } inc_count(old_inode); inode_inc_link_count(old_inode); err = minix_add_link(new_dentry, old_inode); if (err) { dec_count(old_inode); inode_dec_link_count(old_inode); goto out_dir; } if (dir_de) inc_count(new_dir); inode_inc_link_count(new_dir); } minix_delete_entry(old_de, old_page); dec_count(old_inode); inode_dec_link_count(old_inode); if (dir_de) { minix_set_link(dir_de, dir_page, new_dir); dec_count(old_dir); inode_dec_link_count(old_dir); } return 0; Loading