Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f8c131f5 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Jens Axboe
Browse files

nilfs2: replace barriers with explicit flush / FUA usage



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: default avatarChristoph Hellwig <hch@lst.de>
Acked-by: default avatarRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
Signed-off-by: default avatarJens Axboe <jaxboe@fusionio.com>
parent 7cd33ad2
Loading
Loading
Loading
Loading
+1 −9
Original line number Diff line number Diff line
@@ -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]);
	}
+2 −5
Original line number Diff line number Diff line
@@ -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;
}