Commit dbe6a5ff authored by Jaegeuk Kim's avatar Jaegeuk Kim
Browse files

f2fs: fix the use of XATTR_NODE_OFFSET



This patch fixes the use of XATTR_NODE_OFFSET.

o The offset should not use several MSB bits which are used by marking node
blocks.

o IS_DNODE should handle XATTR_NODE_OFFSET to avoid potential abnormality
during the fsync call.
Signed-off-by: default avatarJaegeuk Kim <jaegeuk.kim@samsung.com>
parent c2d715d1
...@@ -135,11 +135,13 @@ static inline int update_sits_in_cursum(struct f2fs_summary_block *rs, int i) ...@@ -135,11 +135,13 @@ static inline int update_sits_in_cursum(struct f2fs_summary_block *rs, int i)
/* /*
* For INODE and NODE manager * For INODE and NODE manager
*/ */
#define XATTR_NODE_OFFSET (-1) /* /*
* store xattrs to one node block per * XATTR_NODE_OFFSET stores xattrs to one node block per file keeping -1
* file keeping -1 as its node offset to * as its node offset to distinguish from index node blocks.
* distinguish from index node blocks. * But some bits are used to mark the node block.
*/ */
#define XATTR_NODE_OFFSET ((((unsigned int)-1) << OFFSET_BIT_SHIFT) \
>> OFFSET_BIT_SHIFT)
enum { enum {
ALLOC_NODE, /* allocate a new node page if needed */ ALLOC_NODE, /* allocate a new node page if needed */
LOOKUP_NODE, /* look up a node without readahead */ LOOKUP_NODE, /* look up a node without readahead */
......
...@@ -229,6 +229,10 @@ static inline block_t next_blkaddr_of_node(struct page *node_page) ...@@ -229,6 +229,10 @@ static inline block_t next_blkaddr_of_node(struct page *node_page)
static inline bool IS_DNODE(struct page *node_page) static inline bool IS_DNODE(struct page *node_page)
{ {
unsigned int ofs = ofs_of_node(node_page); unsigned int ofs = ofs_of_node(node_page);
if (ofs == XATTR_NODE_OFFSET)
return false;
if (ofs == 3 || ofs == 4 + NIDS_PER_BLOCK || if (ofs == 3 || ofs == 4 + NIDS_PER_BLOCK ||
ofs == 5 + 2 * NIDS_PER_BLOCK) ofs == 5 + 2 * NIDS_PER_BLOCK)
return false; return false;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment