}
 
 static int v9fs_xattr_set_acl(const struct xattr_handler *handler,
-                             struct dentry *dentry, const char *name,
-                             const void *value, size_t size, int flags)
+                             struct dentry *dentry, struct inode *inode,
+                             const char *name, const void *value,
+                             size_t size, int flags)
 {
        int retval;
        struct posix_acl *acl;
        struct v9fs_session_info *v9ses;
-       struct inode *inode = d_inode(dentry);
 
        v9ses = v9fs_dentry2v9ses(dentry);
        /*
 
 }
 
 static int v9fs_xattr_handler_set(const struct xattr_handler *handler,
-                                 struct dentry *dentry, const char *name,
-                                 const void *value, size_t size, int flags)
+                                 struct dentry *dentry, struct inode *inode,
+                                 const char *name, const void *value,
+                                 size_t size, int flags)
 {
        const char *full_name = xattr_full_name(handler, name);
 
 
 }
 
 static int btrfs_xattr_handler_set(const struct xattr_handler *handler,
-                                  struct dentry *dentry, const char *name,
-                                  const void *buffer, size_t size,
-                                  int flags)
+                                  struct dentry *unused, struct inode *inode,
+                                  const char *name, const void *buffer,
+                                  size_t size, int flags)
 {
-       struct inode *inode = d_inode(dentry);
-
        name = xattr_full_name(handler, name);
        return __btrfs_setxattr(NULL, inode, name, buffer, size, flags);
 }
 
 static int btrfs_xattr_handler_set_prop(const struct xattr_handler *handler,
-                                       struct dentry *dentry,
+                                       struct dentry *unused, struct inode *inode,
                                        const char *name, const void *value,
                                        size_t size, int flags)
 {
        name = xattr_full_name(handler, name);
-       return btrfs_set_prop(d_inode(dentry), name, value, size, flags);
+       return btrfs_set_prop(inode, name, value, size, flags);
 }
 
 static const struct xattr_handler btrfs_security_xattr_handler = {
 
 }
 
 static int ceph_set_xattr_handler(const struct xattr_handler *handler,
-                                 struct dentry *dentry, const char *name,
-                                 const void *value, size_t size, int flags)
+                                 struct dentry *unused, struct inode *inode,
+                                 const char *name, const void *value,
+                                 size_t size, int flags)
 {
        if (!ceph_is_valid_xattr(name))
                return -EOPNOTSUPP;
-       return __ceph_setxattr(d_inode(dentry), name, value, size, flags);
+       return __ceph_setxattr(inode, name, value, size, flags);
 }
 
 const struct xattr_handler ceph_other_xattr_handler = {
 
 enum { XATTR_USER, XATTR_CIFS_ACL, XATTR_ACL_ACCESS, XATTR_ACL_DEFAULT };
 
 static int cifs_xattr_set(const struct xattr_handler *handler,
-                         struct dentry *dentry, const char *name,
-                         const void *value, size_t size, int flags)
+                         struct dentry *dentry, struct inode *inode,
+                         const char *name, const void *value,
+                         size_t size, int flags)
 {
        int rc = -EOPNOTSUPP;
        unsigned int xid;
                        if (value &&
                            pTcon->ses->server->ops->set_acl)
                                rc = pTcon->ses->server->ops->set_acl(pacl,
-                                               size, d_inode(dentry),
+                                               size, inode,
                                                full_path, CIFS_ACL_DACL);
                        else
                                rc = -EOPNOTSUPP;
                        if (rc == 0) /* force revalidate of the inode */
-                               CIFS_I(d_inode(dentry))->time = 0;
+                               CIFS_I(inode)->time = 0;
                        kfree(pacl);
                }
 #endif /* CONFIG_CIFS_ACL */
 
 
 static int
 ext2_xattr_security_set(const struct xattr_handler *handler,
-                       struct dentry *dentry, const char *name,
-                       const void *value, size_t size, int flags)
+                       struct dentry *unused, struct inode *inode,
+                       const char *name, const void *value,
+                       size_t size, int flags)
 {
-       return ext2_xattr_set(d_inode(dentry), EXT2_XATTR_INDEX_SECURITY, name,
+       return ext2_xattr_set(inode, EXT2_XATTR_INDEX_SECURITY, name,
                              value, size, flags);
 }
 
 
 
 static int
 ext2_xattr_trusted_set(const struct xattr_handler *handler,
-                      struct dentry *dentry, const char *name,
-                      const void *value, size_t size, int flags)
+                      struct dentry *unused, struct inode *inode,
+                      const char *name, const void *value,
+                      size_t size, int flags)
 {
-       return ext2_xattr_set(d_inode(dentry), EXT2_XATTR_INDEX_TRUSTED, name,
+       return ext2_xattr_set(inode, EXT2_XATTR_INDEX_TRUSTED, name,
                              value, size, flags);
 }
 
 
 
 static int
 ext2_xattr_user_set(const struct xattr_handler *handler,
-                   struct dentry *dentry, const char *name,
-                   const void *value, size_t size, int flags)
+                   struct dentry *unused, struct inode *inode,
+                   const char *name, const void *value,
+                   size_t size, int flags)
 {
-       if (!test_opt(dentry->d_sb, XATTR_USER))
+       if (!test_opt(inode->i_sb, XATTR_USER))
                return -EOPNOTSUPP;
 
-       return ext2_xattr_set(d_inode(dentry), EXT2_XATTR_INDEX_USER,
+       return ext2_xattr_set(inode, EXT2_XATTR_INDEX_USER,
                              name, value, size, flags);
 }
 
 
 
 static int
 ext4_xattr_security_set(const struct xattr_handler *handler,
-                       struct dentry *dentry, const char *name,
-                       const void *value, size_t size, int flags)
+                       struct dentry *unused, struct inode *inode,
+                       const char *name, const void *value,
+                       size_t size, int flags)
 {
-       return ext4_xattr_set(d_inode(dentry), EXT4_XATTR_INDEX_SECURITY,
+       return ext4_xattr_set(inode, EXT4_XATTR_INDEX_SECURITY,
                              name, value, size, flags);
 }
 
 
 
 static int
 ext4_xattr_trusted_set(const struct xattr_handler *handler,
-                      struct dentry *dentry, const char *name,
-                      const void *value, size_t size, int flags)
+                      struct dentry *unused, struct inode *inode,
+                      const char *name, const void *value,
+                      size_t size, int flags)
 {
-       return ext4_xattr_set(d_inode(dentry), EXT4_XATTR_INDEX_TRUSTED,
+       return ext4_xattr_set(inode, EXT4_XATTR_INDEX_TRUSTED,
                              name, value, size, flags);
 }
 
 
 
 static int
 ext4_xattr_user_set(const struct xattr_handler *handler,
-                   struct dentry *dentry, const char *name,
-                   const void *value, size_t size, int flags)
+                   struct dentry *unused, struct inode *inode,
+                   const char *name, const void *value,
+                   size_t size, int flags)
 {
-       if (!test_opt(dentry->d_sb, XATTR_USER))
+       if (!test_opt(inode->i_sb, XATTR_USER))
                return -EOPNOTSUPP;
-       return ext4_xattr_set(d_inode(dentry), EXT4_XATTR_INDEX_USER,
+       return ext4_xattr_set(inode, EXT4_XATTR_INDEX_USER,
                              name, value, size, flags);
 }
 
 
 }
 
 static int f2fs_xattr_generic_set(const struct xattr_handler *handler,
-               struct dentry *dentry, const char *name, const void *value,
+               struct dentry *unused, struct inode *inode,
+               const char *name, const void *value,
                size_t size, int flags)
 {
-       struct f2fs_sb_info *sbi = F2FS_SB(dentry->d_sb);
+       struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb);
 
        switch (handler->flags) {
        case F2FS_XATTR_INDEX_USER:
        default:
                return -EINVAL;
        }
