Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 /*
  2  * Symlink inode operations for Coda filesystem
  3  * Original version: (C) 1996 P. Braam and M. Callahan
  4  * Rewritten for Linux 2.1. (C) 1997 Carnegie Mellon University
  5  * 
  6  * Carnegie Mellon encourages users to contribute improvements to
  7  * the Coda project. Contact Peter Braam (coda@cs.cmu.edu).
  8  */
  9 
 10 #include <linux/types.h>
 11 #include <linux/kernel.h>
 12 #include <linux/time.h>
 13 #include <linux/fs.h>
 14 #include <linux/stat.h>
 15 #include <linux/errno.h>
 16 #include <linux/pagemap.h>
 17 #include <linux/smp_lock.h>
 18 
 19 #include <linux/coda.h>
 20 #include <linux/coda_linux.h>
 21 #include <linux/coda_psdev.h>
 22 #include <linux/coda_fs_i.h>
 23 
 24 static int coda_symlink_filler(struct file *file, struct page *page)
 25 {
 26         struct inode *inode = page->mapping->host;
 27         int error;
 28         struct coda_inode_info *cii;
 29         unsigned int len = PAGE_SIZE;
 30         char *p = kmap(page);
 31 
 32         lock_kernel();
 33         cii = ITOC(inode);
 34 
 35         error = venus_readlink(inode->i_sb, &cii->c_fid, p, &len);
 36         unlock_kernel();
 37         if (error)
 38                 goto fail;
 39         SetPageUptodate(page);
 40         kunmap(page);
 41         unlock_page(page);
 42         return 0;
 43 
 44 fail:
 45         SetPageError(page);
 46         kunmap(page);
 47         unlock_page(page);
 48         return error;
 49 }
 50 
 51 const struct address_space_operations coda_symlink_aops = {
 52         .readpage       = coda_symlink_filler,
 53 };
 54 
  This page was automatically generated by the LXR engine.