diff options
Diffstat (limited to 'fs/jffs2/file.c')
| -rw-r--r-- | fs/jffs2/file.c | 9 | 
1 files changed, 8 insertions, 1 deletions
| diff --git a/fs/jffs2/file.c b/fs/jffs2/file.c index 1c0a08d711aa..3989f7e09f7f 100644 --- a/fs/jffs2/file.c +++ b/fs/jffs2/file.c @@ -27,13 +27,20 @@ static int jffs2_write_begin(struct file *filp, struct address_space *mapping,  			struct page **pagep, void **fsdata);  static int jffs2_readpage (struct file *filp, struct page *pg); -int jffs2_fsync(struct file *filp, int datasync) +int jffs2_fsync(struct file *filp, loff_t start, loff_t end, int datasync)  {  	struct inode *inode = filp->f_mapping->host;  	struct jffs2_sb_info *c = JFFS2_SB_INFO(inode->i_sb); +	int ret; + +	ret = filemap_write_and_wait_range(inode->i_mapping, start, end); +	if (ret) +		return ret; +	mutex_lock(&inode->i_mutex);  	/* Trigger GC to flush any pending writes for this inode */  	jffs2_flush_wbuf_gc(c, inode->i_ino); +	mutex_unlock(&inode->i_mutex);  	return 0;  } |