Merge branch 'master' into next
Conflicts: security/keys/internal.h security/keys/process_keys.c security/keys/request_key.c Fixed conflicts above by using the non 'tsk' versions. Signed-off-by: James Morris <jmorris@namei.org>
This commit is contained in:
@@ -718,6 +718,8 @@ got:
|
||||
gdp->bg_flags &= cpu_to_le16(~EXT4_BG_BLOCK_UNINIT);
|
||||
free = ext4_free_blocks_after_init(sb, group, gdp);
|
||||
gdp->bg_free_blocks_count = cpu_to_le16(free);
|
||||
gdp->bg_checksum = ext4_group_desc_csum(sbi, group,
|
||||
gdp);
|
||||
}
|
||||
spin_unlock(sb_bgl_lock(sbi, group));
|
||||
|
||||
|
@@ -2329,6 +2329,8 @@ static int ext4_da_writepage(struct page *page,
|
||||
unlock_page(page);
|
||||
return 0;
|
||||
}
|
||||
/* now mark the buffer_heads as dirty and uptodate */
|
||||
block_commit_write(page, 0, PAGE_CACHE_SIZE);
|
||||
}
|
||||
|
||||
if (test_opt(inode->i_sb, NOBH) && ext4_should_writeback_data(inode))
|
||||
@@ -4580,9 +4582,10 @@ static int ext4_indirect_trans_blocks(struct inode *inode, int nrblocks,
|
||||
static int ext4_index_trans_blocks(struct inode *inode, int nrblocks, int chunk)
|
||||
{
|
||||
if (!(EXT4_I(inode)->i_flags & EXT4_EXTENTS_FL))
|
||||
return ext4_indirect_trans_blocks(inode, nrblocks, 0);
|
||||
return ext4_ext_index_trans_blocks(inode, nrblocks, 0);
|
||||
return ext4_indirect_trans_blocks(inode, nrblocks, chunk);
|
||||
return ext4_ext_index_trans_blocks(inode, nrblocks, chunk);
|
||||
}
|
||||
|
||||
/*
|
||||
* Account for index blocks, block groups bitmaps and block group
|
||||
* descriptor blocks if modify datablocks and index blocks
|
||||
|
@@ -4441,6 +4441,7 @@ ext4_mb_free_metadata(handle_t *handle, struct ext4_buddy *e4b,
|
||||
else if (block >= (entry->start_blk + entry->count))
|
||||
n = &(*n)->rb_right;
|
||||
else {
|
||||
ext4_unlock_group(sb, group);
|
||||
ext4_error(sb, __func__,
|
||||
"Double free of blocks %d (%d %d)\n",
|
||||
block, entry->start_blk, entry->count);
|
||||
|
@@ -1458,9 +1458,8 @@ static int ext4_fill_flex_info(struct super_block *sb)
|
||||
|
||||
/* We allocate both existing and potentially added groups */
|
||||
flex_group_count = ((sbi->s_groups_count + groups_per_flex - 1) +
|
||||
((sbi->s_es->s_reserved_gdt_blocks +1 ) <<
|
||||
EXT4_DESC_PER_BLOCK_BITS(sb))) /
|
||||
groups_per_flex;
|
||||
((le16_to_cpu(sbi->s_es->s_reserved_gdt_blocks) + 1) <<
|
||||
EXT4_DESC_PER_BLOCK_BITS(sb))) / groups_per_flex;
|
||||
sbi->s_flex_groups = kzalloc(flex_group_count *
|
||||
sizeof(struct flex_groups), GFP_KERNEL);
|
||||
if (sbi->s_flex_groups == NULL) {
|
||||
@@ -2885,12 +2884,9 @@ int ext4_force_commit(struct super_block *sb)
|
||||
/*
|
||||
* Ext4 always journals updates to the superblock itself, so we don't
|
||||
* have to propagate any other updates to the superblock on disk at this
|
||||
* point. Just start an async writeback to get the buffers on their way
|
||||
* to the disk.
|
||||
*
|
||||
* This implicitly triggers the writebehind on sync().
|
||||
* point. (We can probably nuke this function altogether, and remove
|
||||
* any mention to sb->s_dirt in all of fs/ext4; eventual cleanup...)
|
||||
*/
|
||||
|
||||
static void ext4_write_super(struct super_block *sb)
|
||||
{
|
||||
if (mutex_trylock(&sb->s_lock) != 0)
|
||||
@@ -2900,15 +2896,15 @@ static void ext4_write_super(struct super_block *sb)
|
||||
|
||||
static int ext4_sync_fs(struct super_block *sb, int wait)
|
||||
{
|
||||
tid_t target;
|
||||
int ret = 0;
|
||||
|
||||
trace_mark(ext4_sync_fs, "dev %s wait %d", sb->s_id, wait);
|
||||
sb->s_dirt = 0;
|
||||
if (jbd2_journal_start_commit(EXT4_SB(sb)->s_journal, &target)) {
|
||||
if (wait)
|
||||
jbd2_log_wait_commit(EXT4_SB(sb)->s_journal, target);
|
||||
}
|
||||
return 0;
|
||||
if (wait)
|
||||
ret = ext4_force_commit(sb);
|
||||
else
|
||||
jbd2_journal_start_commit(EXT4_SB(sb)->s_journal, NULL);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user