Commit e367626b6164aeecb97fb7c20509ed8696babc26
1 parent
a2a735ad66
Exists in
master
and in
39 other branches
ext3: Remove syncing logic from ext3_file_write
Syncing is now properly done by generic_file_aio_write() so no special logic is needed in ext3. CC: linux-ext4@vger.kernel.org Signed-off-by: Jan Kara <jack@suse.cz>
Showing 1 changed file with 1 additions and 60 deletions Side-by-side Diff
fs/ext3/file.c
... | ... | @@ -51,71 +51,12 @@ |
51 | 51 | return 0; |
52 | 52 | } |
53 | 53 | |
54 | -static ssize_t | |
55 | -ext3_file_write(struct kiocb *iocb, const struct iovec *iov, | |
56 | - unsigned long nr_segs, loff_t pos) | |
57 | -{ | |
58 | - struct file *file = iocb->ki_filp; | |
59 | - struct inode *inode = file->f_path.dentry->d_inode; | |
60 | - ssize_t ret; | |
61 | - int err; | |
62 | - | |
63 | - ret = generic_file_aio_write(iocb, iov, nr_segs, pos); | |
64 | - | |
65 | - /* | |
66 | - * Skip flushing if there was an error, or if nothing was written. | |
67 | - */ | |
68 | - if (ret <= 0) | |
69 | - return ret; | |
70 | - | |
71 | - /* | |
72 | - * If the inode is IS_SYNC, or is O_SYNC and we are doing data | |
73 | - * journalling then we need to make sure that we force the transaction | |
74 | - * to disk to keep all metadata uptodate synchronously. | |
75 | - */ | |
76 | - if (file->f_flags & O_SYNC) { | |
77 | - /* | |
78 | - * If we are non-data-journaled, then the dirty data has | |
79 | - * already been flushed to backing store by generic_osync_inode, | |
80 | - * and the inode has been flushed too if there have been any | |
81 | - * modifications other than mere timestamp updates. | |
82 | - * | |
83 | - * Open question --- do we care about flushing timestamps too | |
84 | - * if the inode is IS_SYNC? | |
85 | - */ | |
86 | - if (!ext3_should_journal_data(inode)) | |
87 | - return ret; | |
88 | - | |
89 | - goto force_commit; | |
90 | - } | |
91 | - | |
92 | - /* | |
93 | - * So we know that there has been no forced data flush. If the inode | |
94 | - * is marked IS_SYNC, we need to force one ourselves. | |
95 | - */ | |
96 | - if (!IS_SYNC(inode)) | |
97 | - return ret; | |
98 | - | |
99 | - /* | |
100 | - * Open question #2 --- should we force data to disk here too? If we | |
101 | - * don't, the only impact is that data=writeback filesystems won't | |
102 | - * flush data to disk automatically on IS_SYNC, only metadata (but | |
103 | - * historically, that is what ext2 has done.) | |
104 | - */ | |
105 | - | |
106 | -force_commit: | |
107 | - err = ext3_force_commit(inode->i_sb); | |
108 | - if (err) | |
109 | - return err; | |
110 | - return ret; | |
111 | -} | |
112 | - | |
113 | 54 | const struct file_operations ext3_file_operations = { |
114 | 55 | .llseek = generic_file_llseek, |
115 | 56 | .read = do_sync_read, |
116 | 57 | .write = do_sync_write, |
117 | 58 | .aio_read = generic_file_aio_read, |
118 | - .aio_write = ext3_file_write, | |
59 | + .aio_write = generic_file_aio_write, | |
119 | 60 | .unlocked_ioctl = ext3_ioctl, |
120 | 61 | #ifdef CONFIG_COMPAT |
121 | 62 | .compat_ioctl = ext3_compat_ioctl, |