|
@@ -384,13 +384,21 @@ static int f2fs_convert_inline_dir(struct inode *dir, struct page *ipage,
|
|
|
goto out;
|
|
|
|
|
|
f2fs_wait_on_page_writeback(page, DATA);
|
|
|
- zero_user_segment(page, 0, PAGE_CACHE_SIZE);
|
|
|
+ zero_user_segment(page, MAX_INLINE_DATA, PAGE_CACHE_SIZE);
|
|
|
|
|
|
dentry_blk = kmap_atomic(page);
|
|
|
|
|
|
/* copy data from inline dentry block to new dentry block */
|
|
|
memcpy(dentry_blk->dentry_bitmap, inline_dentry->dentry_bitmap,
|
|
|
INLINE_DENTRY_BITMAP_SIZE);
|
|
|
+ memset(dentry_blk->dentry_bitmap + INLINE_DENTRY_BITMAP_SIZE, 0,
|
|
|
+ SIZE_OF_DENTRY_BITMAP - INLINE_DENTRY_BITMAP_SIZE);
|
|
|
+ /*
|
|
|
+ * we do not need to zero out remainder part of dentry and filename
|
|
|
+ * field, since we have used bitmap for marking the usage status of
|
|
|
+ * them, besides, we can also ignore copying/zeroing reserved space
|
|
|
+ * of dentry block, because them haven't been used so far.
|
|
|
+ */
|
|
|
memcpy(dentry_blk->dentry, inline_dentry->dentry,
|
|
|
sizeof(struct f2fs_dir_entry) * NR_INLINE_DENTRY);
|
|
|
memcpy(dentry_blk->filename, inline_dentry->filename,
|