/**************************************************************************/
    
    libreiserfs API

    by Yury Umanets <torque@ukrpost.net>

    Copyright (C) 2001, 2002 Yury Umanets

    Permission is granted to copy, distribute and/or modify this document
    under the terms of the GNU Free Documentation License, Version 1.1
    or any later version published by the Free Software Foundation;
    with the no Invariant Sections, with the no Front-Cover Texts, and
    with no Back-Cover Texts.  A copy of the license is included in the
    file, COPYING.
    
/***************************************************************************/

Contents:

1. Introduction.
2. Device Abstraction Layer (DAL)
3. libreiserfs API.

1. Introduction
This documents describes libreiserfs API. It consists of two parts. The first part
describes DAL as a way to interact with any block (and may be not block) device
by unified interface. And second part is a description of libreiserfs API wich
works with any device through DAL.

2. Device Abstraction Layer
Simple device abstraction layer. This is layer for handling all device calls 
(read, write, length, etc). First of all it usefull for some frontends. This is 
because, we don't know what the way to comunicate with certain device will be 
selected in corresponding frontend. Example, for GNU Parted this is PedGeometry.

There are the all operations wich must be supported (in theory) by device for libreiserfs. 
However, not the all of them are realy necessary. Example, "dev" needed just for stating 
of files and directories. If "dev" will not be implemented, then stat struct 
(filled by reiserfs_file_stat and reiserfs_dir_stat) will not be contain valid device.
The second cause to have dal is all i/o operations may be conducted (any chaecks, 
logs, etc).

blk_t (*len)(dal_t *dal, size_t block_size);
int (*read)(dal_t *dal, void *buff, blk_t block, blk_t count, size_t block_size);
int (*write)(dal_t *dal, void *buff, blk_t block, blk_t count, size_t block_size);
int (*sync)(dal_t *dal);
int (*flags)(dal_t *dal);
int (*equals)(dal_t *dal1, dal_t *dal2);
int (*stat)(dal_t *dal, struct stat* st);
dev_t (*dev)(dal_t *dal);

3. libreiserfs API (bitmap, journal, keys and filesystem functions)
Sorry, not implemented yet.
