cregit-Linux how code gets into the kernel

Release 4.18 fs/minix/namei.c

Directory: fs/minix
// SPDX-License-Identifier: GPL-2.0
/*
 *  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 Torvalds3053.57%116.67%
Linus Torvalds (pre-git)2544.64%466.67%
Alexey 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); return d_splice_alias(inode, dentry); }

Contributors

PersonTokensPropCommitsCommitProp
Linus Torvalds (pre-git)5159.30%650.00%
Linus Torvalds2427.91%18.33%
Al Viro55.81%216.67%
Brian Gerst33.49%18.33%
David Howells22.33%18.33%
Trond Myklebust11.16%18.33%
Total86100.00%12100.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 Torvalds3339.29%110.00%
Linus Torvalds (pre-git)3136.90%550.00%
Al Viro1720.24%220.00%
Dmitriy Monakhov22.38%110.00%
Andries E. Brouwer11.19%110.00%
Total84100.00%10100.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 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 Torvalds2470.59%116.67%
Linus Torvalds (pre-git)617.65%233.33%
Al Viro38.82%233.33%
Trond 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 Torvalds (pre-git)6348.09%660.00%
Linus Torvalds6247.33%110.00%
Dmitriy Monakhov43.05%110.00%
Alexey Dobriyan10.76%110.00%
Andrew Morton10.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
Linus Torvalds (pre-git)3458.62%550.00%
Linus Torvalds1525.86%110.00%
Deepa Dinamani46.90%110.00%
David Howells35.17%110.00%
Al Viro11.72%110.00%
Alexey Dobriyan11.72%110.00%
Total58100.00%10100.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
Linus Torvalds (pre-git)7957.66%861.54%
Linus Torvalds4835.04%17.69%
Alexey Dobriyan53.65%17.69%
Dmitriy Monakhov21.46%17.69%
Jorge Boncompte21.46%17.69%
Al 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 Torvalds7984.04%120.00%
Linus Torvalds (pre-git)1111.70%240.00%
David Howells33.19%120.00%
Alexey 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
Linus Torvalds (pre-git)4970.00%666.67%
Linus Torvalds1622.86%111.11%
David Howells34.29%111.11%
Alexey 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 Torvalds15246.06%15.00%
Linus Torvalds (pre-git)14443.64%1260.00%
Miklos Szeredi154.55%15.00%
David Howells61.82%15.00%
Deepa Dinamani41.21%15.00%
Alexey Dobriyan30.91%15.00%
Dave Hansen30.91%15.00%
Kirill A. Shutemov20.61%15.00%
Al 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 Torvalds (pre-git)53043.69%2242.31%
Linus Torvalds48339.82%11.92%
Al Viro1028.41%1223.08%
Art Haas201.65%11.92%
David Howells171.40%23.85%
Miklos Szeredi151.24%11.92%
Alexey Dobriyan141.15%11.92%
Deepa Dinamani80.66%11.92%
Dmitriy Monakhov80.66%11.92%
Dave Hansen30.25%11.92%
Brian Gerst30.25%11.92%
Jorge Boncompte20.16%11.92%
Trond Myklebust20.16%23.85%
Kirill A. Shutemov20.16%11.92%
Andries E. Brouwer10.08%11.92%
Andrew Morton10.08%11.92%
Greg Kroah-Hartman10.08%11.92%
Arjan van de Ven10.08%11.92%
Total1213100.00%52100.00%
Directory: fs/minix
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.