#include <linux/backing-dev.h>
#include <linux/buffer_head.h>
#include <linux/random.h>
+#include <linux/vs_base.h>
+#include <linux/vs_dlimit.h>
+
#include "ext2.h"
#include "xattr.h"
#include "acl.h"
if (!is_bad_inode(inode)) {
/* Quota is already initialized in iput() */
ext2_xattr_delete_inode(inode);
+ DLIMIT_FREE_INODE(sb, inode->i_xid);
DQUOT_FREE_INODE(inode);
DQUOT_DROP(inode);
}
if (!inode)
return ERR_PTR(-ENOMEM);
+ if (DLIMIT_ALLOC_INODE(sb, inode->i_xid)) {
+ err = -ENOSPC;
+ goto fail_dlim;
+ }
ei = EXT2_I(inode);
sbi = EXT2_SB(sb);
es = sbi->s_es;
return inode;
fail2:
+ DLIMIT_FREE_INODE(sb, inode->i_xid);
inode->i_flags |= S_NOQUOTA;
inode->i_nlink = 0;
iput(inode);
return ERR_PTR(err);
fail:
+ DLIMIT_FREE_INODE(sb, inode->i_xid);
+fail_dlim:
make_bad_inode(inode);
iput(inode);
return ERR_PTR(err);
}
brelse(bitmap_bh);
printk("ext2_count_free_inodes: stored = %lu, computed = %lu, %lu\n",
- percpu_counter_read(EXT2_SB(sb)->s_freeinodes_counter),
+ percpu_counter_read(&EXT2_SB(sb)->s_freeinodes_counter),
desc_count, bitmap_count);
unlock_super(sb);
return desc_count;
bitmap_count += x;
}
brelse(bitmap_bh);
- if (percpu_counter_read(EXT2_SB(sb)->s_freeinodes_counter) !=
+ if (percpu_counter_read(&EXT2_SB(sb)->s_freeinodes_counter) !=
bitmap_count)
ext2_error(sb, "ext2_check_inodes_bitmap",
"Wrong free inodes count in super block, "