]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
nilfs2: replace barriers with explicit flush / FUA usage
authorChristoph Hellwig <hch@infradead.org>
Wed, 18 Aug 2010 09:29:15 +0000 (05:29 -0400)
committerJens Axboe <jaxboe@fusionio.com>
Fri, 10 Sep 2010 10:35:39 +0000 (12:35 +0200)
Switch to the WRITE_FLUSH_FUA flag for log writes, remove the EOPNOTSUPP
detection for barriers and stop setting the barrier flag for discards.

tj: nilfs is now fixed to wait for discard completion.  Updated this
    patch accordingly and dropped warning about it.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Ryusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
fs/nilfs2/super.c
fs/nilfs2/the_nilfs.c

index 922263393c765664f6b5598f4c144093ec9e582c..faa5078ff751c83a511e497fc1f4653b90bfd81d 100644 (file)
@@ -178,17 +178,9 @@ static int nilfs_sync_super(struct nilfs_sb_info *sbi, int flag)
 
  retry:
        set_buffer_dirty(nilfs->ns_sbh[0]);
-
        if (nilfs_test_opt(sbi, BARRIER)) {
                err = __sync_dirty_buffer(nilfs->ns_sbh[0],
-                                         WRITE_SYNC | WRITE_BARRIER);
-               if (err == -EOPNOTSUPP) {
-                       nilfs_warning(sbi->s_super, __func__,
-                                     "barrier-based sync failed. "
-                                     "disabling barriers\n");
-                       nilfs_clear_opt(sbi, BARRIER);
-                       goto retry;
-               }
+                                         WRITE_SYNC | WRITE_FLUSH_FUA);
        } else {
                err = sync_dirty_buffer(nilfs->ns_sbh[0]);
        }
index 4317f177ea7cb27c46cb315f5055205f3a0addc7..400b2caef4d855168d6a053550c37721fed637e3 100644 (file)
@@ -774,9 +774,7 @@ int nilfs_discard_segments(struct the_nilfs *nilfs, __u64 *segnump,
                        ret = blkdev_issue_discard(nilfs->ns_bdev,
                                                   start * sects_per_block,
                                                   nblocks * sects_per_block,
-                                                  GFP_NOFS,
-                                                  BLKDEV_IFL_WAIT |
-                                                  BLKDEV_IFL_BARRIER);
+                                                  GFP_NOFS, BLKDEV_IFL_WAIT);
                        if (ret < 0)
                                return ret;
                        nblocks = 0;
@@ -786,8 +784,7 @@ int nilfs_discard_segments(struct the_nilfs *nilfs, __u64 *segnump,
                ret = blkdev_issue_discard(nilfs->ns_bdev,
                                           start * sects_per_block,
                                           nblocks * sects_per_block,
-                                          GFP_NOFS,
-                                         BLKDEV_IFL_WAIT | BLKDEV_IFL_BARRIER);
+                                          GFP_NOFS, BLKDEV_IFL_WAIT);
        return ret;
 }