Whamcloud - gitweb
a working file system!
[fs/lustre-release.git] / lustre / obdfs / symlink.c
index 046d408..396176c 100644 (file)
@@ -19,7 +19,6 @@
  */
 
 #include <linux/fs.h>
-#include <linux/ext2_fs.h>
 #include <linux/mm.h>
 #include <linux/stat.h>
 #include <linux/locks.h>
 
 static int obdfs_fast_readlink(struct dentry *dentry, char *buffer, int buflen)
 {
-       char *s = obdfs_i2info(dentry->d_inode)->oi_inline;
-       return vfs_readlink(dentry, buffer, buflen, s);
+        char *s = obdfs_i2info(dentry->d_inode)->oi_inline;
+        return vfs_readlink(dentry, buffer, buflen, s);
 }
 
-static struct dentry *obdfs_fast_follow_link(struct dentry *dentry, struct dentry *base, unsigned flags)
+static int obdfs_fast_follow_link(struct dentry *dentry, struct nameidata *nd)
 {
-       char *s = obdfs_i2info(dentry->d_inode)->oi_inline;
-       return vfs_follow_link(dentry, base, flags, s);
+        char *s = obdfs_i2info(dentry->d_inode)->oi_inline;
+        return vfs_follow_link(nd, s); 
 }
 
 struct inode_operations obdfs_fast_symlink_inode_operations = {
-       readlink:       obdfs_fast_readlink,
-       follow_link:    obdfs_fast_follow_link,
+        readlink:       obdfs_fast_readlink,
+        follow_link:    obdfs_fast_follow_link,
 };
 
 static int obdfs_readlink(struct dentry *dentry, char *buffer, int buflen)
 {
-       struct page *page = NULL;
-       int res;
+        struct page *page = NULL;
+        int res;
 
-       ENTRY;
-       OIDEBUG(dentry->d_inode);
-       page = obdfs_getpage(dentry->d_inode, 0, 0, 0);
-       /* PDEBUG(page, "readlink"); */
-       if (!page) {
-               EXIT;
-               return 0;
-       }
-       res = vfs_readlink(dentry, buffer, buflen, (char *)page_address(page));
-       page_cache_release(page);
-       EXIT;
-       return res;
+        ENTRY;
+        OIDEBUG(dentry->d_inode);
+        page = obdfs_getpage(dentry->d_inode, 0, 0, 0);
+        /* PDEBUG(page, "readlink"); */
+        if (!page) {
+                EXIT;
+                return 0;
+        }
+        res = vfs_readlink(dentry, buffer, buflen, (char *)page_address(page));
+        page_cache_release(page);
+        EXIT;
+        return res;
 } /* obdfs_readlink */
 
-static struct dentry * obdfs_follow_link(struct dentry * dentry,
-                                        struct dentry *base,
-                                        unsigned int follow)
+static int obdfs_follow_link(struct dentry * dentry,
+                             struct nameidata *nd)
 {
-       struct page *page = NULL;
-       struct dentry *res;
+        struct page *page = NULL;
+        int res;
 
-       ENTRY;
-       OIDEBUG(dentry->d_inode);
-       page = obdfs_getpage(dentry->d_inode, 0, 0, 0);
-       /* PDEBUG(page, "follow_link"); */
-       if (!page) {
-               dput(base);
-               EXIT;
-               return ERR_PTR(-EIO);
-       }
-       res = vfs_follow_link(dentry, base, follow, (char *)page_address(page));
-       page_cache_release(page);
-       EXIT;
-       return res;
+        ENTRY;
+        OIDEBUG(dentry->d_inode);
+        page = obdfs_getpage(dentry->d_inode, 0, 0, 0);
+        /* PDEBUG(page, "follow_link"); */
+        if (!page) {
+                dput(nd->dentry);
+                EXIT;
+                return -EIO;
+        }
+        res = vfs_follow_link(nd, (char *)page_address(page));
+        page_cache_release(page);
+        EXIT;
+        return res;
 }
 
 struct inode_operations obdfs_symlink_inode_operations = {