355
359
mutex_lock(&bd_inode->i_mutex);
356
360
size = i_size_read(bd_inode);
366
374
if (offset >= 0 && offset <= size) {
367
375
if (offset != file->f_pos) {
372
381
mutex_unlock(&bd_inode->i_mutex);
385
int blkdev_fsync(struct file *filp, loff_t start, loff_t end, int datasync)
378
387
struct inode *bd_inode = filp->f_mapping->host;
379
388
struct block_device *bdev = I_BDEV(bd_inode);
383
396
* There is no need to serialise calls to blkdev_issue_flush with
384
397
* i_mutex and doing so causes performance issues with concurrent
385
398
* O_SYNC writers to a block device.
389
400
error = blkdev_issue_flush(bdev, GFP_KERNEL, NULL);
390
401
if (error == -EOPNOTSUPP)
397
406
EXPORT_SYMBOL(blkdev_fsync);