cregit-Linux how code gets into the kernel

Release 4.10 fs/minix/namei.c

Directory: fs/minix
/*
 *  linux/fs/minix/namei.c
 *
 *  Copyright (C) 1991, 1992  Linus Torvalds
 */

#include "minix.h"


static int add_nondir(struct dentry *dentry, struct inode *inode) { int err = minix_add_link(dentry, inode); if (!err) { d_instantiate(dentry, inode); return 0; } inode_dec_link_count(inode); iput(inode); return err; }

Contributors

PersonTokensPropCommitsCommitProp
linus torvaldslinus torvalds3053.57%116.67%
pre-gitpre-git2544.64%466.67%
alexey dobriyanalexey dobriyan11.79%116.67%
Total56100.00%6100.00%


static struct dentry *minix_lookup(struct inode * dir, struct dentry *dentry, unsigned int flags) { struct inode * inode = NULL; ino_t ino; if (dentry->d_name.len > minix_sb(dir->i_sb)->s_namelen) return ERR_PTR(-ENAMETOOLONG); ino = minix_inode_by_name(dentry); if (ino) { inode = minix_iget(dir->i_sb, ino); if (IS_ERR(inode)) return ERR_CAST(inode); } d_add(dentry, inode); return NULL; }

Contributors

PersonTokensPropCommitsCommitProp
pre-gitpre-git6664.08%654.55%
linus torvaldslinus torvalds2423.30%19.09%
david howellsdavid howells65.83%19.09%
brian gerstbrian gerst32.91%19.09%
al viroal viro32.91%19.09%
trond myklebusttrond myklebust10.97%19.09%
Total103100.00%11100.00%


static int minix_mknod(struct inode * dir, struct dentry *dentry, umode_t mode, dev_t rdev) { int error; struct inode *inode; if (!old_valid_dev(rdev)) return -EINVAL; inode = minix_new_inode(dir, mode, &error); if (inode) { minix_set_inode(inode, rdev); mark_inode_dirty(inode); error = add_nondir(dentry, inode); } return error; }

Contributors

PersonTokensPropCommitsCommitProp
linus torvaldslinus torvalds5160.71%114.29%
al viroal viro1720.24%228.57%
pre-gitpre-git1315.48%228.57%
dmitriy monakhovdmitriy monakhov22.38%114.29%
andries brouwerandries brouwer11.19%114.29%
Total84100.00%7100.00%


static int minix_tmpfile(struct inode *dir, struct dentry *dentry, umode_t mode) { int error; struct inode *inode = minix_new_inode(dir, mode, &error); if (inode) { minix_set_inode(inode, 0); mark_inode_dirty(inode); d_tmpfile(dentry, inode); } return error; }

Contributors

PersonTokensPropCommitsCommitProp
al viroal viro65100.00%1100.00%
Total65100.00%1100.00%


static int minix_create(struct inode *dir, struct dentry *dentry, umode_t mode, bool excl) { return minix_mknod(dir, dentry, mode, 0); }

Contributors

PersonTokensPropCommitsCommitProp
linus torvaldslinus torvalds2470.59%116.67%
pre-gitpre-git617.65%233.33%
al viroal viro38.82%233.33%
trond myklebusttrond myklebust12.94%116.67%
Total34100.00%6100.00%


static int minix_symlink(struct inode * dir, struct dentry *dentry, const char * symname) { int err = -ENAMETOOLONG; int i = strlen(symname)+1; struct inode * inode; if (i > dir->i_sb->s_blocksize) goto out; inode = minix_new_inode(dir, S_IFLNK | 0777, &err); if (!inode) goto out; minix_set_inode(inode, 0); err = page_symlink(inode, symname, i); if (err) goto out_fail; err = add_nondir(dentry, inode); out: return err; out_fail: inode_dec_link_count(inode); iput(inode); goto out; }

Contributors

PersonTokensPropCommitsCommitProp
linus torvaldslinus torvalds7859.54%110.00%
pre-gitpre-git4735.88%660.00%
dmitriy monakhovdmitriy monakhov43.05%110.00%
andrew mortonandrew morton10.76%110.00%
alexey dobriyanalexey dobriyan10.76%110.00%
Total131100.00%10100.00%


static int minix_link(struct dentry * old_dentry, struct inode * dir, struct dentry *dentry) { struct inode *inode = d_inode(old_dentry); inode->i_ctime = current_time(inode); inode_inc_link_count(inode); ihold(inode); return add_nondir(dentry, inode); }

Contributors

PersonTokensPropCommitsCommitProp
pre-gitpre-git3458.62%654.55%
linus torvaldslinus torvalds1525.86%19.09%
deepa dinamanideepa dinamani46.90%19.09%
david howellsdavid howells35.17%19.09%
alexey dobriyanalexey dobriyan11.72%19.09%
al viroal viro11.72%19.09%
Total58100.00%11100.00%


static int minix_mkdir(struct inode * dir, struct dentry *dentry, umode_t mode) { struct inode * inode; int err; inode_inc_link_count(dir); inode = minix_new_inode(dir, S_IFDIR | mode, &err); if (!inode) goto out_dir; minix_set_inode(inode, 0); inode_inc_link_count(inode); err = minix_make_empty(inode, dir); if (err) goto out_fail; err = minix_add_link(dentry, inode); if (err) goto out_fail; d_instantiate(dentry, inode); out: return err; out_fail: inode_dec_link_count(inode); inode_dec_link_count(inode); iput(inode); out_dir: inode_dec_link_count(dir); goto out; }

Contributors

