static struct inode *bdev_alloc_inode(struct super_block *sb)
 {
-       struct bdev_inode *ei = kmem_cache_alloc(bdev_cachep, GFP_KERNEL);
+       struct bdev_inode *ei = alloc_inode_sb(sb, bdev_cachep, GFP_KERNEL);
 
        if (!ei)
                return NULL;
 
        struct dax_device *dax_dev;
        struct inode *inode;
 
-       dax_dev = kmem_cache_alloc(dax_cache, GFP_KERNEL);
+       dax_dev = alloc_inode_sb(sb, dax_cache, GFP_KERNEL);
        if (!dax_dev)
                return NULL;
 
 
 {
        struct v9fs_inode *v9inode;
 
-       v9inode = kmem_cache_alloc(v9fs_inode_cache, GFP_KERNEL);
+       v9inode = alloc_inode_sb(sb, v9fs_inode_cache, GFP_KERNEL);
        if (!v9inode)
                return NULL;
 #ifdef CONFIG_9P_FSCACHE
 
 static struct inode *adfs_alloc_inode(struct super_block *sb)
 {
        struct adfs_inode_info *ei;
-       ei = kmem_cache_alloc(adfs_inode_cachep, GFP_KERNEL);
+       ei = alloc_inode_sb(sb, adfs_inode_cachep, GFP_KERNEL);
        if (!ei)
                return NULL;
        return &ei->vfs_inode;
 
 {
        struct affs_inode_info *i;
 
-       i = kmem_cache_alloc(affs_inode_cachep, GFP_KERNEL);
+       i = alloc_inode_sb(sb, affs_inode_cachep, GFP_KERNEL);
        if (!i)
                return NULL;
 
 
 {
        struct afs_vnode *vnode;
 
-       vnode = kmem_cache_alloc(afs_inode_cachep, GFP_KERNEL);
+       vnode = alloc_inode_sb(sb, afs_inode_cachep, GFP_KERNEL);
        if (!vnode)
                return NULL;
 
 
 {
        struct befs_inode_info *bi;
 
-       bi = kmem_cache_alloc(befs_inode_cachep, GFP_KERNEL);
+       bi = alloc_inode_sb(sb, befs_inode_cachep, GFP_KERNEL);
        if (!bi)
                return NULL;
        return &bi->vfs_inode;
 
 static struct inode *bfs_alloc_inode(struct super_block *sb)
 {
        struct bfs_inode_info *bi;
-       bi = kmem_cache_alloc(bfs_inode_cachep, GFP_KERNEL);
+       bi = alloc_inode_sb(sb, bfs_inode_cachep, GFP_KERNEL);
        if (!bi)
                return NULL;
        return &bi->vfs_inode;
 
        struct btrfs_inode *ei;
        struct inode *inode;
 
-       ei = kmem_cache_alloc(btrfs_inode_cachep, GFP_KERNEL);
+       ei = alloc_inode_sb(sb, btrfs_inode_cachep, GFP_KERNEL);
        if (!ei)
                return NULL;
 
 
        struct ceph_inode_info *ci;
        int i;
 
-       ci = kmem_cache_alloc(ceph_inode_cachep, GFP_NOFS);
+       ci = alloc_inode_sb(sb, ceph_inode_cachep, GFP_NOFS);
        if (!ci)
                return NULL;
 
 
 cifs_alloc_inode(struct super_block *sb)
 {
        struct cifsInodeInfo *cifs_inode;
-       cifs_inode = kmem_cache_alloc(cifs_inode_cachep, GFP_KERNEL);
+       cifs_inode = alloc_inode_sb(sb, cifs_inode_cachep, GFP_KERNEL);
        if (!cifs_inode)
                return NULL;
        cifs_inode->cifsAttrs = 0x20;   /* default */
 
 static struct inode *coda_alloc_inode(struct super_block *sb)
 {
        struct coda_inode_info *ei;
-       ei = kmem_cache_alloc(coda_inode_cachep, GFP_KERNEL);
+       ei = alloc_inode_sb(sb, coda_inode_cachep, GFP_KERNEL);
        if (!ei)
                return NULL;
        memset(&ei->c_fid, 0, sizeof(struct CodaFid));
 
        struct ecryptfs_inode_info *inode_info;
        struct inode *inode = NULL;
 
-       inode_info = kmem_cache_alloc(ecryptfs_inode_info_cache, GFP_KERNEL);
+       inode_info = alloc_inode_sb(sb, ecryptfs_inode_info_cache, GFP_KERNEL);
        if (unlikely(!inode_info))
                goto out;
        if (ecryptfs_init_crypt_stat(&inode_info->crypt_stat)) {
 
 static struct inode *efs_alloc_inode(struct super_block *sb)
 {
        struct efs_inode_info *ei;
-       ei = kmem_cache_alloc(efs_inode_cachep, GFP_KERNEL);
+       ei = alloc_inode_sb(sb, efs_inode_cachep, GFP_KERNEL);
        if (!ei)
                return NULL;
        return &ei->vfs_inode;
 
 static struct inode *erofs_alloc_inode(struct super_block *sb)
 {
        struct erofs_inode *vi =
-               kmem_cache_alloc(erofs_inode_cachep, GFP_KERNEL);
+               alloc_inode_sb(sb, erofs_inode_cachep, GFP_KERNEL);
 
        if (!vi)
                return NULL;
 
 {
        struct exfat_inode_info *ei;
 
-       ei = kmem_cache_alloc(exfat_inode_cachep, GFP_NOFS);
+       ei = alloc_inode_sb(sb, exfat_inode_cachep, GFP_NOFS);
        if (!ei)
                return NULL;
 
 
 static struct inode *ext2_alloc_inode(struct super_block *sb)
 {
        struct ext2_inode_info *ei;
-       ei = kmem_cache_alloc(ext2_inode_cachep, GFP_KERNEL);
+       ei = alloc_inode_sb(sb, ext2_inode_cachep, GFP_KERNEL);
        if (!ei)
                return NULL;
        ei->i_block_alloc_info = NULL;
 
 {
        struct ext4_inode_info *ei;
 
-       ei = kmem_cache_alloc(ext4_inode_cachep, GFP_NOFS);
+       ei = alloc_inode_sb(sb, ext4_inode_cachep, GFP_NOFS);
        if (!ei)
                return NULL;
 
 
 static struct inode *fat_alloc_inode(struct super_block *sb)
 {
        struct msdos_inode_info *ei;
-       ei = kmem_cache_alloc(fat_inode_cachep, GFP_NOFS);
+       ei = alloc_inode_sb(sb, fat_inode_cachep, GFP_NOFS);
        if (!ei)
                return NULL;
 
 
 {
        struct vxfs_inode_info *vi;
 
-       vi = kmem_cache_alloc(vxfs_inode_cachep, GFP_KERNEL);
+       vi = alloc_inode_sb(sb, vxfs_inode_cachep, GFP_KERNEL);
        if (!vi)
                return NULL;
        inode_init_once(&vi->vfs_inode);
 
 {
        struct fuse_inode *fi;
 
-       fi = kmem_cache_alloc(fuse_inode_cachep, GFP_KERNEL);
+       fi = alloc_inode_sb(sb, fuse_inode_cachep, GFP_KERNEL);
        if (!fi)
                return NULL;
 
 
 {
        struct gfs2_inode *ip;
 
-       ip = kmem_cache_alloc(gfs2_inode_cachep, GFP_KERNEL);
+       ip = alloc_inode_sb(sb, gfs2_inode_cachep, GFP_KERNEL);
        if (!ip)
                return NULL;
        ip->i_flags = 0;
 
 {
        struct hfs_inode_info *i;
 
-       i = kmem_cache_alloc(hfs_inode_cachep, GFP_KERNEL);
+       i = alloc_inode_sb(sb, hfs_inode_cachep, GFP_KERNEL);
        return i ? &i->vfs_inode : NULL;
 }
 
 
 {
        struct hfsplus_inode_info *i;
 
-       i = kmem_cache_alloc(hfsplus_inode_cachep, GFP_KERNEL);
+       i = alloc_inode_sb(sb, hfsplus_inode_cachep, GFP_KERNEL);
        return i ? &i->vfs_inode : NULL;
 }
 
 
 {
        struct hostfs_inode_info *hi;
 
-       hi = kmem_cache_alloc(hostfs_inode_cache, GFP_KERNEL_ACCOUNT);
+       hi = alloc_inode_sb(sb, hostfs_inode_cache, GFP_KERNEL_ACCOUNT);
        if (hi == NULL)
                return NULL;
        hi->fd = -1;
 
 static struct inode *hpfs_alloc_inode(struct super_block *sb)
 {
        struct hpfs_inode_info *ei;
-       ei = kmem_cache_alloc(hpfs_inode_cachep, GFP_NOFS);
+       ei = alloc_inode_sb(sb, hpfs_inode_cachep, GFP_NOFS);
        if (!ei)
                return NULL;
        return &ei->vfs_inode;
 
 
        if (unlikely(!hugetlbfs_dec_free_inodes(sbinfo)))
                return NULL;
-       p = kmem_cache_alloc(hugetlbfs_inode_cachep, GFP_KERNEL);
+       p = alloc_inode_sb(sb, hugetlbfs_inode_cachep, GFP_KERNEL);
        if (unlikely(!p)) {
                hugetlbfs_inc_free_inodes(sbinfo);
                return NULL;
 
 static struct inode *isofs_alloc_inode(struct super_block *sb)
 {
        struct iso_inode_info *ei;
-       ei = kmem_cache_alloc(isofs_inode_cachep, GFP_KERNEL);
+       ei = alloc_inode_sb(sb, isofs_inode_cachep, GFP_KERNEL);
        if (!ei)
                return NULL;
        return &ei->vfs_inode;
 
 {
        struct jffs2_inode_info *f;
 
-       f = kmem_cache_alloc(jffs2_inode_cachep, GFP_KERNEL);
+       f = alloc_inode_sb(sb, jffs2_inode_cachep, GFP_KERNEL);
        if (!f)
                return NULL;
        return &f->vfs_inode;
 
 {
        struct jfs_inode_info *jfs_inode;
 
-       jfs_inode = kmem_cache_alloc(jfs_inode_cachep, GFP_NOFS);
+       jfs_inode = alloc_inode_sb(sb, jfs_inode_cachep, GFP_NOFS);
        if (!jfs_inode)
                return NULL;
 #ifdef CONFIG_QUOTA
 
 static struct inode *minix_alloc_inode(struct super_block *sb)
 {
        struct minix_inode_info *ei;
-       ei = kmem_cache_alloc(minix_inode_cachep, GFP_KERNEL);
+       ei = alloc_inode_sb(sb, minix_inode_cachep, GFP_KERNEL);
        if (!ei)
                return NULL;
        return &ei->vfs_inode;
 
 struct inode *nfs_alloc_inode(struct super_block *sb)
 {
        struct nfs_inode *nfsi;
-       nfsi = kmem_cache_alloc(nfs_inode_cachep, GFP_KERNEL);
+       nfsi = alloc_inode_sb(sb, nfs_inode_cachep, GFP_KERNEL);
        if (!nfsi)
                return NULL;
        nfsi->flags = 0UL;
 
 {
        struct nilfs_inode_info *ii;
 
-       ii = kmem_cache_alloc(nilfs_inode_cachep, GFP_NOFS);
+       ii = alloc_inode_sb(sb, nilfs_inode_cachep, GFP_NOFS);
        if (!ii)
                return NULL;
        ii->i_bh = NULL;
 
        ntfs_inode *ni;
 
        ntfs_debug("Entering.");
-       ni = kmem_cache_alloc(ntfs_big_inode_cache, GFP_NOFS);
+       ni = alloc_inode_sb(sb, ntfs_big_inode_cache, GFP_NOFS);
        if (likely(ni != NULL)) {
                ni->state = 0;
                return VFS_I(ni);
 
 
 static struct inode *ntfs_alloc_inode(struct super_block *sb)
 {
-       struct ntfs_inode *ni = kmem_cache_alloc(ntfs_inode_cachep, GFP_NOFS);
+       struct ntfs_inode *ni = alloc_inode_sb(sb, ntfs_inode_cachep, GFP_NOFS);
 
        if (!ni)
                return NULL;
 
 {
        struct dlmfs_inode_private *ip;
 
-       ip = kmem_cache_alloc(dlmfs_inode_cache, GFP_NOFS);
+       ip = alloc_inode_sb(sb, dlmfs_inode_cache, GFP_NOFS);
        if (!ip)
                return NULL;
 
 
 {
        struct ocfs2_inode_info *oi;
 
-       oi = kmem_cache_alloc(ocfs2_inode_cachep, GFP_NOFS);
+       oi = alloc_inode_sb(sb, ocfs2_inode_cachep, GFP_NOFS);
        if (!oi)
                return NULL;
 
 
 {
        struct op_inode_info *oi;
 
-       oi = kmem_cache_alloc(op_inode_cachep, GFP_KERNEL);
+       oi = alloc_inode_sb(sb, op_inode_cachep, GFP_KERNEL);
        if (!oi)
                return NULL;
 
 
 {
        struct orangefs_inode_s *orangefs_inode;
 
-       orangefs_inode = kmem_cache_alloc(orangefs_inode_cache, GFP_KERNEL);
+       orangefs_inode = alloc_inode_sb(sb, orangefs_inode_cache, GFP_KERNEL);
        if (!orangefs_inode)
                return NULL;
 
 
 
 static struct inode *ovl_alloc_inode(struct super_block *sb)
 {
-       struct ovl_inode *oi = kmem_cache_alloc(ovl_inode_cachep, GFP_KERNEL);
+       struct ovl_inode *oi = alloc_inode_sb(sb, ovl_inode_cachep, GFP_KERNEL);
 
        if (!oi)
                return NULL;
 
 {
        struct proc_inode *ei;
 
-       ei = kmem_cache_alloc(proc_inode_cachep, GFP_KERNEL);
+       ei = alloc_inode_sb(sb, proc_inode_cachep, GFP_KERNEL);
        if (!ei)
                return NULL;
        ei->pid = NULL;
 
 static struct inode *qnx4_alloc_inode(struct super_block *sb)
 {
        struct qnx4_inode_info *ei;
-       ei = kmem_cache_alloc(qnx4_inode_cachep, GFP_KERNEL);
+       ei = alloc_inode_sb(sb, qnx4_inode_cachep, GFP_KERNEL);
        if (!ei)
                return NULL;
        return &ei->vfs_inode;
 
 static struct inode *qnx6_alloc_inode(struct super_block *sb)
 {
        struct qnx6_inode_info *ei;
-       ei = kmem_cache_alloc(qnx6_inode_cachep, GFP_KERNEL);
+       ei = alloc_inode_sb(sb, qnx6_inode_cachep, GFP_KERNEL);
        if (!ei)
                return NULL;
        return &ei->vfs_inode;
 
 static struct inode *reiserfs_alloc_inode(struct super_block *sb)
 {
        struct reiserfs_inode_info *ei;
-       ei = kmem_cache_alloc(reiserfs_inode_cachep, GFP_KERNEL);
+       ei = alloc_inode_sb(sb, reiserfs_inode_cachep, GFP_KERNEL);
        if (!ei)
                return NULL;
        atomic_set(&ei->openers, 0);
 
 {
        struct romfs_inode_info *inode;
 
-       inode = kmem_cache_alloc(romfs_inode_cachep, GFP_KERNEL);
+       inode = alloc_inode_sb(sb, romfs_inode_cachep, GFP_KERNEL);
        return inode ? &inode->vfs_inode : NULL;
 }
 
 
 static struct inode *squashfs_alloc_inode(struct super_block *sb)
 {
        struct squashfs_inode_info *ei =
-               kmem_cache_alloc(squashfs_inode_cachep, GFP_KERNEL);
+               alloc_inode_sb(sb, squashfs_inode_cachep, GFP_KERNEL);
 
        return ei ? &ei->vfs_inode : NULL;
 }
 
 {
        struct sysv_inode_info *si;
 
-       si = kmem_cache_alloc(sysv_inode_cachep, GFP_KERNEL);
+       si = alloc_inode_sb(sb, sysv_inode_cachep, GFP_KERNEL);
        if (!si)
                return NULL;
        return &si->vfs_inode;
 
 {
        struct ubifs_inode *ui;
 
-       ui = kmem_cache_alloc(ubifs_inode_slab, GFP_NOFS);
+       ui = alloc_inode_sb(sb, ubifs_inode_slab, GFP_NOFS);
        if (!ui)
                return NULL;
 
 
 static struct inode *udf_alloc_inode(struct super_block *sb)
 {
        struct udf_inode_info *ei;
-       ei = kmem_cache_alloc(udf_inode_cachep, GFP_KERNEL);
+       ei = alloc_inode_sb(sb, udf_inode_cachep, GFP_KERNEL);
        if (!ei)
                return NULL;
 
 
 {
        struct ufs_inode_info *ei;
 
-       ei = kmem_cache_alloc(ufs_inode_cachep, GFP_NOFS);
+       ei = alloc_inode_sb(sb, ufs_inode_cachep, GFP_NOFS);
        if (!ei)
                return NULL;
 
 
 {
        struct vboxsf_inode *sf_i;
 
-       sf_i = kmem_cache_alloc(vboxsf_inode_cachep, GFP_NOFS);
+       sf_i = alloc_inode_sb(sb, vboxsf_inode_cachep, GFP_NOFS);
        if (!sf_i)
                return NULL;
 
 
         * XXX: If this didn't occur in transactions, we could drop GFP_NOFAIL
         * and return NULL here on ENOMEM.
         */
-       ip = kmem_cache_alloc(xfs_inode_cache, GFP_KERNEL | __GFP_NOFAIL);
+       ip = alloc_inode_sb(mp->m_super, xfs_inode_cache, GFP_KERNEL | __GFP_NOFAIL);
 
        if (inode_init_always(mp->m_super, VFS_I(ip))) {
                kmem_cache_free(xfs_inode_cache, ip);
 
 {
        struct zonefs_inode_info *zi;
 
-       zi = kmem_cache_alloc(zonefs_inode_cachep, GFP_KERNEL);
+       zi = alloc_inode_sb(sb, zonefs_inode_cachep, GFP_KERNEL);
        if (!zi)
                return NULL;
 
 
 {
        struct mqueue_inode_info *ei;
 
-       ei = kmem_cache_alloc(mqueue_inode_cachep, GFP_KERNEL);
+       ei = alloc_inode_sb(sb, mqueue_inode_cachep, GFP_KERNEL);
        if (!ei)
                return NULL;
        return &ei->vfs_inode;
 
 static struct inode *shmem_alloc_inode(struct super_block *sb)
 {
        struct shmem_inode_info *info;
-       info = kmem_cache_alloc(shmem_inode_cachep, GFP_KERNEL);
+       info = alloc_inode_sb(sb, shmem_inode_cachep, GFP_KERNEL);
        if (!info)
                return NULL;
        return &info->vfs_inode;
 
 {
        struct socket_alloc *ei;
 
-       ei = kmem_cache_alloc(sock_inode_cachep, GFP_KERNEL);
+       ei = alloc_inode_sb(sb, sock_inode_cachep, GFP_KERNEL);
        if (!ei)
                return NULL;
        init_waitqueue_head(&ei->socket.wq.wait);
 
 rpc_alloc_inode(struct super_block *sb)
 {
        struct rpc_inode *rpci;
-       rpci = kmem_cache_alloc(rpc_inode_cachep, GFP_KERNEL);
+       rpci = alloc_inode_sb(sb, rpc_inode_cachep, GFP_KERNEL);
        if (!rpci)
                return NULL;
        return &rpci->vfs_inode;