|
@@ -192,7 +192,7 @@ setversion_out:
|
|
case EXT4_IOC_GROUP_EXTEND: {
|
|
case EXT4_IOC_GROUP_EXTEND: {
|
|
ext4_fsblk_t n_blocks_count;
|
|
ext4_fsblk_t n_blocks_count;
|
|
struct super_block *sb = inode->i_sb;
|
|
struct super_block *sb = inode->i_sb;
|
|
- int err, err2;
|
|
|
|
|
|
+ int err, err2=0;
|
|
|
|
|
|
if (!capable(CAP_SYS_RESOURCE))
|
|
if (!capable(CAP_SYS_RESOURCE))
|
|
return -EPERM;
|
|
return -EPERM;
|
|
@@ -205,9 +205,11 @@ setversion_out:
|
|
return err;
|
|
return err;
|
|
|
|
|
|
err = ext4_group_extend(sb, EXT4_SB(sb)->s_es, n_blocks_count);
|
|
err = ext4_group_extend(sb, EXT4_SB(sb)->s_es, n_blocks_count);
|
|
- jbd2_journal_lock_updates(EXT4_SB(sb)->s_journal);
|
|
|
|
- err2 = jbd2_journal_flush(EXT4_SB(sb)->s_journal);
|
|
|
|
- jbd2_journal_unlock_updates(EXT4_SB(sb)->s_journal);
|
|
|
|
|
|
+ if (EXT4_SB(sb)->s_journal) {
|
|
|
|
+ jbd2_journal_lock_updates(EXT4_SB(sb)->s_journal);
|
|
|
|
+ err2 = jbd2_journal_flush(EXT4_SB(sb)->s_journal);
|
|
|
|
+ jbd2_journal_unlock_updates(EXT4_SB(sb)->s_journal);
|
|
|
|
+ }
|
|
if (err == 0)
|
|
if (err == 0)
|
|
err = err2;
|
|
err = err2;
|
|
mnt_drop_write(filp->f_path.mnt);
|
|
mnt_drop_write(filp->f_path.mnt);
|
|
@@ -252,7 +254,7 @@ setversion_out:
|
|
case EXT4_IOC_GROUP_ADD: {
|
|
case EXT4_IOC_GROUP_ADD: {
|
|
struct ext4_new_group_data input;
|
|
struct ext4_new_group_data input;
|
|
struct super_block *sb = inode->i_sb;
|
|
struct super_block *sb = inode->i_sb;
|
|
- int err, err2;
|
|
|
|
|
|
+ int err, err2=0;
|
|
|
|
|
|
if (!capable(CAP_SYS_RESOURCE))
|
|
if (!capable(CAP_SYS_RESOURCE))
|
|
return -EPERM;
|
|
return -EPERM;
|
|
@@ -266,9 +268,11 @@ setversion_out:
|
|
return err;
|
|
return err;
|
|
|
|
|
|
err = ext4_group_add(sb, &input);
|
|
err = ext4_group_add(sb, &input);
|
|
- jbd2_journal_lock_updates(EXT4_SB(sb)->s_journal);
|
|
|
|
- err2 = jbd2_journal_flush(EXT4_SB(sb)->s_journal);
|
|
|
|
- jbd2_journal_unlock_updates(EXT4_SB(sb)->s_journal);
|
|
|
|
|
|
+ if (EXT4_SB(sb)->s_journal) {
|
|
|
|
+ jbd2_journal_lock_updates(EXT4_SB(sb)->s_journal);
|
|
|
|
+ err2 = jbd2_journal_flush(EXT4_SB(sb)->s_journal);
|
|
|
|
+ jbd2_journal_unlock_updates(EXT4_SB(sb)->s_journal);
|
|
|
|
+ }
|
|
if (err == 0)
|
|
if (err == 0)
|
|
err = err2;
|
|
err = err2;
|
|
mnt_drop_write(filp->f_path.mnt);
|
|
mnt_drop_write(filp->f_path.mnt);
|