diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-08-04 23:46:54 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-08-04 23:46:54 -0400 |
| commit | 8e099d1e8be3f598dcefd04d3cd5eb3673d4e098 (patch) | |
| tree | b1a451984750c29a5b8741b287155960f4583b09 /fs/ext4/inline.c | |
| parent | b54ecfb7022d93e8d342ed4a2512d858d0682c0c (diff) | |
| parent | 86f0afd463215fc3e58020493482faa4ac3a4d69 (diff) | |
Merge tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4
Pull ext4 updates from Ted Ts'o:
"Bug fixes and clean ups for the 3.17 merge window"
* tag 'ext4_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
ext4: fix ext4_discard_allocated_blocks() if we can't allocate the pa struct
ext4: fix COLLAPSE RANGE test for bigalloc file systems
ext4: check inline directory before converting
ext4: fix incorrect locking in move_extent_per_page
ext4: use correct depth value
ext4: add i_data_sem sanity check
ext4: fix wrong size computation in ext4_mb_normalize_request()
ext4: make ext4_has_inline_data() as a inline function
ext4: remove readpage() check in ext4_mmap_file()
ext4: fix punch hole on files with indirect mapping
ext4: remove metadata reservation checks
ext4: rearrange initialization to fix EXT4FS_DEBUG
Diffstat (limited to 'fs/ext4/inline.c')
| -rw-r--r-- | fs/ext4/inline.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/fs/ext4/inline.c b/fs/ext4/inline.c index 645205d8ada6..bea662bd0ca6 100644 --- a/fs/ext4/inline.c +++ b/fs/ext4/inline.c | |||
| @@ -120,12 +120,6 @@ int ext4_get_max_inline_size(struct inode *inode) | |||
| 120 | return max_inline_size + EXT4_MIN_INLINE_DATA_SIZE; | 120 | return max_inline_size + EXT4_MIN_INLINE_DATA_SIZE; |
| 121 | } | 121 | } |
| 122 | 122 | ||
| 123 | int ext4_has_inline_data(struct inode *inode) | ||
| 124 | { | ||
| 125 | return ext4_test_inode_flag(inode, EXT4_INODE_INLINE_DATA) && | ||
| 126 | EXT4_I(inode)->i_inline_off; | ||
| 127 | } | ||
| 128 | |||
| 129 | /* | 123 | /* |
| 130 | * this function does not take xattr_sem, which is OK because it is | 124 | * this function does not take xattr_sem, which is OK because it is |
| 131 | * currently only used in a code path coming form ext4_iget, before | 125 | * currently only used in a code path coming form ext4_iget, before |
| @@ -1178,6 +1172,18 @@ static int ext4_convert_inline_data_nolock(handle_t *handle, | |||
| 1178 | if (error < 0) | 1172 | if (error < 0) |
| 1179 | goto out; | 1173 | goto out; |
| 1180 | 1174 | ||
| 1175 | /* | ||
| 1176 | * Make sure the inline directory entries pass checks before we try to | ||
| 1177 | * convert them, so that we avoid touching stuff that needs fsck. | ||
| 1178 | */ | ||
| 1179 | if (S_ISDIR(inode->i_mode)) { | ||
| 1180 | error = ext4_check_all_de(inode, iloc->bh, | ||
| 1181 | buf + EXT4_INLINE_DOTDOT_SIZE, | ||
| 1182 | inline_size - EXT4_INLINE_DOTDOT_SIZE); | ||
| 1183 | if (error) | ||
| 1184 | goto out; | ||
| 1185 | } | ||
| 1186 | |||
| 1181 | error = ext4_destroy_inline_data_nolock(handle, inode); | 1187 | error = ext4_destroy_inline_data_nolock(handle, inode); |
| 1182 | if (error) | 1188 | if (error) |
| 1183 | goto out; | 1189 | goto out; |
