• J
    f2fs: should cover i_xattr_nid with its xattr node page lock · 479bd73a
    Jaegeuk Kim 提交于
    Previously, f2fs_setxattr assigns i_xattr_nid in the inode page inconsistently.
    
    The scenario is:
    
    = Thread 1 =         = Thread 2 =     = fi->i_xattr_nid =  = on-disk nid =
    
    f2fs_setxattr                                   0                 0
      new_node_page                                 X                 0
                       sync_inode_page              X                 X
                       checkpoint                   X                 X -.
        grab_cache_page                             X                 X  |
    --> allocate a new xattr node block or -ENOSPC      <----------------'
    
    At this moment, the checkpoint stores inconsistent data where the inode has
    i_xattr_nid but actual xattr node block is not allocated yet.
    
    So, we should assign the real i_xattr_nid only after its xattr node block is
    allocated.
    Signed-off-by: NJaegeuk Kim <jaegeuk.kim@samsung.com>
    479bd73a
node.c 42.2 KB