cregit-Linux how code gets into the kernel

Release 4.10 fs/nfs/symlink.c

Directory: fs/nfs
/*
 *  linux/fs/nfs/symlink.c
 *
 *  Copyright (C) 1992  Rick Sladkey
 *
 *  Optimization changes Copyright (C) 1994 Florian La Roche
 *
 *  Jun 7 1999, cache symlink lookups in the page cache.  -DaveM
 *
 *  nfs symlink handling code
 */

#include <linux/time.h>
#include <linux/errno.h>
#include <linux/sunrpc/clnt.h>
#include <linux/nfs.h>
#include <linux/nfs2.h>
#include <linux/nfs_fs.h>
#include <linux/pagemap.h>
#include <linux/stat.h>
#include <linux/mm.h>
#include <linux/string.h>

/* Symlink caching in the page cache is even more simplistic
 * and straight-forward than readdir caching.
 */


static int nfs_symlink_filler(struct inode *inode, struct page *page) { int error; error = NFS_PROTO(inode)->readlink(inode, page, 0, PAGE_SIZE); if (error < 0) goto error; SetPageUptodate(page); unlock_page(page); return 0; error: SetPageError(page); unlock_page(page); return -EIO; }

Contributors

PersonTokensPropCommitsCommitProp
pre-gitpre-git6890.67%660.00%
trond myklebusttrond myklebust34.00%220.00%
linus torvaldslinus torvalds22.67%110.00%
andrew mortonandrew morton22.67%110.00%
Total75100.00%10100.00%


static const char *nfs_get_link(struct dentry *dentry, struct inode *inode, struct delayed_call *done) { struct page *page; void *err; if (!dentry) { err = ERR_PTR(nfs_revalidate_mapping_rcu(inode)); if (err) return err; page = find_get_page(inode->i_mapping, 0); if (!page) return ERR_PTR(-ECHILD); if (!PageUptodate(page)) { put_page(page); return ERR_PTR(-ECHILD); } } else { err = ERR_PTR(nfs_revalidate_mapping(inode, inode->i_mapping)); if (err) return err; page = read_cache_page(&inode->i_data, 0, (filler_t *)nfs_symlink_filler, inode); if (IS_ERR(page)) return ERR_CAST(page); } set_delayed_call(done, page_put_link, page); return page_address(page); }

Contributors

PersonTokensPropCommitsCommitProp
al viroal viro12069.36%743.75%
pre-gitpre-git4224.28%531.25%
trond myklebusttrond myklebust74.05%318.75%
linus torvaldslinus torvalds42.31%16.25%
Total173100.00%16100.00%

/* * symlinks can't do much... */ const struct inode_operations nfs_symlink_inode_operations = { .get_link = nfs_get_link, .getattr = nfs_getattr, .setattr = nfs_setattr, };

Overall Contributors

PersonTokensPropCommitsCommitProp
pre-gitpre-git15149.83%1241.38%
al viroal viro12541.25%724.14%
trond myklebusttrond myklebust103.30%517.24%
linus torvaldslinus torvalds72.31%13.45%
art haasart haas61.98%13.45%
andrew mortonandrew morton20.66%13.45%
arjan van de venarjan van de ven10.33%13.45%
dave jonesdave jones10.33%13.45%
Total303100.00%29100.00%
Directory: fs/nfs
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.