int scfs_initialize_file(struct dentry *scfs_dentry, struct inode *scfs_inode)
{
	struct scfs_inode_info *sii = SCFS_I(scfs_inode);
	int ret = 0;

	SCFS_DEBUG_START;

	copy_mount_flags_to_inode_flags(scfs_inode, scfs_inode->i_sb);
	if (S_ISDIR(scfs_inode->i_mode)) {
		SCFS_PRINT_ERROR("it's a directory\n");
		sii->flags &= ~(SCFS_DATA_COMPRESS);
		goto out;
	}

	ret = scfs_get_lower_file(scfs_dentry, scfs_inode);
	if (ret) {
		SCFS_PRINT_ERROR("error in get_lower_file, ret : %d\n", ret);
		goto out;
	}

	ret = scfs_make_header(scfs_dentry, scfs_inode);
	if (ret)
		SCFS_PRINT_ERROR("error in make header\n");

	scfs_put_lower_file(scfs_inode);

out:
	SCFS_DEBUG_END;
	
	return ret;
}
Exemplo n.º 2
0
int scfs_initialize_file(struct dentry *scfs_dentry, struct inode *scfs_inode)
{
	struct scfs_inode_info *sii = SCFS_I(scfs_inode);
	int ret = 0;

	copy_mount_flags_to_inode_flags(scfs_inode, scfs_inode->i_sb);
	if (S_ISDIR(scfs_inode->i_mode)) {
		SCFS_PRINT_ERROR("it's a directory\n");
		sii->flags &= ~(SCFS_DATA_COMPRESSABLE);
		goto out;
	}

	/* last parameter may be O_RDWR */
	ret = scfs_get_lower_file(scfs_dentry, scfs_inode, EMPTY_FLAG);
	if (ret) {
		SCFS_PRINT_ERROR("error in get_lower_file, ret : %d\n", ret);
		goto out;
	}

	ret = scfs_make_header(scfs_dentry, scfs_inode);
	if (ret)
		SCFS_PRINT_ERROR("error in make header\n");

	scfs_put_lower_file(scfs_inode);

out:
	return ret;
}