[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1282751267-3530-22-git-send-email-tj@kernel.org>
Date: Wed, 25 Aug 2010 17:47:38 +0200
From: Tejun Heo <tj@...nel.org>
To: jaxboe@...ionio.com, linux-kernel@...r.kernel.org,
linux-fsdevel@...r.kernel.org, linux-scsi@...r.kernel.org,
linux-ide@...r.kernel.org, linux-raid@...r.kernel.org, hch@....de,
James.Bottomley@...e.de, tytso@....edu, chris.mason@...cle.com,
swhiteho@...hat.com, konishi.ryusuke@....ntt.co.jp,
dm-devel@...hat.com, vst@...b.net, jack@...e.cz,
rwheeler@...hat.com, hare@...e.de, neilb@...e.de,
rusty@...tcorp.com.au, mst@...hat.com, jeremy@...p.org,
snitzer@...hat.com, k-ueda@...jp.nec.com
Cc: Christoph Hellwig <hch@...radead.org>, Tejun Heo <tj@...nel.org>
Subject: [PATCH 21/30] gfs2: replace barriers with explicit flush / FUA usage
From: Christoph Hellwig <hch@...radead.org>
Switch to the WRITE_FLUSH_FUA flag for log writes, remove the EOPNOTSUPP
detection for barriers and stop setting the barrier flag for discards.
Signed-off-by: Christoph Hellwig <hch@....de>
Acked-by: Steven Whitehouse <swhiteho@...hat.com>
Acked-by: Bob Peterson <rpeterso@...hat.com>
Signed-off-by: Tejun Heo <tj@...nel.org>
---
fs/gfs2/log.c | 19 +++++--------------
fs/gfs2/rgrp.c | 5 ++---
2 files changed, 7 insertions(+), 17 deletions(-)
diff --git a/fs/gfs2/log.c b/fs/gfs2/log.c
index cde1248..9c65170 100644
--- a/fs/gfs2/log.c
+++ b/fs/gfs2/log.c
@@ -592,22 +592,13 @@ static void log_write_header(struct gfs2_sbd *sdp, u32 flags, int pull)
lh->lh_hash = cpu_to_be32(hash);
bh->b_end_io = end_buffer_write_sync;
- if (test_bit(SDF_NOBARRIERS, &sdp->sd_flags))
- goto skip_barrier;
get_bh(bh);
- submit_bh(WRITE_BARRIER | REQ_META, bh);
- wait_on_buffer(bh);
- if (buffer_eopnotsupp(bh)) {
- clear_buffer_eopnotsupp(bh);
- set_buffer_uptodate(bh);
- fs_info(sdp, "barrier sync failed - disabling barriers\n");
- set_bit(SDF_NOBARRIERS, &sdp->sd_flags);
- lock_buffer(bh);
-skip_barrier:
- get_bh(bh);
+ if (test_bit(SDF_NOBARRIERS, &sdp->sd_flags))
submit_bh(WRITE_SYNC | REQ_META, bh);
- wait_on_buffer(bh);
- }
+ else
+ submit_bh(WRITE_FLUSH_FUA | REQ_META, bh);
+ wait_on_buffer(bh);
+
if (!buffer_uptodate(bh))
gfs2_io_error_bh(sdp, bh);
brelse(bh);
diff --git a/fs/gfs2/rgrp.c b/fs/gfs2/rgrp.c
index 171a744..3793164 100644
--- a/fs/gfs2/rgrp.c
+++ b/fs/gfs2/rgrp.c
@@ -854,8 +854,7 @@ static void gfs2_rgrp_send_discards(struct gfs2_sbd *sdp, u64 offset,
if ((start + nr_sects) != blk) {
rv = blkdev_issue_discard(bdev, start,
nr_sects, GFP_NOFS,
- BLKDEV_IFL_WAIT |
- BLKDEV_IFL_BARRIER);
+ BLKDEV_IFL_WAIT);
if (rv)
goto fail;
nr_sects = 0;
@@ -870,7 +869,7 @@ start_new_extent:
}
if (nr_sects) {
rv = blkdev_issue_discard(bdev, start, nr_sects, GFP_NOFS,
- BLKDEV_IFL_WAIT | BLKDEV_IFL_BARRIER);
+ BLKDEV_IFL_WAIT);
if (rv)
goto fail;
}
--
1.7.1
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists