ocfs2: Only bug out in direct io write for reflinked extent.
authorTao Ma <tao.ma@oracle.com>
Fri, 26 Feb 2010 02:54:52 +0000 (10:54 +0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 15 Mar 2010 15:50:04 +0000 (08:50 -0700)
commit cbaee472f274ea9a98aabe47025f6e5551acadcb upstream.

In ocfs2_direct_IO_get_blocks, we only need to bug out
in case of we are going to write a recounted extent rec.

What a silly bug introduced by me!

Signed-off-by: Tao Ma <tao.ma@oracle.com>
Signed-off-by: Joel Becker <joel.becker@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
fs/ocfs2/aops.c

index deb2b132ae5ed42b68fd11f58413f2ffa4779b83..5fc918ca25722038e19ebaa1c9880cbd72ef5cb1 100644 (file)
@@ -591,8 +591,9 @@ static int ocfs2_direct_IO_get_blocks(struct inode *inode, sector_t iblock,
                goto bail;
        }
 
-       /* We should already CoW the refcounted extent. */
-       BUG_ON(ext_flags & OCFS2_EXT_REFCOUNTED);
+       /* We should already CoW the refcounted extent in case of create. */
+       BUG_ON(create && (ext_flags & OCFS2_EXT_REFCOUNTED));
+
        /*
         * get_more_blocks() expects us to describe a hole by clearing
         * the mapped bit on bh_result().