path: root/doc
diff options
authorLubomir Rintel <>2013-07-31 17:31:07 +0200
committerVijay Bellur <>2013-08-04 07:43:47 -0700
commitaefabb62a9a0a0e63412e4fab6cd47f76e9a4619 (patch)
treee1ea6d45496f9817f027455080f2fd864c009df7 /doc
parentbf34745d800171aaef2ee53a404d4de57e293ce5 (diff)
doc: Remove the bdb translator documentation
The translator was removed in ea08bf886732d9680f2d6de19f3d68908a55143b. Change-Id: I3d124be9e3962a54f0ab0247cfd4867b815f4a17 Signed-off-by: Lubomir Rintel <> Reviewed-on: Reviewed-by: Vijay Bellur <> Tested-by: Vijay Bellur <>
Diffstat (limited to 'doc')
1 files changed, 0 insertions, 70 deletions
diff --git a/doc/legacy/hacker-guide/bdb.txt b/doc/legacy/hacker-guide/bdb.txt
deleted file mode 100644
index 1a80be813..000000000
--- a/doc/legacy/hacker-guide/bdb.txt
+++ /dev/null
@@ -1,70 +0,0 @@
-* How does file translates to key/value pair?
- in bdb a file is identified by key (obtained by taking basename() of the path of
-the file) and file contents are stored as value corresponding to the key in database
-file (defaults to glusterfs_storage.db under dirname() directory).
-* symlinks, directories
- symlinks and directories are stored as is.
-* db (database) files
- every directory, including root directory, contains a database file called
-glusterfs_storage.db. all the regular files contained in the directory are stored
-as key/value pair inside the glusterfs_storage.db.
-* internal data cache
- db does not provide a way to find out the size of the value corresponding to a key.
-so, bdb makes DB->get() call for key and takes the length of the value returned.
-since DB->get() also returns file contents for key, bdb maintains an internal cache and
-stores the file contents in the cache.
- every directory maintains a seperate cache.
-* inode number transformation
- bdb allocates a inode number to each file and directory on its own. bdb maintains a
-global counter and increments it after allocating inode number for each file
-(regular, symlink or directory). NOTE: bdb does not guarantee persistent inode numbers.
-* checkpoint thread
- bdb creates a checkpoint thread at the time of init(). checkpoint thread does a
-periodic checkpoint on the DB_ENV. checkpoint is the mechanism, provided by db, to
-forcefully commit the logged transactions to the storage.
-lookup() -
- 1> do lstat() on the path, if lstat fails, we assume that the file being looked up
- is either a regular file or doesn't exist.
- 2> lookup in the DB of parent directory for key corresponding to path. if key exists,
- return key, with.
- NOTE: 'struct stat' stat()ed from DB file is used as a container for 'struct stat'
- of the regular file. st_ino, st_size, st_blocks are updated with file's values.
-readv() -
- 1> do a lookup in bctx cache. if successful, return the requested data from cache.
- 2> if cache missed, do a DB->get() the entire file content and insert to cache.
- 1> flush any cached content of this file.
- 2> do a DB->put(), with DB_DBT_PARTIAL flag.
- NOTE: DB_DBT_PARTIAL is used to do partial update of a value in DB.
- 1> regular readdir() in a loop, and vomit all DB_ENV log files and DB files that
- we encounter.
- 2> if the readdir() buffer still has space, open a DB cursor and do a sequential
- DBC->get() to fill the reaadir buffer.