/*
 *  (C) Copyright 2003 - 2004
 *  Sysgo AG, <www.elinos.com>, Pavel Bartusek <pba@sysgo.com>
 *
 * SPDX-License-Identifier:	GPL-2.0+
 */


#include <common.h>
#include <config.h>
#include <reiserfs.h>
#include <fs_internal.h>
#include "reiserfs_private.h"

static struct blk_desc *reiserfs_blk_desc;
static disk_partition_t *part_info;


void reiserfs_set_blk_dev(struct blk_desc *rbdd, disk_partition_t *info)
{
	reiserfs_blk_desc = rbdd;
	part_info = info;
}

int reiserfs_devread(int sector, int byte_offset, int byte_len, char *buf)
{
	return fs_devread(reiserfs_blk_desc, part_info, sector, byte_offset,
			  byte_len, buf);
}