-       return f2fs_setxattr(d_inode(dentry), handler->flags, name,
+       return f2fs_setxattr(inode, handler->flags, name,
                                        value, size, NULL, flags);
 }
 
 }
 
 static int f2fs_xattr_advise_set(const struct xattr_handler *handler,
-               struct dentry *dentry, const char *name, const void *value,
+               struct dentry *unused, struct inode *inode,
+               const char *name, const void *value,
                size_t size, int flags)
 {
-       struct inode *inode = d_inode(dentry);
-
        if (!inode_owner_or_capable(inode))
                return -EPERM;
        if (value == NULL)
 
 }
 
 static int gfs2_xattr_set(const struct xattr_handler *handler,
-                         struct dentry *dentry, const char *name,
-                         const void *value, size_t size, int flags)
+                         struct dentry *unused, struct inode *inode,
+                         const char *name, const void *value,
+                         size_t size, int flags)
 {
-       struct inode *inode = d_inode(dentry);
        struct gfs2_inode *ip = GFS2_I(inode);
        struct gfs2_holder gh;
        int ret;
 
        return len;
 }
 
-int hfsplus_setxattr(struct dentry *dentry, const char *name,
+int hfsplus_setxattr(struct inode *inode, const char *name,
                     const void *value, size_t size, int flags,
                     const char *prefix, size_t prefixlen)
 {
                return -ENOMEM;
        strcpy(xattr_name, prefix);
        strcpy(xattr_name + prefixlen, name);
-       res = __hfsplus_setxattr(d_inode(dentry), xattr_name, value, size,
-                                flags);
+       res = __hfsplus_setxattr(inode, xattr_name, value, size, flags);
        kfree(xattr_name);
        return res;
 }
 }
 
 static int hfsplus_osx_setxattr(const struct xattr_handler *handler,
-                               struct dentry *dentry, const char *name,
-                               const void *buffer, size_t size, int flags)
+                               struct dentry *unused, struct inode *inode,
+                               const char *name, const void *buffer,
+                               size_t size, int flags)
 {
        /*
         * Don't allow setting properly prefixed attributes
         * creates), so we pass the name through unmodified (after
         * ensuring it doesn't conflict with another namespace).
         */
-       return __hfsplus_setxattr(d_inode(dentry), name, buffer, size, flags);
+       return __hfsplus_setxattr(inode, name, buffer, size, flags);
 }
 
 const struct xattr_handler hfsplus_xattr_osx_handler = {
 
 int __hfsplus_setxattr(struct inode *inode, const char *name,
                        const void *value, size_t size, int flags);
 
-int hfsplus_setxattr(struct dentry *dentry, const char *name,
+int hfsplus_setxattr(struct inode *inode, const char *name,
                                   const void *value, size_t size, int flags,
                                   const char *prefix, size_t prefixlen);
 
 
 }
 
 static int hfsplus_security_setxattr(const struct xattr_handler *handler,
-                                    struct dentry *dentry, const char *name,
-                                    const void *buffer, size_t size, int flags)
+                                    struct dentry *unused, struct inode *inode,
+                                    const char *name, const void *buffer,
+                                    size_t size, int flags)
 {
-       return hfsplus_setxattr(dentry, name, buffer, size, flags,
+       return hfsplus_setxattr(inode, name, buffer, size, flags,
                                XATTR_SECURITY_PREFIX,
                                XATTR_SECURITY_PREFIX_LEN);
 }
 
 }
 
 static int hfsplus_trusted_setxattr(const struct xattr_handler *handler,
-                                   struct dentry *dentry, const char *name,
-                                   const void *buffer, size_t size, int flags)
+                                   struct dentry *unused, struct inode *inode,
+                                   const char *name, const void *buffer,
+                                   size_t size, int flags)
 {
-       return hfsplus_setxattr(dentry, name, buffer, size, flags,
+       return hfsplus_setxattr(inode, name, buffer, size, flags,
                                XATTR_TRUSTED_PREFIX, XATTR_TRUSTED_PREFIX_LEN);
 }
 
 
 }
 
 static int hfsplus_user_setxattr(const struct xattr_handler *handler,
-                                struct dentry *dentry, const char *name,
-                                const void *buffer, size_t size, int flags)
+                                struct dentry *unused, struct inode *inode,
+                                const char *name, const void *buffer,
+                                size_t size, int flags)
 {
-       return hfsplus_setxattr(dentry, name, buffer, size, flags,
+       return hfsplus_setxattr(inode, name, buffer, size, flags,
                                XATTR_USER_PREFIX, XATTR_USER_PREFIX_LEN);
 }
 
 
 }
 
 static int jffs2_security_setxattr(const struct xattr_handler *handler,
-                                  struct dentry *dentry, const char *name,
-                                  const void *buffer, size_t size, int flags)
+                                  struct dentry *unused, struct inode *inode,
+                                  const char *name, const void *buffer,
+                                  size_t size, int flags)
 {
-       return do_jffs2_setxattr(d_inode(dentry), JFFS2_XPREFIX_SECURITY,
+       return do_jffs2_setxattr(inode, JFFS2_XPREFIX_SECURITY,
                                 name, buffer, size, flags);
 }
 
 
 }
 
 static int jffs2_trusted_setxattr(const struct xattr_handler *handler,
-                                 struct dentry *dentry, const char *name,
-                                 const void *buffer, size_t size, int flags)
+                                 struct dentry *unused, struct inode *inode,
+                                 const char *name, const void *buffer,
+                                 size_t size, int flags)
 {
-       return do_jffs2_setxattr(d_inode(dentry), JFFS2_XPREFIX_TRUSTED,
+       return do_jffs2_setxattr(inode, JFFS2_XPREFIX_TRUSTED,
                                 name, buffer, size, flags);
 }
 
 
 }
 
 static int jffs2_user_setxattr(const struct xattr_handler *handler,
-                              struct dentry *dentry, const char *name,
-                              const void *buffer, size_t size, int flags)
+                              struct dentry *unused, struct inode *inode,
+                              const char *name, const void *buffer,
+                              size_t size, int flags)
 {
-       return do_jffs2_setxattr(d_inode(dentry), JFFS2_XPREFIX_USER,
+       return do_jffs2_setxattr(inode, JFFS2_XPREFIX_USER,
                                 name, buffer, size, flags);
 }
 
 
 }
 
 static int jfs_xattr_set(const struct xattr_handler *handler,
-                        struct dentry *dentry, const char *name,
-                        const void *value, size_t size, int flags)
+                        struct dentry *unused, struct inode *inode,
+                        const char *name, const void *value,
+                        size_t size, int flags)
 {
-       struct inode *inode = d_inode(dentry);
-
        name = xattr_full_name(handler, name);
        return __jfs_xattr_set(inode, name, value, size, flags);
 }
 }
 
 static int jfs_xattr_set_os2(const struct xattr_handler *handler,
-                            struct dentry *dentry, const char *name,
-                            const void *value, size_t size, int flags)
+                            struct dentry *unused, struct inode *inode,
+                            const char *name, const void *value,
+                            size_t size, int flags)
 {
-       struct inode *inode = d_inode(dentry);
-
        if (is_known_namespace(name))
                return -EOPNOTSUPP;
        return __jfs_xattr_set(inode, name, value, size, flags);
 
 }
 
 static int
