f2fs: support the inline xattrs
authorJaegeuk Kim <jaegeuk.kim@samsung.com>
Wed, 14 Aug 2013 12:57:27 +0000 (21:57 +0900)
committerJaegeuk Kim <jaegeuk.kim@samsung.com>
Mon, 26 Aug 2013 11:15:23 +0000 (20:15 +0900)
commit65985d935ddd5657c66a8bb3ae9752ed842549b8
tree5eea77933c96f3007cdc29b6fa06c313737003f6
parent4f16fb0f9be3f5f9d1254ff6d7bf54b23fb65f4a
f2fs: support the inline xattrs

0. modified inode structure
--------------------------------------
metadata (e.g., i_mtime, i_ctime, etc)
--------------------------------------
direct pointers [0 ~ 873]

inline xattrs (200 bytes by default)

indirect pointers [0 ~ 4]
--------------------------------------
node footer
--------------------------------------

1. setxattr flow
 - read_all_xattrs copies all the xattrs from inline and xattr node block.
 - handle xattr entries
 - write_all_xattrs copies modified xattrs into inline and xattr node block.

2. getxattr flow
 - read_all_xattrs copies all the xattrs from inline and xattr node block.
 - check target entries

3. Usage
 # mount -t f2fs -o inline_xattr $DEV $MNT

 Once mounted with the inline_xattr option, f2fs marks all the newly created
 files to reserve an amount of inline xattr space explicitly inside the inode
 block. Without the mount option, f2fs will not touch any existing files and
 newly created files as well.

Signed-off-by: Jaegeuk Kim <jaegeuk.kim@samsung.com>
fs/f2fs/f2fs.h
fs/f2fs/node.c
fs/f2fs/xattr.c
fs/f2fs/xattr.h
include/linux/f2fs_fs.h