diff -urNP org/utils.c new/utils.c
--- org/utils.c	2011-11-28 06:36:03.718875854 +0900
+++ new/utils.c	2011-11-28 06:21:55.667110687 +0900
@@ -21,7 +21,9 @@
 #include <iprt/asm.h>
 #include <linux/nfs_fs.h>
 #include <linux/vfs.h>
-
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0)
+#include <linux/fs.h>
+#endif
 /* #define USE_VMALLOC */
 
 /*
@@ -110,9 +112,22 @@
         inode->i_fop   = &sf_dir_fops;
         /* XXX: this probably should be set to the number of entries
            in the directory plus two (. ..) */
-        inode->i_nlink = 1;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0)
+        set_nlink(inode,1);
+#else
+	inode->i_nlink = 1;
+#endif
     }
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0)
+    else if (RTFS_IS_SYMLINK(attr->fMode))
+    {
+        inode->i_mode  = sf_g->fmode != ~0 ? (sf_g->fmode & 0777): mode;
+        inode->i_mode &= ~sf_g->fmask;
+        inode->i_mode |= S_IFLNK;
+        inode->i_op    = &sf_lnk_iops;
+        set_nlink(inode,1);
+    }
+#elif LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 0)
     else if (RTFS_IS_SYMLINK(attr->fMode))
     {
         inode->i_mode  = sf_g->fmode != ~0 ? (sf_g->fmode & 0777): mode;
@@ -129,7 +144,11 @@
         inode->i_mode |= S_IFREG;
         inode->i_op    = &sf_reg_iops;
         inode->i_fop   = &sf_reg_fops;
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0)
+        set_nlink(inode,1);
+#else
         inode->i_nlink = 1;
+#endif
     }
 
     inode->i_uid = sf_g->uid;