diff options
Diffstat (limited to 'fs/ntfs/file.c')
-rw-r--r-- | fs/ntfs/file.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/fs/ntfs/file.c b/fs/ntfs/file.c index b59f5ac26bef..c587e2d27183 100644 --- a/fs/ntfs/file.c +++ b/fs/ntfs/file.c | |||
@@ -2152,12 +2152,19 @@ static ssize_t ntfs_file_aio_write(struct kiocb *iocb, const struct iovec *iov, | |||
2152 | * with this inode but since we have no simple way of getting to them we ignore | 2152 | * with this inode but since we have no simple way of getting to them we ignore |
2153 | * this problem for now. | 2153 | * this problem for now. |
2154 | */ | 2154 | */ |
2155 | static int ntfs_file_fsync(struct file *filp, int datasync) | 2155 | static int ntfs_file_fsync(struct file *filp, loff_t start, loff_t end, |
2156 | int datasync) | ||
2156 | { | 2157 | { |
2157 | struct inode *vi = filp->f_mapping->host; | 2158 | struct inode *vi = filp->f_mapping->host; |
2158 | int err, ret = 0; | 2159 | int err, ret = 0; |
2159 | 2160 | ||
2160 | ntfs_debug("Entering for inode 0x%lx.", vi->i_ino); | 2161 | ntfs_debug("Entering for inode 0x%lx.", vi->i_ino); |
2162 | |||
2163 | err = filemap_write_and_wait_range(vi->i_mapping, start, end); | ||
2164 | if (err) | ||
2165 | return err; | ||
2166 | mutex_lock(&vi->i_mutex); | ||
2167 | |||
2161 | BUG_ON(S_ISDIR(vi->i_mode)); | 2168 | BUG_ON(S_ISDIR(vi->i_mode)); |
2162 | if (!datasync || !NInoNonResident(NTFS_I(vi))) | 2169 | if (!datasync || !NInoNonResident(NTFS_I(vi))) |
2163 | ret = __ntfs_write_inode(vi, 1); | 2170 | ret = __ntfs_write_inode(vi, 1); |
@@ -2175,6 +2182,7 @@ static int ntfs_file_fsync(struct file *filp, int datasync) | |||
2175 | else | 2182 | else |
2176 | ntfs_warning(vi->i_sb, "Failed to f%ssync inode 0x%lx. Error " | 2183 | ntfs_warning(vi->i_sb, "Failed to f%ssync inode 0x%lx. Error " |
2177 | "%u.", datasync ? "data" : "", vi->i_ino, -ret); | 2184 | "%u.", datasync ? "data" : "", vi->i_ino, -ret); |
2185 | mutex_unlock(&vi->i_mutex); | ||
2178 | return ret; | 2186 | return ret; |
2179 | } | 2187 | } |
2180 | 2188 | ||