summaryrefslogtreecommitdiffstats
path: root/fs/ext4/ioctl.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ext4/ioctl.c')
-rw-r--r--fs/ext4/ioctl.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c
index 42b3a73143cf..afb66d4ab5cf 100644
--- a/fs/ext4/ioctl.c
+++ b/fs/ext4/ioctl.c
@@ -64,18 +64,16 @@ static void swap_inode_data(struct inode *inode1, struct inode *inode2)
64 ei1 = EXT4_I(inode1); 64 ei1 = EXT4_I(inode1);
65 ei2 = EXT4_I(inode2); 65 ei2 = EXT4_I(inode2);
66 66
67 memswap(&inode1->i_flags, &inode2->i_flags, sizeof(inode1->i_flags)); 67 swap(inode1->i_flags, inode2->i_flags);
68 memswap(&inode1->i_version, &inode2->i_version, 68 swap(inode1->i_version, inode2->i_version);
69 sizeof(inode1->i_version)); 69 swap(inode1->i_blocks, inode2->i_blocks);
70 memswap(&inode1->i_blocks, &inode2->i_blocks, 70 swap(inode1->i_bytes, inode2->i_bytes);
71 sizeof(inode1->i_blocks)); 71 swap(inode1->i_atime, inode2->i_atime);
72 memswap(&inode1->i_bytes, &inode2->i_bytes, sizeof(inode1->i_bytes)); 72 swap(inode1->i_mtime, inode2->i_mtime);
73 memswap(&inode1->i_atime, &inode2->i_atime, sizeof(inode1->i_atime));
74 memswap(&inode1->i_mtime, &inode2->i_mtime, sizeof(inode1->i_mtime));
75 73
76 memswap(ei1->i_data, ei2->i_data, sizeof(ei1->i_data)); 74 memswap(ei1->i_data, ei2->i_data, sizeof(ei1->i_data));
77 memswap(&ei1->i_flags, &ei2->i_flags, sizeof(ei1->i_flags)); 75 swap(ei1->i_flags, ei2->i_flags);
78 memswap(&ei1->i_disksize, &ei2->i_disksize, sizeof(ei1->i_disksize)); 76 swap(ei1->i_disksize, ei2->i_disksize);
79 ext4_es_remove_extent(inode1, 0, EXT_MAX_BLOCKS); 77 ext4_es_remove_extent(inode1, 0, EXT_MAX_BLOCKS);
80 ext4_es_remove_extent(inode2, 0, EXT_MAX_BLOCKS); 78 ext4_es_remove_extent(inode2, 0, EXT_MAX_BLOCKS);
81 79
@@ -351,11 +349,14 @@ static int ext4_ioctl_setproject(struct file *filp, __u32 projid)
351 349
352 raw_inode = ext4_raw_inode(&iloc); 350 raw_inode = ext4_raw_inode(&iloc);
353 if (!EXT4_FITS_IN_INODE(raw_inode, ei, i_projid)) { 351 if (!EXT4_FITS_IN_INODE(raw_inode, ei, i_projid)) {
354 err = -EOVERFLOW; 352 err = ext4_expand_extra_isize(inode,
353 EXT4_SB(sb)->s_want_extra_isize,
354 &iloc);
355 if (err)
356 goto out_unlock;
357 } else {
355 brelse(iloc.bh); 358 brelse(iloc.bh);
356 goto out_unlock;
357 } 359 }
358 brelse(iloc.bh);
359 360
360 dquot_initialize(inode); 361 dquot_initialize(inode);
361 362