PersonTokensPropCommitsCommitProp
pre-gitpre-git7957.66%861.54%
linus torvaldslinus torvalds4835.04%17.69%
alexey dobriyanalexey dobriyan53.65%17.69%
dmitriy monakhovdmitriy monakhov21.46%17.69%
jorge boncomptejorge boncompte21.46%17.69%
al viroal viro10.73%17.69%
Total137100.00%13100.00%


static int minix_unlink(struct inode * dir, struct dentry *dentry) { int err = -ENOENT; struct inode * inode = d_inode(dentry); struct page * page; struct minix_dir_entry * de; de = minix_find_entry(dentry, &page); if (!de) goto end_unlink; err = minix_delete_entry(de, page); if (err) goto end_unlink; inode->i_ctime = dir->i_ctime; inode_dec_link_count(inode); end_unlink: return err; }

Contributors

PersonTokensPropCommitsCommitProp
linus torvaldslinus torvalds7984.04%120.00%
pre-gitpre-git1111.70%240.00%
david howellsdavid howells33.19%120.00%
alexey dobriyanalexey dobriyan11.06%120.00%
Total94100.00%5100.00%


static int minix_rmdir(struct inode * dir, struct dentry *dentry) { struct inode * inode = d_inode(dentry); int err = -ENOTEMPTY; if (minix_empty_dir(inode)) { err = minix_unlink(dir, dentry); if (!err) { inode_dec_link_count(dir); inode_dec_link_count(inode); } } return err; }

Contributors

PersonTokensPropCommitsCommitProp
pre-gitpre-git4970.00%666.67%
linus torvaldslinus torvalds1622.86%111.11%
david howellsdavid howells34.29%111.11%
alexey dobriyanalexey dobriyan22.86%111.11%
Total70100.00%9100.00%


static int minix_rename(struct inode * old_dir, struct dentry *old_dentry, struct inode * new_dir, struct dentry *new_dentry, unsigned int flags) { struct inode * old_inode = d_inode(old_dentry); struct inode * new_inode = d_inode(new_dentry); struct page * dir_page = NULL; struct minix_dir_entry * dir_de = NULL; struct page * old_page; struct minix_dir_entry * old_de; int err = -ENOENT; if (flags & ~RENAME_NOREPLACE) return -EINVAL; old_de = minix_find_entry(old_dentry, &old_page); if (!old_de) goto out; if (S_ISDIR(old_inode->i_mode)) { err = -EIO; dir_de = minix_dotdot(old_inode, &dir_page); if (!dir_de) goto out_old; } if (new_inode) { struct page * new_page; struct minix_dir_entry * new_de; err = -ENOTEMPTY; if (dir_de && !minix_empty_dir(new_inode)) goto out_dir; err = -ENOENT; new_de = minix_find_entry(new_dentry, &new_page); if (!new_de) goto out_dir; minix_set_link(new_de, new_page, old_inode); new_inode->i_ctime = current_time(new_inode); if (dir_de) drop_nlink(new_inode); inode_dec_link_count(new_inode); } else { err = minix_add_link(new_dentry, old_inode); if (err) goto out_dir; if (dir_de) inode_inc_link_count(new_dir); } minix_delete_entry(old_de, old_page); mark_inode_dirty(old_inode); if (dir_de) { minix_set_link(dir_de, dir_page, new_dir); inode_dec_link_count(old_dir); } return 0; out_dir: if (dir_de) { kunmap(dir_page); put_page(dir_page); } out_old: kunmap(old_page); put_page(old_page); out: return err; }

Contributors

PersonTokensPropCommitsCommitProp
linus torvaldslinus torvalds15246.06%15.00%
pre-gitpre-git14443.64%1260.00%
miklos szeredimiklos szeredi154.55%15.00%
david howellsdavid howells61.82%15.00%
deepa dinamanideepa dinamani41.21%15.00%
dave hansendave hansen30.91%15.00%
alexey dobriyanalexey dobriyan30.91%15.00%
kirill a. shutemovkirill a. shutemov20.61%15.00%
al viroal viro10.30%15.00%
Total330100.00%20100.00%

/* * directories can handle most operations... */ const struct inode_operations minix_dir_inode_operations = { .create = minix_create, .lookup = minix_lookup, .link = minix_link, .unlink = minix_unlink, .symlink = minix_symlink, .mkdir = minix_mkdir, .rmdir = minix_rmdir, .mknod = minix_mknod, .rename = minix_rename, .getattr = minix_getattr, .tmpfile = minix_tmpfile, };

Overall Contributors

PersonTokensPropCommitsCommitProp
linus torvaldslinus torvalds51742.07%11.96%
pre-gitpre-git51141.58%2345.10%
al viroal viro1008.14%1121.57%
david howellsdavid howells211.71%23.92%
art haasart haas201.63%11.96%
miklos szeredimiklos szeredi151.22%11.96%
alexey dobriyanalexey dobriyan141.14%11.96%
dmitriy monakhovdmitriy monakhov80.65%11.96%
deepa dinamanideepa dinamani80.65%11.96%
dave hansendave hansen30.24%11.96%
brian gerstbrian gerst30.24%11.96%
kirill a. shutemovkirill a. shutemov20.16%11.96%
jorge boncomptejorge boncompte20.16%11.96%
trond myklebusttrond myklebust20.16%23.92%
andries brouwerandries brouwer10.08%11.96%
andrew mortonandrew morton10.08%11.96%
arjan van de venarjan van de ven10.08%11.96%
Total1229100.00%51100.00%
Directory: fs/minix
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.