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; } /*