diff options
author | Christoph Hellwig <hch@tuxera.com> | 2010-11-23 08:38:10 -0500 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2010-11-23 08:38:10 -0500 |
commit | eb29d66d4f2dc98a81ae590bbdddc8cfa8964d73 (patch) | |
tree | f1e2f9bc9bd92bf978d2bcf54b536a9a6b188667 | |
parent | 281469766bdde2d14bc73e1fec347e6dd7f63319 (diff) |
hfsplus: write up fsync for directories
fsync is supposed to not just work on regular files, but also on
directories. Fortunately enough hfsplus_file_fsync works just fine
for directories, so we can just wire it up.
Signed-off-by: Christoph Hellwig <hch@tuxera.com>
-rw-r--r-- | fs/hfsplus/dir.c | 1 | ||||
-rw-r--r-- | fs/hfsplus/hfsplus_fs.h | 1 | ||||
-rw-r--r-- | fs/hfsplus/inode.c | 2 |
3 files changed, 3 insertions, 1 deletions
diff --git a/fs/hfsplus/dir.c b/fs/hfsplus/dir.c index 9d59c0571f59..e44c78a837e8 100644 --- a/fs/hfsplus/dir.c +++ b/fs/hfsplus/dir.c | |||
@@ -485,6 +485,7 @@ const struct inode_operations hfsplus_dir_inode_operations = { | |||
485 | }; | 485 | }; |
486 | 486 | ||
487 | const struct file_operations hfsplus_dir_operations = { | 487 | const struct file_operations hfsplus_dir_operations = { |
488 | .fsync = hfsplus_file_fsync, | ||
488 | .read = generic_read_dir, | 489 | .read = generic_read_dir, |
489 | .readdir = hfsplus_readdir, | 490 | .readdir = hfsplus_readdir, |
490 | .unlocked_ioctl = hfsplus_ioctl, | 491 | .unlocked_ioctl = hfsplus_ioctl, |
diff --git a/fs/hfsplus/hfsplus_fs.h b/fs/hfsplus/hfsplus_fs.h index 0d8532d96694..625549579e9e 100644 --- a/fs/hfsplus/hfsplus_fs.h +++ b/fs/hfsplus/hfsplus_fs.h | |||
@@ -352,6 +352,7 @@ int hfsplus_cat_read_inode(struct inode *, struct hfs_find_data *); | |||
352 | int hfsplus_cat_write_inode(struct inode *); | 352 | int hfsplus_cat_write_inode(struct inode *); |
353 | struct inode *hfsplus_new_inode(struct super_block *, int); | 353 | struct inode *hfsplus_new_inode(struct super_block *, int); |
354 | void hfsplus_delete_inode(struct inode *); | 354 | void hfsplus_delete_inode(struct inode *); |
355 | int hfsplus_file_fsync(struct file *file, int datasync); | ||
355 | 356 | ||
356 | /* ioctl.c */ | 357 | /* ioctl.c */ |
357 | long hfsplus_ioctl(struct file *filp, unsigned int cmd, unsigned long arg); | 358 | long hfsplus_ioctl(struct file *filp, unsigned int cmd, unsigned long arg); |
diff --git a/fs/hfsplus/inode.c b/fs/hfsplus/inode.c index be68961da997..8cd8dc2e7fdd 100644 --- a/fs/hfsplus/inode.c +++ b/fs/hfsplus/inode.c | |||
@@ -302,7 +302,7 @@ static int hfsplus_setattr(struct dentry *dentry, struct iattr *attr) | |||
302 | return 0; | 302 | return 0; |
303 | } | 303 | } |
304 | 304 | ||
305 | static int hfsplus_file_fsync(struct file *file, int datasync) | 305 | int hfsplus_file_fsync(struct file *file, int datasync) |
306 | { | 306 | { |
307 | struct inode *inode = file->f_mapping->host; | 307 | struct inode *inode = file->f_mapping->host; |
308 | struct hfsplus_sb_info *sbi = HFSPLUS_SB(inode->i_sb); | 308 | struct hfsplus_sb_info *sbi = HFSPLUS_SB(inode->i_sb); |