X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=fs%2Fblock_dev.c;h=73d6a735b8f311cc62fe5b22c626a7a4baa9c452;hb=7715b521222b6ebb6e927fa261ed91ed687fe454;hp=8bed0557d88c17ac9600a179f8127d855e509bab;hpb=3ad1f3b35e8309ec93454dbf89beaafcdb5312da;p=~andy%2Flinux diff --git a/fs/block_dev.c b/fs/block_dev.c index 8bed0557d88..73d6a735b8f 100644 --- a/fs/block_dev.c +++ b/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; } /*