xfs: Properly exclude IO type flags from buffer flags
authorDave Chinner <dchinner@redhat.com>
Mon, 23 Apr 2012 05:59:05 +0000 (15:59 +1000)
committerBen Myers <bpm@sgi.com>
Mon, 14 May 2012 21:21:01 +0000 (16:21 -0500)
Recent event tracing during a debugging session showed that flags
that define the IO type for a buffer are leaking into the flags on
the buffer incorrectly. Fix the flag exclusion mask in
xfs_buf_alloc() to avoid problems that may be caused by such
leakage.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Mark Tinguely <tinguely@sgi.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Ben Myers <bpm@sgi.com>
fs/xfs/xfs_buf.c

index af8480d5c71ddc0dd3347795fa08cf817b79eb41..b2795bab1a01bbb4187f2bab3a45101586f93a33 100644 (file)
@@ -178,9 +178,10 @@ xfs_buf_alloc(
                return NULL;
 
        /*
-        * We don't want certain flags to appear in b_flags.
+        * We don't want certain flags to appear in b_flags unless they are
+        * specifically set by later operations on the buffer.
         */
-       flags &= ~(XBF_MAPPED|XBF_READ_AHEAD);
+       flags &= ~(XBF_MAPPED | XBF_TRYLOCK | XBF_ASYNC | XBF_READ_AHEAD);
 
        atomic_set(&bp->b_hold, 1);
        atomic_set(&bp->b_lru_ref, 1);