Пример #1
0
int sysv_sync_file(struct file * file, struct dentry *dentry, int datasync)
{
    struct inode *inode = dentry->d_inode;
    int err;

    err = sync_mapping_buffers(inode->i_mapping);
    if (!(inode->i_state & I_DIRTY))
        return err;
    if (datasync && !(inode->i_state & I_DIRTY_DATASYNC))
        return err;

    err |= sysv_sync_inode(inode);
    return err ? -EIO : 0;
}
Пример #2
0
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;
}