f2fs: skip if inline_data was converted already
authorJaegeuk Kim <jaegeuk@kernel.org>
Mon, 18 Aug 2014 21:41:11 +0000 (14:41 -0700)
committerJaegeuk Kim <jaegeuk@kernel.org>
Thu, 21 Aug 2014 20:57:03 +0000 (13:57 -0700)
This patch checks inline_data one more time under the inode page lock whether
its inline_data is converted or not.

Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/inline.c

index 4d1f39f4583cc926f1e0188b133bb1cfba5dc116..3e8ecdf3742b18d72eba2e9c780f2c6e8d215c5e 100644 (file)
@@ -68,7 +68,7 @@ out:
 
 static int __f2fs_convert_inline_data(struct inode *inode, struct page *page)
 {
-       int err;
+       int err = 0;
        struct page *ipage;
        struct dnode_of_data dn;
        void *src_addr, *dst_addr;
@@ -86,6 +86,10 @@ static int __f2fs_convert_inline_data(struct inode *inode, struct page *page)
                goto out;
        }
 
+       /* someone else converted inline_data already */
+       if (!f2fs_has_inline_data(inode))
+               goto out;
+
        /*
         * i_addr[0] is not used for inline data,
         * so reserving new block will not destroy inline data