if (written >= 0 && file->f_flags & O_SYNC) generic_osync_inode(inode, mapping, OSYNC_METADATA); 
if (written >= 0 && ((file->f_flags & O_SYNC) || IS_SYNC(inode))) { int err = generic_osync_inode(inode, mapping, OSYNC_METADATA); if (err < 0) written = err; } 
generic_file_direct_write(struct kiocb *iocb, const struct iovec *iov,		unsigned long *nr_segs, loff_t pos, loff_t *ppos,		size_t count, size_t ocount){	struct file	*file = iocb->ki_filp;	struct address_space *mapping = file->f_mapping;	struct inode	*inode = mapping->host;	ssize_t		written;	if (count != ocount)		*nr_segs = iov_shorten((struct iovec *)iov, *nr_segs, count);	written = generic_file_direct_IO(WRITE, iocb, iov, pos, *nr_segs);	if (written > 0) {		loff_t end = pos + written;		if (end > i_size_read(inode) && !S_ISBLK(inode->i_mode)) {			i_size_write(inode,  end);			mark_inode_dirty(inode);		}		*ppos = end;	}	/*	 * Sync the fs metadata but not the minor inode changes and	 * of course not the data as we did direct DMA for the IO.	 * i_sem is held, which protects generic_osync_inode() from	 * livelocking.	 */	if (written >= 0 && file->f_flags & O_SYNC)		generic_osync_inode(inode, mapping, OSYNC_METADATA);	if (written == count && !is_sync_kiocb(iocb))		written = -EIOCBQUEUED;	return written;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/1e8a81c5a37907bc082025d3468718116dca1eeb/filemap.c/clean/mm/filemap.c