Merge branch 'for_next' into for_linus
This commit is contained in:
commit
0c755de03e
|
@ -1991,6 +1991,7 @@ ext3_grpblk_t ext3_trim_all_free(struct super_block *sb, unsigned int group,
|
||||||
spin_unlock(sb_bgl_lock(sbi, group));
|
spin_unlock(sb_bgl_lock(sbi, group));
|
||||||
percpu_counter_sub(&sbi->s_freeblocks_counter, next - start);
|
percpu_counter_sub(&sbi->s_freeblocks_counter, next - start);
|
||||||
|
|
||||||
|
free_blocks -= next - start;
|
||||||
/* Do not issue a TRIM on extents smaller than minblocks */
|
/* Do not issue a TRIM on extents smaller than minblocks */
|
||||||
if ((next - start) < minblocks)
|
if ((next - start) < minblocks)
|
||||||
goto free_extent;
|
goto free_extent;
|
||||||
|
@ -2040,7 +2041,7 @@ free_extent:
|
||||||
cond_resched();
|
cond_resched();
|
||||||
|
|
||||||
/* No more suitable extents */
|
/* No more suitable extents */
|
||||||
if ((free_blocks - count) < minblocks)
|
if (free_blocks < minblocks)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2090,7 +2091,8 @@ int ext3_trim_fs(struct super_block *sb, struct fstrim_range *range)
|
||||||
ext3_fsblk_t max_blks = le32_to_cpu(es->s_blocks_count);
|
ext3_fsblk_t max_blks = le32_to_cpu(es->s_blocks_count);
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
start = range->start >> sb->s_blocksize_bits;
|
start = (range->start >> sb->s_blocksize_bits) +
|
||||||
|
le32_to_cpu(es->s_first_data_block);
|
||||||
len = range->len >> sb->s_blocksize_bits;
|
len = range->len >> sb->s_blocksize_bits;
|
||||||
minlen = range->minlen >> sb->s_blocksize_bits;
|
minlen = range->minlen >> sb->s_blocksize_bits;
|
||||||
trimmed = 0;
|
trimmed = 0;
|
||||||
|
@ -2099,10 +2101,6 @@ int ext3_trim_fs(struct super_block *sb, struct fstrim_range *range)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
if (start >= max_blks)
|
if (start >= max_blks)
|
||||||
goto out;
|
goto out;
|
||||||
if (start < le32_to_cpu(es->s_first_data_block)) {
|
|
||||||
len -= le32_to_cpu(es->s_first_data_block) - start;
|
|
||||||
start = le32_to_cpu(es->s_first_data_block);
|
|
||||||
}
|
|
||||||
if (start + len > max_blks)
|
if (start + len > max_blks)
|
||||||
len = max_blks - start;
|
len = max_blks - start;
|
||||||
|
|
||||||
|
@ -2129,10 +2127,15 @@ int ext3_trim_fs(struct super_block *sb, struct fstrim_range *range)
|
||||||
if (free_blocks < minlen)
|
if (free_blocks < minlen)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (len >= EXT3_BLOCKS_PER_GROUP(sb))
|
/*
|
||||||
len -= (EXT3_BLOCKS_PER_GROUP(sb) - first_block);
|
* For all the groups except the last one, last block will
|
||||||
else
|
* always be EXT3_BLOCKS_PER_GROUP(sb), so we only need to
|
||||||
|
* change it for the last group in which case first_block +
|
||||||
|
* len < EXT3_BLOCKS_PER_GROUP(sb).
|
||||||
|
*/
|
||||||
|
if (first_block + len < EXT3_BLOCKS_PER_GROUP(sb))
|
||||||
last_block = first_block + len;
|
last_block = first_block + len;
|
||||||
|
len -= last_block - first_block;
|
||||||
|
|
||||||
ret = ext3_trim_all_free(sb, group, first_block,
|
ret = ext3_trim_all_free(sb, group, first_block,
|
||||||
last_block, minlen);
|
last_block, minlen);
|
||||||
|
|
|
@ -1540,8 +1540,8 @@ static int ext3_dx_add_entry(handle_t *handle, struct dentry *dentry,
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
node2 = (struct dx_node *)(bh2->b_data);
|
node2 = (struct dx_node *)(bh2->b_data);
|
||||||
entries2 = node2->entries;
|
entries2 = node2->entries;
|
||||||
|
memset(&node2->fake, 0, sizeof(struct fake_dirent));
|
||||||
node2->fake.rec_len = ext3_rec_len_to_disk(sb->s_blocksize);
|
node2->fake.rec_len = ext3_rec_len_to_disk(sb->s_blocksize);
|
||||||
node2->fake.inode = 0;
|
|
||||||
BUFFER_TRACE(frame->bh, "get_write_access");
|
BUFFER_TRACE(frame->bh, "get_write_access");
|
||||||
err = ext3_journal_get_write_access(handle, frame->bh);
|
err = ext3_journal_get_write_access(handle, frame->bh);
|
||||||
if (err)
|
if (err)
|
||||||
|
|
|
@ -1464,6 +1464,13 @@ static void ext3_orphan_cleanup (struct super_block * sb,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Check if feature set allows readwrite operations */
|
||||||
|
if (EXT3_HAS_RO_COMPAT_FEATURE(sb, ~EXT3_FEATURE_RO_COMPAT_SUPP)) {
|
||||||
|
ext3_msg(sb, KERN_INFO, "Skipping orphan cleanup due to "
|
||||||
|
"unknown ROCOMPAT features");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (EXT3_SB(sb)->s_mount_state & EXT3_ERROR_FS) {
|
if (EXT3_SB(sb)->s_mount_state & EXT3_ERROR_FS) {
|
||||||
if (es->s_last_orphan)
|
if (es->s_last_orphan)
|
||||||
jbd_debug(1, "Errors on filesystem, "
|
jbd_debug(1, "Errors on filesystem, "
|
||||||
|
|
|
@ -839,7 +839,7 @@ journal_t * journal_init_inode (struct inode *inode)
|
||||||
err = journal_bmap(journal, 0, &blocknr);
|
err = journal_bmap(journal, 0, &blocknr);
|
||||||
/* If that failed, give up */
|
/* If that failed, give up */
|
||||||
if (err) {
|
if (err) {
|
||||||
printk(KERN_ERR "%s: Cannnot locate journal superblock\n",
|
printk(KERN_ERR "%s: Cannot locate journal superblock\n",
|
||||||
__func__);
|
__func__);
|
||||||
goto out_err;
|
goto out_err;
|
||||||
}
|
}
|
||||||
|
|
|
@ -991,7 +991,7 @@ journal_t * jbd2_journal_init_inode (struct inode *inode)
|
||||||
err = jbd2_journal_bmap(journal, 0, &blocknr);
|
err = jbd2_journal_bmap(journal, 0, &blocknr);
|
||||||
/* If that failed, give up */
|
/* If that failed, give up */
|
||||||
if (err) {
|
if (err) {
|
||||||
printk(KERN_ERR "%s: Cannnot locate journal superblock\n",
|
printk(KERN_ERR "%s: Cannot locate journal superblock\n",
|
||||||
__func__);
|
__func__);
|
||||||
goto out_err;
|
goto out_err;
|
||||||
}
|
}
|
||||||
|
|
|
@ -112,7 +112,7 @@ static int v2_read_file_info(struct super_block *sb, int type)
|
||||||
if (!info->dqi_priv) {
|
if (!info->dqi_priv) {
|
||||||
printk(KERN_WARNING
|
printk(KERN_WARNING
|
||||||
"Not enough memory for quota information structure.\n");
|
"Not enough memory for quota information structure.\n");
|
||||||
return -1;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
qinfo = info->dqi_priv;
|
qinfo = info->dqi_priv;
|
||||||
if (version == 0) {
|
if (version == 0) {
|
||||||
|
|
Loading…
Reference in New Issue