diff options
Diffstat (limited to 'fs/coda')
| -rw-r--r-- | fs/coda/coda_int.h | 2 | ||||
| -rw-r--r-- | fs/coda/file.c | 8 |
2 files changed, 8 insertions, 2 deletions
diff --git a/fs/coda/coda_int.h b/fs/coda/coda_int.h index 6b443ff43a19..b7143cf783ac 100644 --- a/fs/coda/coda_int.h +++ b/fs/coda/coda_int.h | |||
| @@ -11,7 +11,7 @@ extern int coda_fake_statfs; | |||
| 11 | 11 | ||
| 12 | void coda_destroy_inodecache(void); | 12 | void coda_destroy_inodecache(void); |
| 13 | int coda_init_inodecache(void); | 13 | int coda_init_inodecache(void); |
| 14 | int coda_fsync(struct file *coda_file, int datasync); | 14 | int coda_fsync(struct file *coda_file, loff_t start, loff_t end, int datasync); |
| 15 | void coda_sysctl_init(void); | 15 | void coda_sysctl_init(void); |
| 16 | void coda_sysctl_clean(void); | 16 | void coda_sysctl_clean(void); |
| 17 | 17 | ||
diff --git a/fs/coda/file.c b/fs/coda/file.c index 0433057be330..8edd404e6419 100644 --- a/fs/coda/file.c +++ b/fs/coda/file.c | |||
| @@ -199,7 +199,7 @@ int coda_release(struct inode *coda_inode, struct file *coda_file) | |||
| 199 | return 0; | 199 | return 0; |
| 200 | } | 200 | } |
| 201 | 201 | ||
| 202 | int coda_fsync(struct file *coda_file, int datasync) | 202 | int coda_fsync(struct file *coda_file, loff_t start, loff_t end, int datasync) |
| 203 | { | 203 | { |
| 204 | struct file *host_file; | 204 | struct file *host_file; |
| 205 | struct inode *coda_inode = coda_file->f_path.dentry->d_inode; | 205 | struct inode *coda_inode = coda_file->f_path.dentry->d_inode; |
| @@ -210,6 +210,11 @@ int coda_fsync(struct file *coda_file, int datasync) | |||
| 210 | S_ISLNK(coda_inode->i_mode))) | 210 | S_ISLNK(coda_inode->i_mode))) |
| 211 | return -EINVAL; | 211 | return -EINVAL; |
| 212 | 212 | ||
| 213 | err = filemap_write_and_wait_range(coda_inode->i_mapping, start, end); | ||
| 214 | if (err) | ||
| 215 | return err; | ||
| 216 | mutex_lock(&coda_inode->i_mutex); | ||
| 217 | |||
| 213 | cfi = CODA_FTOC(coda_file); | 218 | cfi = CODA_FTOC(coda_file); |
| 214 | BUG_ON(!cfi || cfi->cfi_magic != CODA_MAGIC); | 219 | BUG_ON(!cfi || cfi->cfi_magic != CODA_MAGIC); |
| 215 | host_file = cfi->cfi_container; | 220 | host_file = cfi->cfi_container; |
| @@ -217,6 +222,7 @@ int coda_fsync(struct file *coda_file, int datasync) | |||
| 217 | err = vfs_fsync(host_file, datasync); | 222 | err = vfs_fsync(host_file, datasync); |
| 218 | if (!err && !datasync) | 223 | if (!err && !datasync) |
| 219 | err = venus_fsync(coda_inode->i_sb, coda_i2f(coda_inode)); | 224 | err = venus_fsync(coda_inode->i_sb, coda_i2f(coda_inode)); |
| 225 | mutex_unlock(&coda_inode->i_mutex); | ||
| 220 | 226 | ||
| 221 | return err; | 227 | return err; |
| 222 | } | 228 | } |
