コード例 #1
0
ファイル: fsync.c プロジェクト: rohsaini/mkunity
int bext2_sync_file (struct inode * inode, struct file * file)
{
	int wait, err = 0;

	if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) ||
	     S_ISLNK(inode->i_mode)))
		return -EINVAL;
	if (S_ISLNK(inode->i_mode) && !(inode->i_blocks))
		/*
		 * Don't sync fast links!
		 */
		goto skip;

	for (wait=0; wait<=1; wait++)
	{
		err |= sync_direct (inode, wait);
		err |= sync_indirect (inode,
				      inode->u.ext2_i.i_data+EXT2_IND_BLOCK,
				      wait);
		err |= sync_dindirect (inode,
				       inode->u.ext2_i.i_data+EXT2_DIND_BLOCK, 
				       wait);
		err |= sync_tindirect (inode, 
				       inode->u.ext2_i.i_data+EXT2_TIND_BLOCK, 
				       wait);
	}
skip:
	err |= bext2_sync_inode (inode);
	return (err < 0) ? -EIO : 0;
}
コード例 #2
0
int qnx4_sync_file(struct file *file, struct dentry *dentry)
{
    struct inode *inode = dentry->d_inode;
    int wait, err = 0;

    (void) file;
    if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) ||
            S_ISLNK(inode->i_mode)))
        return -EINVAL;

    for (wait = 0; wait <= 1; wait++) {
        err |= sync_direct(inode, wait);
    }
    err |= qnx4_sync_inode(inode);
    return (err < 0) ? -EIO : 0;
}
コード例 #3
0
ファイル: fsync.c プロジェクト: dmgerman/original
int sysv_sync_file(struct file * file, struct dentry *dentry, int datasync)
{
	int wait, err = 0;
	struct inode *inode = dentry->d_inode;

	if (!(S_ISREG(inode->i_mode) || S_ISDIR(inode->i_mode) ||
	     S_ISLNK(inode->i_mode)))
		return -EINVAL;

	lock_kernel();
	for (wait=0; wait<=1; wait++) {
		err |= sync_direct(inode, wait);
		err |= sync_indirect(inode, inode->u.sysv_i.i_data+10, 0, wait);
		err |= sync_dindirect(inode, inode->u.sysv_i.i_data+11, 0, wait);
		err |= sync_tindirect(inode, inode->u.sysv_i.i_data+12, 0, wait);
	}
	err |= sysv_sync_inode (inode);
	unlock_kernel();
	return (err < 0) ? -EIO : 0;
}