| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /* | 
 | 2 |  * fsync.c | 
 | 3 |  * | 
 | 4 |  * PURPOSE | 
 | 5 |  *  Fsync handling routines for the OSTA-UDF(tm) filesystem. | 
 | 6 |  * | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 7 |  * COPYRIGHT | 
 | 8 |  *  This file is distributed under the terms of the GNU General Public | 
 | 9 |  *  License (GPL). Copies of the GPL can be obtained from: | 
 | 10 |  *      ftp://prep.ai.mit.edu/pub/gnu/GPL | 
 | 11 |  *  Each contributing author retains all rights to their own work. | 
 | 12 |  * | 
 | 13 |  *  (C) 1999-2001 Ben Fennema | 
 | 14 |  *  (C) 1999-2000 Stelias Computing Inc | 
 | 15 |  * | 
 | 16 |  * HISTORY | 
 | 17 |  * | 
 | 18 |  *  05/22/99 blf  Created. | 
 | 19 |  */ | 
 | 20 |  | 
 | 21 | #include "udfdecl.h" | 
 | 22 |  | 
 | 23 | #include <linux/fs.h> | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 24 |  | 
 | 25 | static int udf_fsync_inode(struct inode *, int); | 
 | 26 |  | 
 | 27 | /* | 
 | 28 |  *	File may be NULL when we are called. Perhaps we shouldn't | 
 | 29 |  *	even pass file to fsync ? | 
 | 30 |  */ | 
 | 31 |  | 
 | 32 | int udf_fsync_file(struct file * file, struct dentry *dentry, int datasync) | 
 | 33 | { | 
 | 34 | 	struct inode *inode = dentry->d_inode; | 
 | 35 | 	return udf_fsync_inode(inode, datasync); | 
 | 36 | } | 
 | 37 |  | 
 | 38 | static int udf_fsync_inode(struct inode *inode, int datasync) | 
 | 39 | { | 
 | 40 | 	int err; | 
 | 41 |  | 
 | 42 | 	err = sync_mapping_buffers(inode->i_mapping); | 
 | 43 | 	if (!(inode->i_state & I_DIRTY)) | 
 | 44 | 		return err; | 
 | 45 | 	if (datasync && !(inode->i_state & I_DIRTY_DATASYNC)) | 
 | 46 | 		return err; | 
 | 47 |  | 
 | 48 | 	err |= udf_sync_inode (inode); | 
 | 49 | 	return err ? -EIO : 0; | 
 | 50 | } |