From d426ed9afc1c1787c6698e56844a3cfc5b2b9218 Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Thu, 29 Oct 2009 14:14:04 +0100 Subject: [PATCH] --- yaml --- r: 172920 b: refs/heads/master c: ab0a9735e06914ce4d2a94ffa41497dbc142fe7f h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/block_dev.c | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 2bfd850ca9d3..9934d5be2014 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b9d128f1088ea5245109dfc9bbceb128b6371a77 +refs/heads/master: ab0a9735e06914ce4d2a94ffa41497dbc142fe7f diff --git a/trunk/fs/block_dev.c b/trunk/fs/block_dev.c index 9cf4b926f8e4..dde91e7e1c3a 100644 --- a/trunk/fs/block_dev.c +++ b/trunk/fs/block_dev.c @@ -405,7 +405,17 @@ static loff_t block_llseek(struct file *file, loff_t offset, int origin) static int block_fsync(struct file *filp, struct dentry *dentry, int datasync) { - return sync_blockdev(I_BDEV(filp->f_mapping->host)); + struct block_device *bdev = I_BDEV(filp->f_mapping->host); + int error; + + error = sync_blockdev(bdev); + if (error) + return error; + + error = blkdev_issue_flush(bdev, NULL); + if (error == -EOPNOTSUPP) + error = 0; + return error; } /*