#include <linux/random.h>
#include <linux/bitops.h>
#include <linux/vs_dlimit.h>
+#include <linux/vserver/xid.h>
#include <asm/byteorder.h>
if (!inode)
return ERR_PTR(-ENOMEM);
- if (sb->s_flags & MS_TAGXID)
- inode->i_xid = vx_current_xid();
- else
- inode->i_xid = 0;
-
+ inode->i_xid = vx_current_fsxid(sb);
if (DLIMIT_ALLOC_INODE(sb, inode->i_xid)) {
err = -ENOSPC;
goto out;
goto out;
for (i = 0; i < sbi->s_groups_count; i++) {
+ err = -EIO;
+
gdp = ext3_get_group_desc(sb, group, &bh2);
+ if (!gdp)
+ goto fail;
- err = -EIO;
brelse(bitmap_bh);
bitmap_bh = read_inode_bitmap(sb, group);
if (!bitmap_bh)
ino = ext3_find_next_zero_bit((unsigned long *)
bitmap_bh->b_data, EXT3_INODES_PER_GROUP(sb), ino);
if (ino < EXT3_INODES_PER_GROUP(sb)) {
- int credits = 0;
BUFFER_TRACE(bitmap_bh, "get_write_access");
- err = ext3_journal_get_write_access_credits(handle,
- bitmap_bh, &credits);
+ err = ext3_journal_get_write_access(handle, bitmap_bh);
if (err)
goto fail;
goto got;
}
/* we lost it */
- journal_release_buffer(handle, bitmap_bh, credits);
+ journal_release_buffer(handle, bitmap_bh);
if (++ino < EXT3_INODES_PER_GROUP(sb))
goto repeat_in_this_group;
inode->i_mtime = inode->i_atime = inode->i_ctime = CURRENT_TIME_SEC;
memset(ei->i_data, 0, sizeof(ei->i_data));
- ei->i_next_alloc_block = 0;
- ei->i_next_alloc_goal = 0;
ei->i_dir_start_lookup = 0;
ei->i_disksize = 0;
ei->i_file_acl = 0;
ei->i_dir_acl = 0;
ei->i_dtime = 0;
- ei->i_rsv_window.rsv_start = EXT3_RESERVE_WINDOW_NOT_ALLOCATED;
- ei->i_rsv_window.rsv_end = EXT3_RESERVE_WINDOW_NOT_ALLOCATED;
- atomic_set(&ei->i_rsv_window.rsv_goal_size, EXT3_DEFAULT_RESERVE_BLOCKS);
- atomic_set(&ei->i_rsv_window.rsv_alloc_hit, 0);
- seqlock_init(&ei->i_rsv_window.rsv_seqlock);
+ ei->i_block_alloc_info = NULL;
ei->i_block_group = group;
ext3_set_inode_flags(inode);