diff options
Diffstat (limited to 'fs/9p/vfs_file.c')
-rw-r--r-- | fs/9p/vfs_file.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/fs/9p/vfs_file.c b/fs/9p/vfs_file.c index ffed55817f0c..3c173fcc2c5a 100644 --- a/fs/9p/vfs_file.c +++ b/fs/9p/vfs_file.c | |||
@@ -519,32 +519,50 @@ out: | |||
519 | } | 519 | } |
520 | 520 | ||
521 | 521 | ||
522 | static int v9fs_file_fsync(struct file *filp, int datasync) | 522 | static int v9fs_file_fsync(struct file *filp, loff_t start, loff_t end, |
523 | int datasync) | ||
523 | { | 524 | { |
524 | struct p9_fid *fid; | 525 | struct p9_fid *fid; |
526 | struct inode *inode = filp->f_mapping->host; | ||
525 | struct p9_wstat wstat; | 527 | struct p9_wstat wstat; |
526 | int retval; | 528 | int retval; |
527 | 529 | ||
530 | retval = filemap_write_and_wait_range(inode->i_mapping, start, end); | ||
531 | if (retval) | ||
532 | return retval; | ||
533 | |||
534 | mutex_lock(&inode->i_mutex); | ||
528 | P9_DPRINTK(P9_DEBUG_VFS, "filp %p datasync %x\n", filp, datasync); | 535 | P9_DPRINTK(P9_DEBUG_VFS, "filp %p datasync %x\n", filp, datasync); |
529 | 536 | ||
530 | fid = filp->private_data; | 537 | fid = filp->private_data; |
531 | v9fs_blank_wstat(&wstat); | 538 | v9fs_blank_wstat(&wstat); |
532 | 539 | ||
533 | retval = p9_client_wstat(fid, &wstat); | 540 | retval = p9_client_wstat(fid, &wstat); |
541 | mutex_unlock(&inode->i_mutex); | ||
542 | |||
534 | return retval; | 543 | return retval; |
535 | } | 544 | } |
536 | 545 | ||
537 | int v9fs_file_fsync_dotl(struct file *filp, int datasync) | 546 | int v9fs_file_fsync_dotl(struct file *filp, loff_t start, loff_t end, |
547 | int datasync) | ||
538 | { | 548 | { |
539 | struct p9_fid *fid; | 549 | struct p9_fid *fid; |
550 | struct inode *inode = filp->f_mapping->host; | ||
540 | int retval; | 551 | int retval; |
541 | 552 | ||
553 | retval = filemap_write_and_wait_range(inode->i_mapping, start, end); | ||
554 | if (retval) | ||
555 | return retval; | ||
556 | |||
557 | mutex_lock(&inode->i_mutex); | ||
542 | P9_DPRINTK(P9_DEBUG_VFS, "v9fs_file_fsync_dotl: filp %p datasync %x\n", | 558 | P9_DPRINTK(P9_DEBUG_VFS, "v9fs_file_fsync_dotl: filp %p datasync %x\n", |
543 | filp, datasync); | 559 | filp, datasync); |
544 | 560 | ||
545 | fid = filp->private_data; | 561 | fid = filp->private_data; |
546 | 562 | ||
547 | retval = p9_client_fsync(fid, datasync); | 563 | retval = p9_client_fsync(fid, datasync); |
564 | mutex_unlock(&inode->i_mutex); | ||
565 | |||
548 | return retval; | 566 | return retval; |
549 | } | 567 | } |
550 | 568 | ||