diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-05-31 21:10:18 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-05-31 21:10:18 -0400 |
| commit | 08615d7d85e5aa02c05bf6c4dde87d940e7f85f6 (patch) | |
| tree | 18906149d313d25914160aca21cedf54b3a7e818 /fs/nilfs2/file.c | |
| parent | 9fdadb2cbaf4b482dfd6086e8bd3d2db071a1702 (diff) | |
| parent | 0a4dd35c67b144d8ef9432120105f1aab9293ee9 (diff) | |
Merge branch 'akpm' (Andrew's patch-bomb)
Merge misc patches from Andrew Morton:
- the "misc" tree - stuff from all over the map
- checkpatch updates
- fatfs
- kmod changes
- procfs
- cpumask
- UML
- kexec
- mqueue
- rapidio
- pidns
- some checkpoint-restore feature work. Reluctantly. Most of it
delayed a release. I'm still rather worried that we don't have a
clear roadmap to completion for this work.
* emailed from Andrew Morton <akpm@linux-foundation.org>: (78 patches)
kconfig: update compression algorithm info
c/r: prctl: add ability to set new mm_struct::exe_file
c/r: prctl: extend PR_SET_MM to set up more mm_struct entries
c/r: procfs: add arg_start/end, env_start/end and exit_code members to /proc/$pid/stat
syscalls, x86: add __NR_kcmp syscall
fs, proc: introduce /proc/<pid>/task/<tid>/children entry
sysctl: make kernel.ns_last_pid control dependent on CHECKPOINT_RESTORE
aio/vfs: cleanup of rw_copy_check_uvector() and compat_rw_copy_check_uvector()
eventfd: change int to __u64 in eventfd_signal()
fs/nls: add Apple NLS
pidns: make killed children autoreap
pidns: use task_active_pid_ns in do_notify_parent
rapidio/tsi721: add DMA engine support
rapidio: add DMA engine support for RIO data transfers
ipc/mqueue: add rbtree node caching support
tools/selftests: add mq_perf_tests
ipc/mqueue: strengthen checks on mqueue creation
ipc/mqueue: correct mq_attr_ok test
ipc/mqueue: improve performance of send/recv
selftests: add mq_open_tests
...
Diffstat (limited to 'fs/nilfs2/file.c')
| -rw-r--r-- | fs/nilfs2/file.c | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/fs/nilfs2/file.c b/fs/nilfs2/file.c index 26601529dc17..62cebc8e1a1f 100644 --- a/fs/nilfs2/file.c +++ b/fs/nilfs2/file.c | |||
| @@ -37,6 +37,7 @@ int nilfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync) | |||
| 37 | * This function should be implemented when the writeback function | 37 | * This function should be implemented when the writeback function |
| 38 | * will be implemented. | 38 | * will be implemented. |
| 39 | */ | 39 | */ |
| 40 | struct the_nilfs *nilfs; | ||
| 40 | struct inode *inode = file->f_mapping->host; | 41 | struct inode *inode = file->f_mapping->host; |
| 41 | int err; | 42 | int err; |
| 42 | 43 | ||
| @@ -45,18 +46,21 @@ int nilfs_sync_file(struct file *file, loff_t start, loff_t end, int datasync) | |||
| 45 | return err; | 46 | return err; |
| 46 | mutex_lock(&inode->i_mutex); | 47 | mutex_lock(&inode->i_mutex); |
| 47 | 48 | ||
| 48 | if (!nilfs_inode_dirty(inode)) { | 49 | if (nilfs_inode_dirty(inode)) { |
| 49 | mutex_unlock(&inode->i_mutex); | 50 | if (datasync) |
| 50 | return 0; | 51 | err = nilfs_construct_dsync_segment(inode->i_sb, inode, |
| 52 | 0, LLONG_MAX); | ||
| 53 | else | ||
| 54 | err = nilfs_construct_segment(inode->i_sb); | ||
| 51 | } | 55 | } |
| 52 | |||
| 53 | if (datasync) | ||
| 54 | err = nilfs_construct_dsync_segment(inode->i_sb, inode, 0, | ||
| 55 | LLONG_MAX); | ||
| 56 | else | ||
| 57 | err = nilfs_construct_segment(inode->i_sb); | ||
| 58 | |||
| 59 | mutex_unlock(&inode->i_mutex); | 56 | mutex_unlock(&inode->i_mutex); |
| 57 | |||
| 58 | nilfs = inode->i_sb->s_fs_info; | ||
| 59 | if (!err && nilfs_test_opt(nilfs, BARRIER)) { | ||
| 60 | err = blkdev_issue_flush(inode->i_sb->s_bdev, GFP_KERNEL, NULL); | ||
| 61 | if (err != -EIO) | ||
| 62 | err = 0; | ||
| 63 | } | ||
| 60 | return err; | 64 | return err; |
| 61 | } | 65 | } |
| 62 | 66 | ||
