summaryrefslogtreecommitdiffstats
path: root/Kbuild
diff options
context:
space:
mode:
authorHuajun Li <huajun.li@intel.com>2013-11-10 23:13:20 +0800
committerJaegeuk Kim <jaegeuk.kim@samsung.com>2013-12-26 20:40:41 +0900
commit9ffe0fb5f3bbd01c766162bb17a62dee0df7e125 (patch)
tree055460e4451d562f1a59792eeed3cb840e6c7d22 /Kbuild
parente18c65b2ac91aa59f89333da595d5155184f76cf (diff)
downloadlinux-stable-9ffe0fb5f3bbd01c766162bb17a62dee0df7e125.tar.gz
linux-stable-9ffe0fb5f3bbd01c766162bb17a62dee0df7e125.tar.bz2
linux-stable-9ffe0fb5f3bbd01c766162bb17a62dee0df7e125.zip
f2fs: handle inline data operations
Hook inline data read/write, truncate, fallocate, setattr, etc. Files need meet following 2 requirement to inline: 1) file size is not greater than MAX_INLINE_DATA; 2) file doesn't pre-allocate data blocks by fallocate(). FI_INLINE_DATA will not be set while creating a new regular inode because most of the files are bigger than ~3.4K. Set FI_INLINE_DATA only when data is submitted to block layer, ranther than set it while creating a new inode, this also avoids converting data from inline to normal data block and vice versa. While writting inline data to inode block, the first data block should be released if the file has a block indexed by i_addr[0]. On the other hand, when a file operation is appied to a file with inline data, we need to test if this file can remain inline by doing this operation, otherwise it should be convert into normal file by reserving a new data block, copying inline data to this new block and clear FI_INLINE_DATA flag. Because reserve a new data block here will make use of i_addr[0], if we save inline data in i_addr[0..872], then the first 4 bytes would be overwriten. This problem can be avoided simply by not using i_addr[0] for inline data. Signed-off-by: Huajun Li <huajun.li@intel.com> Signed-off-by: Haicheng Li <haicheng.li@linux.intel.com> Signed-off-by: Weihong Xu <weihong.xu@intel.com> Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
Diffstat (limited to 'Kbuild')
0 files changed, 0 insertions, 0 deletions