From 915f96b4c85f1c31a7cb4baf12e044c329f722ce Mon Sep 17 00:00:00 2001 From: Al Viro Date: Mon, 8 Jun 2009 01:22:00 -0400 Subject: [PATCH] --- yaml --- r: 147876 b: refs/heads/master c: c475879556a8602bbe2faa9a06f6e5fcc8c05bb2 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/affs/affs.h | 1 + trunk/fs/affs/dir.c | 2 +- trunk/fs/affs/file.c | 14 +++++++++++++- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 0f22ddafddb4..d6516ddb7b5f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4427f0c36e22e2cd6696b2fe7643e9756a14b3d3 +refs/heads/master: c475879556a8602bbe2faa9a06f6e5fcc8c05bb2 diff --git a/trunk/fs/affs/affs.h b/trunk/fs/affs/affs.h index 1a2d5e3c7f4e..e511dc621a2e 100644 --- a/trunk/fs/affs/affs.h +++ b/trunk/fs/affs/affs.h @@ -182,6 +182,7 @@ extern int affs_add_entry(struct inode *dir, struct inode *inode, struct dent void affs_free_prealloc(struct inode *inode); extern void affs_truncate(struct inode *); +int affs_file_fsync(struct file *, struct dentry *, int); /* dir.c */ diff --git a/trunk/fs/affs/dir.c b/trunk/fs/affs/dir.c index 7b36904dbeac..8ca8f3a55599 100644 --- a/trunk/fs/affs/dir.c +++ b/trunk/fs/affs/dir.c @@ -21,7 +21,7 @@ const struct file_operations affs_dir_operations = { .read = generic_read_dir, .llseek = generic_file_llseek, .readdir = affs_readdir, - .fsync = file_fsync, + .fsync = affs_file_fsync, }; /* diff --git a/trunk/fs/affs/file.c b/trunk/fs/affs/file.c index 9246cb4aa018..184e55c1c9ba 100644 --- a/trunk/fs/affs/file.c +++ b/trunk/fs/affs/file.c @@ -34,7 +34,7 @@ const struct file_operations affs_file_operations = { .mmap = generic_file_mmap, .open = affs_file_open, .release = affs_file_release, - .fsync = file_fsync, + .fsync = affs_file_fsync, .splice_read = generic_file_splice_read, }; @@ -915,3 +915,15 @@ affs_truncate(struct inode *inode) } affs_free_prealloc(inode); } + +int affs_file_fsync(struct file *filp, struct dentry *dentry, int datasync) +{ + struct inode * inode = dentry->d_inode; + int ret, err; + + ret = write_inode_now(inode, 0); + err = sync_blockdev(inode->i_sb->s_bdev); + if (!ret) + ret = err; + return ret; +}