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/ubifs | |
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/ubifs')
-rw-r--r-- | fs/ubifs/file.c | 21 | ||||
-rw-r--r-- | fs/ubifs/ubifs.h | 2 |
2 files changed, 12 insertions, 11 deletions
diff --git a/fs/ubifs/file.c b/fs/ubifs/file.c index 7cf738a4544d..f9c234bf33d3 100644 --- a/fs/ubifs/file.c +++ b/fs/ubifs/file.c | |||
@@ -1304,7 +1304,7 @@ static void *ubifs_follow_link(struct dentry *dentry, struct nameidata *nd) | |||
1304 | return NULL; | 1304 | return NULL; |
1305 | } | 1305 | } |
1306 | 1306 | ||
1307 | int ubifs_fsync(struct file *file, int datasync) | 1307 | int ubifs_fsync(struct file *file, loff_t start, loff_t end, int datasync) |
1308 | { | 1308 | { |
1309 | struct inode *inode = file->f_mapping->host; | 1309 | struct inode *inode = file->f_mapping->host; |
1310 | struct ubifs_info *c = inode->i_sb->s_fs_info; | 1310 | struct ubifs_info *c = inode->i_sb->s_fs_info; |
@@ -1319,14 +1319,16 @@ int ubifs_fsync(struct file *file, int datasync) | |||
1319 | */ | 1319 | */ |
1320 | return 0; | 1320 | return 0; |
1321 | 1321 | ||
1322 | /* | 1322 | err = filemap_write_and_wait_range(inode->i_mapping, start, end); |
1323 | * VFS has already synchronized dirty pages for this inode. Synchronize | 1323 | if (err) |
1324 | * the inode unless this is a 'datasync()' call. | 1324 | return err; |
1325 | */ | 1325 | mutex_lock(&inode->i_mutex); |
1326 | |||
1327 | /* Synchronize the inode unless this is a 'datasync()' call. */ | ||
1326 | if (!datasync || (inode->i_state & I_DIRTY_DATASYNC)) { | 1328 | if (!datasync || (inode->i_state & I_DIRTY_DATASYNC)) { |
1327 | err = inode->i_sb->s_op->write_inode(inode, NULL); | 1329 | err = inode->i_sb->s_op->write_inode(inode, NULL); |
1328 | if (err) | 1330 | if (err) |
1329 | return err; | 1331 | goto out; |
1330 | } | 1332 | } |
1331 | 1333 | ||
1332 | /* | 1334 | /* |
@@ -1334,10 +1336,9 @@ int ubifs_fsync(struct file *file, int datasync) | |||
1334 | * them. | 1336 | * them. |
1335 | */ | 1337 | */ |
1336 | err = ubifs_sync_wbufs_by_inode(c, inode); | 1338 | err = ubifs_sync_wbufs_by_inode(c, inode); |
1337 | if (err) | 1339 | out: |
1338 | return err; | 1340 | mutex_unlock(&inode->i_mutex); |
1339 | 1341 | return err; | |
1340 | return 0; | ||
1341 | } | 1342 | } |
1342 | 1343 | ||
1343 | /** | 1344 | /** |
diff --git a/fs/ubifs/ubifs.h b/fs/ubifs/ubifs.h index 702b79258e30..27f22551f805 100644 --- a/fs/ubifs/ubifs.h +++ b/fs/ubifs/ubifs.h | |||
@@ -1729,7 +1729,7 @@ const struct ubifs_lprops *ubifs_fast_find_frdi_idx(struct ubifs_info *c); | |||
1729 | int ubifs_calc_dark(const struct ubifs_info *c, int spc); | 1729 | int ubifs_calc_dark(const struct ubifs_info *c, int spc); |
1730 | 1730 | ||
1731 | /* file.c */ | 1731 | /* file.c */ |
1732 | int ubifs_fsync(struct file *file, int datasync); | 1732 | int ubifs_fsync(struct file *file, loff_t start, loff_t end, int datasync); |
1733 | int ubifs_setattr(struct dentry *dentry, struct iattr *attr); | 1733 | int ubifs_setattr(struct dentry *dentry, struct iattr *attr); |
1734 | 1734 | ||
1735 | /* dir.c */ | 1735 | /* dir.c */ |