diff options
Diffstat (limited to 'fs/block_dev.c')
| -rw-r--r-- | fs/block_dev.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/fs/block_dev.c b/fs/block_dev.c index 8bed0557d88c..73d6a735b8f3 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) | |||
| 405 | 405 | ||
| 406 | static int block_fsync(struct file *filp, struct dentry *dentry, int datasync) | 406 | static int block_fsync(struct file *filp, struct dentry *dentry, int datasync) |
| 407 | { | 407 | { |
| 408 | return sync_blockdev(I_BDEV(filp->f_mapping->host)); | 408 | struct block_device *bdev = I_BDEV(filp->f_mapping->host); |
| 409 | int error; | ||
| 410 | |||
| 411 | error = sync_blockdev(bdev); | ||
| 412 | if (error) | ||
| 413 | return error; | ||
| 414 | |||
| 415 | error = blkdev_issue_flush(bdev, NULL); | ||
| 416 | if (error == -EOPNOTSUPP) | ||
| 417 | error = 0; | ||
| 418 | return error; | ||
| 409 | } | 419 | } |
| 410 | 420 | ||
| 411 | /* | 421 | /* |
