From eb29d66d4f2dc98a81ae590bbdddc8cfa8964d73 Mon Sep 17 00:00:00 2001 From: Christoph Hellwig Date: Tue, 23 Nov 2010 14:38:10 +0100 Subject: 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 --- fs/hfsplus/dir.c | 1 + fs/hfsplus/hfsplus_fs.h | 1 + fs/hfsplus/inode.c | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) (limited to 'fs/hfsplus') diff --git a/fs/hfsplus/dir.c b/fs/hfsplus/dir.c index 9d59c0571f598..e44c78a837e8c 100644 --- a/fs/hfsplus/dir.c +++ b/fs/hfsplus/dir.c @@ -485,6 +485,7 @@ const struct inode_operations hfsplus_dir_inode_operations = { }; const struct file_operations hfsplus_dir_operations = { + .fsync = hfsplus_file_fsync, .read = generic_read_dir, .readdir = hfsplus_readdir, .unlocked_ioctl = hfsplus_ioctl, diff --git a/fs/hfsplus/hfsplus_fs.h b/fs/hfsplus/hfsplus_fs.h index 0d8532d966943..625549579e9ea 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 *); int hfsplus_cat_write_inode(struct inode *); struct inode *hfsplus_new_inode(struct super_block *, int); void hfsplus_delete_inode(struct inode *); +int hfsplus_file_fsync(struct file *file, int datasync); /* ioctl.c */ 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 be68961da9977..8cd8dc2e7fdd8 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) return 0; } -static int hfsplus_file_fsync(struct file *file, int datasync) +int hfsplus_file_fsync(struct file *file, int datasync) { struct inode *inode = file->f_mapping->host; struct hfsplus_sb_info *sbi = HFSPLUS_SB(inode->i_sb); -- cgit v1.2.3