diff options
Diffstat (limited to 'fs/f2fs')
-rw-r--r-- | fs/f2fs/file.c | 6 | ||||
-rw-r--r-- | fs/f2fs/inline.c | 3 |
2 files changed, 9 insertions, 0 deletions
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c index edc3ce867e9c..7c2ec3ebebe0 100644 --- a/fs/f2fs/file.c +++ b/fs/f2fs/file.c | |||
@@ -522,6 +522,12 @@ void f2fs_truncate(struct inode *inode) | |||
522 | 522 | ||
523 | trace_f2fs_truncate(inode); | 523 | trace_f2fs_truncate(inode); |
524 | 524 | ||
525 | /* we should check inline_data size */ | ||
526 | if (f2fs_has_inline_data(inode) && !f2fs_may_inline(inode)) { | ||
527 | if (f2fs_convert_inline_inode(inode)) | ||
528 | return; | ||
529 | } | ||
530 | |||
525 | if (!truncate_blocks(inode, i_size_read(inode), true)) { | 531 | if (!truncate_blocks(inode, i_size_read(inode), true)) { |
526 | inode->i_mtime = inode->i_ctime = CURRENT_TIME; | 532 | inode->i_mtime = inode->i_ctime = CURRENT_TIME; |
527 | mark_inode_dirty(inode); | 533 | mark_inode_dirty(inode); |
diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c index 231067027745..053d114f0528 100644 --- a/fs/f2fs/inline.c +++ b/fs/f2fs/inline.c | |||
@@ -24,6 +24,9 @@ bool f2fs_may_inline(struct inode *inode) | |||
24 | if (!S_ISREG(inode->i_mode)) | 24 | if (!S_ISREG(inode->i_mode)) |
25 | return false; | 25 | return false; |
26 | 26 | ||
27 | if (i_size_read(inode) > MAX_INLINE_DATA) | ||
28 | return false; | ||
29 | |||
27 | return true; | 30 | return true; |
28 | } | 31 | } |
29 | 32 | ||