diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-07-22 22:02:39 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-07-22 22:02:39 -0400 |
commit | bbd9d6f7fbb0305c9a592bf05a32e87eb364a4ff (patch) | |
tree | 12b2bb4202b05f6ae6a43c6ce830a0472043dbe5 /fs/9p/vfs_file.c | |
parent | 8e204874db000928e37199c2db82b7eb8966cc3c (diff) | |
parent | 5a9a43646cf709312d71eca71cef90ad802f28f9 (diff) |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (107 commits)
vfs: use ERR_CAST for err-ptr tossing in lookup_instantiate_filp
isofs: Remove global fs lock
jffs2: fix IN_DELETE_SELF on overwriting rename() killing a directory
fix IN_DELETE_SELF on overwriting rename() on ramfs et.al.
mm/truncate.c: fix build for CONFIG_BLOCK not enabled
fs:update the NOTE of the file_operations structure
Remove dead code in dget_parent()
AFS: Fix silly characters in a comment
switch d_add_ci() to d_splice_alias() in "found negative" case as well
simplify gfs2_lookup()
jfs_lookup(): don't bother with . or ..
get rid of useless dget_parent() in btrfs rename() and link()
get rid of useless dget_parent() in fs/btrfs/ioctl.c
fs: push i_mutex and filemap_write_and_wait down into ->fsync() handlers
drivers: fix up various ->llseek() implementations
fs: handle SEEK_HOLE/SEEK_DATA properly in all fs's that define their own llseek
Ext4: handle SEEK_HOLE/SEEK_DATA generically
Btrfs: implement our own ->llseek
fs: add SEEK_HOLE and SEEK_DATA flags
reiserfs: make reiserfs default to barrier=flush
...
Fix up trivial conflicts in fs/xfs/linux-2.6/xfs_super.c due to the new
shrinker callout for the inode cache, that clashed with the xfs code to
start the periodic workers later.
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 | ||