-nfs4_set_security_label(struct dentry *dentry, const void *buf, size_t buflen)
+nfs4_set_security_label(struct inode *inode, const void *buf, size_t buflen)
 {
        struct nfs4_label ilabel, *olabel = NULL;
        struct nfs_fattr fattr;
        struct rpc_cred *cred;
-       struct inode *inode = d_inode(dentry);
        int status;
 
        if (!nfs_server_capable(inode, NFS_CAP_SECURITY_LABEL))
 #define XATTR_NAME_NFSV4_ACL "system.nfs4_acl"
 
 static int nfs4_xattr_set_nfs4_acl(const struct xattr_handler *handler,
-                                  struct dentry *dentry, const char *key,
-                                  const void *buf, size_t buflen,
-                                  int flags)
+                                  struct dentry *unused, struct inode *inode,
+                                  const char *key, const void *buf,
+                                  size_t buflen, int flags)
 {
-       return nfs4_proc_set_acl(d_inode(dentry), buf, buflen);
+       return nfs4_proc_set_acl(inode, buf, buflen);
 }
 
 static int nfs4_xattr_get_nfs4_acl(const struct xattr_handler *handler,
 #ifdef CONFIG_NFS_V4_SECURITY_LABEL
 
 static int nfs4_xattr_set_nfs4_label(const struct xattr_handler *handler,
-                                    struct dentry *dentry, const char *key,
-                                    const void *buf, size_t buflen,
-                                    int flags)
+                                    struct dentry *unused, struct inode *inode,
+                                    const char *key, const void *buf,
+                                    size_t buflen, int flags)
 {
        if (security_ismaclabel(key))
-               return nfs4_set_security_label(dentry, buf, buflen);
+               return nfs4_set_security_label(inode, buf, buflen);
 
        return -EOPNOTSUPP;
 }
 
 }
 
 static int ocfs2_xattr_security_set(const struct xattr_handler *handler,
-                                   struct dentry *dentry, const char *name,
-                                   const void *value, size_t size, int flags)
+                                   struct dentry *unused, struct inode *inode,
+                                   const char *name, const void *value,
+                                   size_t size, int flags)
 {
-       return ocfs2_xattr_set(d_inode(dentry), OCFS2_XATTR_INDEX_SECURITY,
+       return ocfs2_xattr_set(inode, OCFS2_XATTR_INDEX_SECURITY,
                               name, value, size, flags);
 }
 
 }
 
 static int ocfs2_xattr_trusted_set(const struct xattr_handler *handler,
-                                  struct dentry *dentry, const char *name,
-                                  const void *value, size_t size, int flags)
+                                  struct dentry *unused, struct inode *inode,
+                                  const char *name, const void *value,
+                                  size_t size, int flags)
 {
-       return ocfs2_xattr_set(d_inode(dentry), OCFS2_XATTR_INDEX_TRUSTED,
+       return ocfs2_xattr_set(inode, OCFS2_XATTR_INDEX_TRUSTED,
                               name, value, size, flags);
 }
 
 }
 
 static int ocfs2_xattr_user_set(const struct xattr_handler *handler,
-                               struct dentry *dentry, const char *name,
-                               const void *value, size_t size, int flags)
+                               struct dentry *unused, struct inode *inode,
+                               const char *name, const void *value,
+                               size_t size, int flags)
 {
-       struct ocfs2_super *osb = OCFS2_SB(dentry->d_sb);
+       struct ocfs2_super *osb = OCFS2_SB(inode->i_sb);
 
        if (osb->s_mount_opt & OCFS2_MOUNT_NOUSERXATTR)
                return -EOPNOTSUPP;
 
-       return ocfs2_xattr_set(d_inode(dentry), OCFS2_XATTR_INDEX_USER,
+       return ocfs2_xattr_set(inode, OCFS2_XATTR_INDEX_USER,
                               name, value, size, flags);
 }
 
 
 }
 
 static int orangefs_xattr_set_default(const struct xattr_handler *handler,
-                                     struct dentry *dentry,
+                                     struct dentry *unused,
+                                     struct inode *inode,
                                      const char *name,
                                      const void *buffer,
                                      size_t size,
                                      int flags)
 {
-       return orangefs_inode_setxattr(dentry->d_inode,
+       return orangefs_inode_setxattr(inode,
                                    ORANGEFS_XATTR_NAME_DEFAULT_PREFIX,
                                    name,
                                    buffer,
 }
 
 static int orangefs_xattr_set_trusted(const struct xattr_handler *handler,
-                                    struct dentry *dentry,
+                                    struct dentry *unused,
+                                    struct inode *inode,
                                     const char *name,
                                     const void *buffer,
                                     size_t size,
                                     int flags)
 {
-       return orangefs_inode_setxattr(dentry->d_inode,
+       return orangefs_inode_setxattr(inode,
                                    ORANGEFS_XATTR_NAME_TRUSTED_PREFIX,
                                    name,
                                    buffer,
 
 
 static int
 posix_acl_xattr_set(const struct xattr_handler *handler,
-                   struct dentry *dentry, const char *name,
-                   const void *value, size_t size, int flags)
+                   struct dentry *unused, struct inode *inode,
+                   const char *name, const void *value,
+                   size_t size, int flags)
 {
-       struct inode *inode = d_backing_inode(dentry);
        struct posix_acl *acl = NULL;
        int ret;
 
 
 }
 
 static int
-security_set(const struct xattr_handler *handler, struct dentry *dentry,
-            const char *name, const void *buffer, size_t size, int flags)
+security_set(const struct xattr_handler *handler, struct dentry *unused,
+            struct inode *inode, const char *name, const void *buffer,
+            size_t size, int flags)
 {
-       if (IS_PRIVATE(d_inode(dentry)))
+       if (IS_PRIVATE(inode))
                return -EPERM;
 
-       return reiserfs_xattr_set(d_inode(dentry),
+       return reiserfs_xattr_set(inode,
                                  xattr_full_name(handler, name),
                                  buffer, size, flags);
 }
 
 }
 
 static int
-trusted_set(const struct xattr_handler *handler, struct dentry *dentry,
-           const char *name, const void *buffer, size_t size, int flags)
+trusted_set(const struct xattr_handler *handler, struct dentry *unused,
+           struct inode *inode, const char *name, const void *buffer,
+           size_t size, int flags)
 {
-       if (!capable(CAP_SYS_ADMIN) || IS_PRIVATE(d_inode(dentry)))
+       if (!capable(CAP_SYS_ADMIN) || IS_PRIVATE(inode))
                return -EPERM;
 
-       return reiserfs_xattr_set(d_inode(dentry),
+       return reiserfs_xattr_set(inode,
                                  xattr_full_name(handler, name),
                                  buffer, size, flags);
 }
 
 }
 
 static int
-user_set(const struct xattr_handler *handler, struct dentry *dentry,
-        const char *name, const void *buffer, size_t size, int flags)
+user_set(const struct xattr_handler *handler, struct dentry *unused,
+        struct inode *inode, const char *name, const void *buffer,
+        size_t size, int flags)
 {
-       if (!reiserfs_xattrs_user(dentry->d_sb))
+       if (!reiserfs_xattrs_user(inode->i_sb))
                return -EOPNOTSUPP;
-       return reiserfs_xattr_set(d_inode(dentry),
+       return reiserfs_xattr_set(inode,
                                  xattr_full_name(handler, name),
                                  buffer, size, flags);
 }
 
 }
 
 static int ubifs_xattr_set(const struct xattr_handler *handler,
-                          struct dentry *dentry, const char *name,
-                          const void *value, size_t size, int flags)
+                          struct dentry *dentry, struct inode *inode,
+                          const char *name, const void *value,
+                          size_t size, int flags)
 {
-       struct inode *inode = d_inode(dentry);
-
        dbg_gen("xattr '%s', host ino %lu ('%pd'), size %zd",
                name, inode->i_ino, dentry, size);
 
 
        handler = xattr_resolve_name(dentry->d_sb->s_xattr, &name);
        if (IS_ERR(handler))
                return PTR_ERR(handler);
-       return handler->set(handler, dentry, name, value, size, flags);
+       return handler->set(handler, dentry, d_inode(dentry), name, value,
+                           size, flags);
 }
 
 /*
        handler = xattr_resolve_name(dentry->d_sb->s_xattr, &name);
        if (IS_ERR(handler))
                return PTR_ERR(handler);
-       return handler->set(handler, dentry, name, NULL, 0, XATTR_REPLACE);
+       return handler->set(handler, dentry, d_inode(dentry), name, NULL,
+                           0, XATTR_REPLACE);
 }
 
 EXPORT_SYMBOL(generic_getxattr);
 
 }
 
 static int
-xfs_xattr_set(const struct xattr_handler *handler, struct dentry *dentry,
-               const char *name, const void *value, size_t size, int flags)
+xfs_xattr_set(const struct xattr_handler *handler, struct dentry *unused,
+               struct inode *inode, const char *name, const void *value,
+               size_t size, int flags)
 {
        int                     xflags = handler->flags;
-       struct xfs_inode        *ip = XFS_I(d_inode(dentry));
+       struct xfs_inode        *ip = XFS_I(inode);
        int                     error;
 
        /* Convert Linux syscall to XFS internal ATTR flags */
        error = xfs_attr_set(ip, (unsigned char *)name,
                                (void *)value, size, xflags);
        if (!error)
-               xfs_forget_acl(d_inode(dentry), name, xflags);
+               xfs_forget_acl(inode, name, xflags);
 
        return error;
 }
 
                   struct inode *inode, const char *name, void *buffer,
                   size_t size);
        int (*set)(const struct xattr_handler *, struct dentry *dentry,
-                  const char *name, const void *buffer, size_t size,
-                  int flags);
+                  struct inode *inode, const char *name, const void *buffer,
+                  size_t size, int flags);
 };
 
 const char *xattr_full_name(const struct xattr_handler *, const char *);
 
 }
 
 static int shmem_xattr_handler_set(const struct xattr_handler *handler,
-                                  struct dentry *dentry, const char *name,
-                                  const void *value, size_t size, int flags)
+                                  struct dentry *unused, struct inode *inode,
+                                  const char *name, const void *value,
+                                  size_t size, int flags)
 {
-       struct shmem_inode_info *info = SHMEM_I(d_inode(dentry));
+       struct shmem_inode_info *info = SHMEM_I(inode);
 
        name = xattr_full_name(handler, name);
        return simple_xattr_set(&info->xattrs, name, value, size, flags);