Commit e367626b6164aeecb97fb7c20509ed8696babc26

Authored by Jan Kara
1 parent a2a735ad66

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

... ... @@ -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,