diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-07-13 19:39:25 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-07-13 19:39:25 -0400 |
commit | 1cf29683f4414296dc772a87caa207cab16c310c (patch) | |
tree | 90d05ba531c5ad48d8d171d5b78038a7df7728e7 /fs/ext4/ioctl.c | |
parent | 4a390e07fc53ce9dd615d7b788e9ecc73f87ad94 (diff) | |
parent | 96577c43827697ca1af5982fa256a34786d0c720 (diff) |
Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4
* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
jbd2: fix race between write_metadata_buffer and get_write_access
ext4: Fix ext4_mb_initialize_context() to initialize all fields
ext4: fix null handler of ioctls in no journal mode
ext4: Fix buffer head reference leak in no-journal mode
ext4: Move __ext4_journalled_writepage() to avoid forward declaration
ext4: Fix mmap/truncate race when blocksize < pagesize && !nodellaoc
ext4: Fix mmap/truncate race when blocksize < pagesize && delayed allocation
ext4: Don't look at buffer_heads outside i_size.
ext4: Fix goal inum check in the inode allocator
ext4: fix no journal corruption with locale-gen
ext4: Calculate required journal credits for inserting an extent properly
ext4: Fix truncation of symlinks after failed write
jbd2: Fix a race between checkpointing code and journal_get_write_access()
ext4: Use rcu_barrier() on module unload.
ext4: naturally align struct ext4_allocation_request
ext4: mark several more functions in mballoc.c as noinline
ext4: Fix potential reclaim deadlock when truncating partial block
jbd2: Remove GFP_ATOMIC kmalloc from inside spinlock critical region
ext4: Fix type warning on 64-bit platforms in tracing events header
Diffstat (limited to 'fs/ext4/ioctl.c')
-rw-r--r-- | fs/ext4/ioctl.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c index 24a6abb2aef..7050a9cd04a 100644 --- a/fs/ext4/ioctl.c +++ b/fs/ext4/ioctl.c | |||
@@ -191,7 +191,7 @@ setversion_out: | |||
191 | case EXT4_IOC_GROUP_EXTEND: { | 191 | case EXT4_IOC_GROUP_EXTEND: { |
192 | ext4_fsblk_t n_blocks_count; | 192 | ext4_fsblk_t n_blocks_count; |
193 | struct super_block *sb = inode->i_sb; | 193 | struct super_block *sb = inode->i_sb; |
194 | int err, err2; | 194 | int err, err2=0; |
195 | 195 | ||
196 | if (!capable(CAP_SYS_RESOURCE)) | 196 | if (!capable(CAP_SYS_RESOURCE)) |
197 | return -EPERM; | 197 | return -EPERM; |
@@ -204,9 +204,11 @@ setversion_out: | |||
204 | return err; | 204 | return err; |
205 | 205 | ||
206 | err = ext4_group_extend(sb, EXT4_SB(sb)->s_es, n_blocks_count); | 206 | err = ext4_group_extend(sb, EXT4_SB(sb)->s_es, n_blocks_count); |
207 | jbd2_journal_lock_updates(EXT4_SB(sb)->s_journal); | 207 | if (EXT4_SB(sb)->s_journal) { |
208 | err2 = jbd2_journal_flush(EXT4_SB(sb)->s_journal); | 208 | jbd2_journal_lock_updates(EXT4_SB(sb)->s_journal); |
209 | jbd2_journal_unlock_updates(EXT4_SB(sb)->s_journal); | 209 | err2 = jbd2_journal_flush(EXT4_SB(sb)->s_journal); |
210 | jbd2_journal_unlock_updates(EXT4_SB(sb)->s_journal); | ||
211 | } | ||
210 | if (err == 0) | 212 | if (err == 0) |
211 | err = err2; | 213 | err = err2; |
212 | mnt_drop_write(filp->f_path.mnt); | 214 | mnt_drop_write(filp->f_path.mnt); |
@@ -251,7 +253,7 @@ setversion_out: | |||
251 | case EXT4_IOC_GROUP_ADD: { | 253 | case EXT4_IOC_GROUP_ADD: { |
252 | struct ext4_new_group_data input; | 254 | struct ext4_new_group_data input; |
253 | struct super_block *sb = inode->i_sb; | 255 | struct super_block *sb = inode->i_sb; |
254 | int err, err2; | 256 | int err, err2=0; |
255 | 257 | ||
256 | if (!capable(CAP_SYS_RESOURCE)) | 258 | if (!capable(CAP_SYS_RESOURCE)) |
257 | return -EPERM; | 259 | return -EPERM; |
@@ -265,9 +267,11 @@ setversion_out: | |||
265 | return err; | 267 | return err; |
266 | 268 | ||
267 | err = ext4_group_add(sb, &input); | 269 | err = ext4_group_add(sb, &input); |
268 | jbd2_journal_lock_updates(EXT4_SB(sb)->s_journal); | 270 | if (EXT4_SB(sb)->s_journal) { |
269 | err2 = jbd2_journal_flush(EXT4_SB(sb)->s_journal); | 271 | jbd2_journal_lock_updates(EXT4_SB(sb)->s_journal); |
270 | jbd2_journal_unlock_updates(EXT4_SB(sb)->s_journal); | 272 | err2 = jbd2_journal_flush(EXT4_SB(sb)->s_journal); |
273 | jbd2_journal_unlock_updates(EXT4_SB(sb)->s_journal); | ||
274 | } | ||
271 | if (err == 0) | 275 | if (err == 0) |
272 | err = err2; | 276 | err = err2; |
273 | mnt_drop_write(filp->f_path.mnt); | 277 | mnt_drop_write(filp->f_path.mnt); |