diff options
Diffstat (limited to 'doc/libext2fs.texinfo')
-rw-r--r-- | doc/libext2fs.texinfo | 929 |
1 files changed, 929 insertions, 0 deletions
diff --git a/doc/libext2fs.texinfo b/doc/libext2fs.texinfo new file mode 100644 index 00000000..9769985e --- /dev/null +++ b/doc/libext2fs.texinfo @@ -0,0 +1,929 @@ +\input texinfo @c -*-texinfo-*- +@c %**start of header +@setfilename libext2fs.info +@settitle The EXT2FS Library (version 1.07) +@synindex tp fn +@comment %**end of header + +@ifinfo +@format +START-INFO-DIR-ENTRY +* libext2fs: (libext2fs.info). The EXT2FS library. +END-INFO-DIR-ENTRY +@end format +@end ifinfo + +@c smallbook + +@iftex +@finalout +@end iftex + +@c Note: the edition number is listed in *three* places; please update +@c all three. Also, update the month and year where appropriate. + +@c ==> Update edition number for settitle and subtitle, and in the +@c ==> following paragraph; update date, too. + + +@ifinfo +This file documents the ext2fs library, a library for manipulating the +ext2 filesystem. + +Copyright (C) 1997 Theodore Ts'o + +Permission is granted to make and distribute verbatim copies of +this manual provided the copyright notice and this permission notice +are preserved on all copies. + +@ignore +Permission is granted to process this file through TeX and print the +results, provided the printed document carries copying permission +notice identical to this one except for the removal of this paragraph +(this paragraph not being relevant to the printed manual). + +@end ignore +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided that the entire +resulting derived work is distributed under the terms of a permission +notice identical to this one. + +Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions, +except that this permission notice may be stated in a translation approved +by the author. +@end ifinfo + +@setchapternewpage on +@titlepage +@c use the new format for titles + +@title The EXT2FS Library +@subtitle The EXT2FS Library +@subtitle Version 1.07 +@subtitle February 1997 + +@author by Theodore Ts'o + +@c Include the Distribution inside the titlepage so +@c that headings are turned off. + +@tex +\global\parindent=0pt +\global\parskip=8pt +\global\baselineskip=13pt +@end tex + +@page +@vskip 0pt plus 1filll +Copyright @copyright{} 1997 Theodore Ts'o + +@sp 2 + +Permission is granted to make and distribute verbatim copies of +this manual provided the copyright notice and this permission notice +are preserved on all copies. + +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided that the entire +resulting derived work is distributed under the terms of a permission +notice identical to this one. + +Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions, +except that this permission notice may be stated in a translation approved +by the Foundation. +@end titlepage +@headings double + +@ifinfo +@node Top, Introduction to the EXT2FS Library, (dir), (dir) + +@top The EXT2FS Library + +This manual documents the EXT2FS Library, version 1.07. + +@end ifinfo + +@menu +* Introduction to the EXT2FS Library:: +* EXT2FS Library Functions:: +* Concept Index:: +* Function Index:: +@end menu + +@c ---------------------------------------------------------------------- + +@node Introduction to the EXT2FS Library, EXT2FS Library Functions, Top, Top +@comment node-name, next, previous, up +@chapter Introduction to the EXT2FS Library + +The EXT2FS library is designed to allow user-level programs to +manipulate an ext2 filesystem. + +@node EXT2FS Library Functions, Concept Index, Introduction to the EXT2FS Library, Top +@comment node-name, next, previous, up +@chapter EXT2FS Library Functions + +@menu +* Filesystem-level functions:: +* Inode Functions:: +* Directory functions:: +* Bitmap Functions:: +* Badblocks list management:: +* Directory-block list management:: +* Byte-swapping functions:: +* Other functions:: +@end menu + +@c ---------------------------------------------------------------------- + +@node Filesystem-level functions, Inode Functions, EXT2FS Library Functions, EXT2FS Library Functions +@comment node-name, next, previous, up +@section Filesystem-level functions + +The following functions operate on a filesystem handle. Most EXT2FS +Library functions require a filesystem handle as their first argument. +There are two functions which create a filesystem handle, +@code{ext2fs_open} and @code{ext2fs_initialize}. + +The filesystem can also be closed using @code{ext2fs_close}, and any +changes to the superblock and group descripts can be written out to disk +using @code{ext2fs_flush}. + +@menu +* Opening an ext2 filesystem:: +* Closing and flushing out changes:: +* Initializing a filesystem:: +* Filesystem flag functions:: +@end menu + +@c ---------------------------------------------------------------------- + +@node Opening an ext2 filesystem, Closing and flushing out changes, Filesystem-level functions, Filesystem-level functions +@comment node-name, next, previous, up +@subsection Opening an ext2 filesystem + +Most libext2fs functions take a filesystem handle of type +@code{ext2_filsys}. A filesystem handle is created either by opening +an existing function using @code{ext2fs_open}, or by initializing a new +filesystem using @code{ext2fs_initialize}. + +@deftypefun errcode_t ext2fs_open (const char *@var{name}, int @var{flags}, int @var{superblock}, int @var{block_size}, io_manager @var{manager}, ext2_filsys *@var{ret_fs}) + +Opens a filesystem named @var{name}, using the the io_manager +@var{manager} to define the input/output routines needed to read and +write the filesystem. In the case of the @code{unix_io} io_manager, +@var{name} is interpreted as the Unix filename of the filesystem image. +This is often a device file, such as @file{/dev/hda1}. + +The @var{superblock} parameter specifies the block number of the +superblock which should be used when opening the filesystem. +If @var{superblock} is zero, @code{ext2fs_open} will use the primary +superblock located at offset 1024 bytes from the start of the filesystem +image. + +The @var{block_size} parameter specifies the block size used by the +filesystem. Normally this is determined automatically from the +filesystem uperblock. If @var{block_size} is non-zero, it must match +the block size found in the superblock, or the error +@code{EXT2_ET_UNEXPECTED_BLOCK_SIZE} will be returned. The +@var{block_size} parameter is also used to help fund the superblock when +@var{superblock} is non-zero. + +The @var{flags} argument contains a bitmask of flags which control how +the filesystem open should be handled. + +@table @code +@item EXT2_FLAG_RW +Open the filesystem for reading and writing. Without this flag, the +filesystem is opened for reading only. + +@item EXT2_FLAG_FORCE +Open the filesystem regardless of the feature sets listed in the +superblock. + +@end table +@end deftypefun + +@c ---------------------------------------------------------------------- + +@node Closing and flushing out changes, Initializing a filesystem, Opening an ext2 filesystem, Filesystem-level functions +@comment node-name, next, previous, up +@subsection Closing and flushing out changes + +@deftypefun errcode_t ext2fs_flush (ext2_filsys @var{fs}) + +Write any changes to the high-level filesystem data structures in the +@var{fs} filesystem. The following data structures will be written out: + +@itemize @bullet +@item The filesystem superblock +@item The filesystem group descriptors +@item The filesystem bitmaps, if read in via @code{ext2fs_read_bitmaps}. +@end itemize + +@end deftypefun + +@deftypefun void ext2fs_free (ext2_filsys @var{fs}) + +Close the io_manager abstraction for @var{fs} and release all memory +associated with the filesystem handle. +@end deftypefun + +@deftypefun errcode_t ext2fs_close (ext2_filsys @var{fs}) + +Flush out any changes to the high-level filesystem data structures using +@code{ext2fs_flush} if the filesystem is marked dirty; then close and +free the filesystem using @code{ext2fs_free}. + +@end deftypefun + +@c ---------------------------------------------------------------------- + +@node Initializing a filesystem, Filesystem flag functions, Closing and flushing out changes, Filesystem-level functions +@comment node-name, next, previous, up +@subsection Initializing a filesystem + +An ext2 filesystem is initializing by the @code{mke2fs} program. The +two functions described here, @code{ext2fs_initialize} and +@code{ext2fs_allocate_tables} do much of the initial work for setting up +a filesystem. However, they don't do the whole job. @code{mke2fs} +calls @code{ext2fs_initialize} to set up the filesystem superblock, and +calls @code{ext2fs_allocate_tables} to allocate space for the inode +table, and the inode and block bitmaps. In addition, @code{mke2fs} must +also initialize the inode tables by clearing them with zeros, create the +root and lost+found directories, and reserve the reserved inodes. + +@deftypefun errcode_t ext2fs_initialize (const char *@var{name}, int @var{flags}, struct ext2_super_block *@var{param}, io_manager @var{manager}, ext2_filsys *@var{ret_fs}) + +This function is used by the @code{mke2fs} program to initialize a +filesystem. The @code{ext2fs_initialize} function creates a filesystem +handle which is returned in @var{ret_fs} that has been properly setup +for a filesystem to be located in @var{name}, using the io_manager +@var{manager}. The prototype superblock in @var{param} is used to +supply parameters such as the number of blocks in the filesystem, the +block size, etc. + +The @code{ext2fs_initialize} function does not actually do any I/O; that +will be done when the application program calls @code{ext2fs_close} or +@code{ext2fs_flush}. Also, this function only initializes the +superblock and group descriptor structures. It does not create the +inode table or the root directory. This must be done by the calling +application, such as @code{mke2fs}. + +The following values may be set in the @var{param} prototype superblock; +if a value of 0 is found in a field, @code{ext2fs_initialize} will use a +default value. The calling application should zero out the prototype +entire superblock, and then fill in any appropriate values. + +@table @code + +@item s_blocks_count +The number of blocks in the filesystem. This parameter is mandatory and +must be set by the calling application. + +@item s_inodes_count +The number of inodes in the filesystem. The +default value is determined by calculating the size of the filesystem, +and creating one inode for every 4096 bytes. + +@item s_r_blocks_count +The number of blocks which should be reserved for the superuser. The +default value is zero blocks. + +@item s_log_block_size +The blocksize of the filesystem. Valid values are 0 (1024 bytes), 1 +(2048 bytes), or 2 (4096 bytes). The default blocksize is 1024 bytes. + +@item s_log_frag_size +The size of fragments. The ext2 filesystem does not support fragments +(and may never support fragments). Currently this field must be the +same as @code{s_log_block_size}. + +@item s_first_data_block +The first data block for the filesystem. For filesystem with a +blocksize of 1024 bytes, this value must be at least 1, since the +superblock is located in block number 1. For filesystems with larger +blocksizes, the superblock is still located at an offset of 1024 bytes, +so the superblock is located in block number 0. By default, this value +is set to 1 for filesystems with a block size of 1024 bytes, or 0 for +filesystems with larger blocksizes. + +@item s_max_mnt_count +This field defines the number of times that the filesystem can be +mounted before it should be checked using @code{e2fsck}. When +@code{e2fsck} is run without the @samp{-f} option, @code{e2fsck} will +skip the filesystem check if the number of times that the filesystem has +been mounted is less than @code{s_max_mnt_count} and if the interval +between the last time a filesystem check was performed and the current +time is less than @code{s_checkinterval} (see below). The default value +of @code{s_max_mnt_count} is 20. + +@item s_checkinterval +This field defines the minimal interval between filesystem checks. See +the previous entry for a discussion of how this field is used by +@code{e2fsck}. The default value of this field is 180 days (six +months). + +@item s_errors +This field defines the behavior which should be used by the kernel of +errors are detected in the filesystem. Possible values include: + +@table @samp +@item EXT2_ERRORS_CONTINUE +Continue execution when errors are detected. + +@item EXT2_ERRORS_RO +Remount the filesystem read-only. + +@item EXT2_ERRORS_PANIC +Panic. + +@end table + +The default behavior is @samp{EXT2_ERRORS_CONTINUE}. + +@end table + +@end deftypefun + +@deftypefun errcode_t ext2fs_allocate_tables (ext2_filsys @var{fs}) +Allocate space for the inode table and the block and inode bitmaps. The +inode tables and block and inode bitmaps aren't actually initialized; +this function just allocates the space for them. +@end deftypefun + +@c ---------------------------------------------------------------------- + +@node Filesystem flag functions, , Initializing a filesystem, Filesystem-level functions +@comment node-name, next, previous, up +@subsection Filesystem flag functions + +The filesystem handle has a number of flags which can be manipulated +using the following function. Some of these flags affect how the +libext2fs filesystem behaves; others are provided solely for the +application's convenience. + +@deftypefun void ext2fs_mark_changed (ext2_filsys @var{fs}) +@deftypefunx int ext2fs_test_changed (ext2_filsys @var{fs}) +This flag indicates whether or not the filesystem has been changed. +It is not used by the ext2fs library. +@end deftypefun + +@deftypefun void ext2fs_mark_super_dirty (ext2_filsys @var{fs}) +Mark the filesystem @var{fs} as being dirty; this will cause +the superblock information to be flushed out when @code{ext2fs_close} is +called. @code{ext2fs_mark_super_dirty} will also set the filesystem +changed flag. The dirty flag is automatically cleared by +@code{ext2fs_flush} when the superblock is written to disk. +@end deftypefun + +@deftypefun void ext2fs_mark_valid (ext2_filsys @var{fs}) +@deftypefunx void ext2fs_unmark_valid (ext2_filsys @var{fs}) +@deftypefunx int ext2fs_test_valid (ext2_filsys @var{fs}) +This flag indicates whether or not the filesystem is free of errors. +It is not used by libext2fs, and is solely for the application's +convenience. +@end deftypefun + +@deftypefun void ext2fs_mark_ib_dirty (ext2_filsys @var{fs}) +@deftypefunx void ext2fs_mark_bb_dirty (ext2_filsys @var{fs}) +@deftypefunx int ext2fs_test_ib_dirty (ext2_filsys @var{fs}) +@deftypefunx int ext2fs_test_bb_dirty (ext2_filsys @var{fs}) +These flags indicate whether or not the inode or block bitmaps have been +modified. If the flag is set, it will cause the appropriate bitmap +to be written when the filesystem is closed or flushed. +@end deftypefun + + + +@c ---------------------------------------------------------------------- + +@node Inode Functions, Directory functions, Filesystem-level functions, EXT2FS Library Functions +@comment node-name, next, previous, up +@section Inode Functions + +@menu +* Reading and writing inodes:: +* Iterating over inodes in a filesystem:: +* Iterating over blocks in an inode:: +* Inode Convenience Functions:: +@end menu + +@c ---------------------------------------------------------------------- + +@node Reading and writing inodes, Iterating over inodes in a filesystem, Inode Functions, Inode Functions +@comment node-name, next, previous, up +@subsection Reading and writing inodes + +@deftypefun errcode_t ext2fs_read_inode (ext2_filsys @var{fs}, ino_t @var{ino}, struct ext2_inode *@var{inode}) +Read the inode number @var{ino} into @var{inode}. +@end deftypefun + +@deftypefun errcode_t ext2fs_write_inode(ext2_filsys @var{fs}, ino_t @var{ino}, struct ext2_inode *@var{inode}) +Write @var{inode} to inode @var{ino}. +@end deftypefun + + +@c ---------------------------------------------------------------------- + +@node Iterating over inodes in a filesystem, Iterating over blocks in an inode, Reading and writing inodes, Inode Functions +@comment node-name, next, previous, up +@subsection Iterating over inodes in a filesystem + +The inode_scan abstraction is useful for iterating over all the inodes +in a filesystem. + +@deftypefun errcode_t ext2fs_open_inode_scan (ext2_filsys @var{fs}, int @var{buffer_blocks}, ext2_inode_scan *@var{scan}) +Initialize the iteration variable @var{scan}. This variable is used by +@code{ext2fs_get_next_inode}. The @var{buffer_blocks} parameter +controls how many blocks of the inode table are read in at a time. A +large number of blocks requires more memory, but reduces the overhead in +seeking and reading from the disk. If @var{buffer_blocks} is zero, a +suitable default value will be used. +@end deftypefun + +@deftypefun void ext2fs_close_inode_scan (ext2_inode_scan @var{scan}) +Release the memory associated with @var{scan} and invalidate it. +@end deftypefun + +@deftypefun errcode_t ext2fs_get_next_inode (ext2_inode_scan @var{scan}, ino_t *@var{ino}, struct ext2_inode *@var{inode}) + +This function returns the next inode from the filesystem; the inode +number of the inode is stored in @var{ino}, and the inode is stored in +@var{inode}. + +If the inode is located in a block that has been marked as bad, +@code{ext2fs_get_next_inode} will return the error +@code{EXT2_ET_BAD_BLOCK_IN_INODE_TABLE}. +@end deftypefun + +@deftypefun errcode_t ext2fs_inode_scan_goto_blockgroup (ext2_inode_scan @var{scan}, int @var{group}) +Start the inode scan at a particular ext2 blockgroup, @var{group}. +This function may be safely called at any time while @var{scan} is valid. +@end deftypefun + +@deftypefun void ext2fs_set_inode_callback (ext2_inode_scan @var{scan}, errcode_t (*done_group)(ext2_filsys @var{fs}, ext2_inode_scan @var{scan}, dgrp_t @var{group}, void * @var{private}), void *@var{done_group_data}) +Register a callback function which will be called by +@code{ext2_get_next_inode} when all of the inodes in a block group have +been processed. +@end deftypefun + +@deftypefun int ext2fs_inode_scan_flags (ext2_inode_scan @var{scan}, int @var{set_flags}, int @var{clear_flags}) + +Set the scan_flags @var{set_flags} and clear the scan_flags @var{clear_flags}. +The following flags can be set using this interface: + +@table @samp + +@item EXT2_SF_SKIP_MISSING_ITABLE +When a block group is missing an inode table, skip it. If this flag is +not set @code{ext2fs_get_next_inode} will return the error +EXT2_ET_MISSING_INODE_TABLE. + +@end table + +@end deftypefun + +@c ---------------------------------------------------------------------- + +@node Iterating over blocks in an inode, Inode Convenience Functions, Iterating over inodes in a filesystem, Inode Functions +@comment node-name, next, previous, up +@subsection Iterating over blocks in an inode + +@deftypefun errcode_t ext2fs_block_iterate (ext2_filsys @var{fs}, ino_t @var{ino}, int @var{flags}, char *block_buf, int (*func)(ext2_filsys @var{fs}, blk_t *@var{blocknr}, int @var{blockcnt}, void *@var{private}), void *@var{private}) +@end deftypefun + +@deftypefun errcode_t ext2fs_block_iterate2 (ext2_filsys @var{fs}, ino_t @var{ino}, int @var{flags}, char *@var{block}_buf, int (*func)(ext2_filsys @var{fs}, blk_t *@var{blocknr}, int @var{blockcnt}, blk_t @var{ref_blk}, int @var{ref_offset}, void *@var{private}), void *@var{private}) +@end deftypefun + +@c ---------------------------------------------------------------------- + +@node Inode Convenience Functions, , Iterating over blocks in an inode, Inode Functions +@comment node-name, next, previous, up +@subsection Convenience functions for Inodes + +@deftypefun errcode_t ext2fs_get_blocks (ext2_filsys @var{fs}, ino_t @var{ino}, blk_t *@var{blocks}) +@end deftypefun + +@deftypefun errcode_t ext2fs_check_directory (ext2_filsys @var{fs}, ino_t @var{ino}) +@end deftypefun + +@c ---------------------------------------------------------------------- + +@node Directory functions, Bitmap Functions, Inode Functions, EXT2FS Library Functions +@comment node-name, next, previous, up +@section Directory functions + +@menu +* Directory block functions:: +* Iterating over a directory:: +* Creating and expanding directories:: +* Creating and removing directory entries:: +* Looking up filenames:: +* Translating inode numbers to filenames:: +@end menu + +@c ---------------------------------------------------------------------- + +@node Directory block functions, Iterating over a directory, Directory functions, Directory functions +@comment node-name, next, previous, up +@subsection Directory block functions + +@deftypefun errcode_t ext2fs_read_dir_block (ext2_filsys @var{fs}, blk_t @var{block}, void *@var{buf}) +@end deftypefun + +@deftypefun errcode_t ext2fs_write_dir_block (ext2_filsys @var{fs}, blk_t @var{block}, void *@var{buf}) +@end deftypefun + +@deftypefun errcode_t ext2fs_new_dir_block (ext2_filsys @var{fs}, ino_t @var{dir}_ino, ino_t @var{parent_ino}, char **@var{block}) +@end deftypefun + +@c ---------------------------------------------------------------------- + +@node Iterating over a directory, Creating and expanding directories, Directory block functions, Directory functions +@comment node-name, next, previous, up +@subsection Iterating over a directory + +@deftypefun errcode_t ext2fs_dir_iterate (ext2_filsys @var{fs}, ino_t @var{dir}, int @var{flags}, char *@var{block_buf}, int (*@var{func})(struct ext2_dir_entry *@var{dirent}, int @var{offset}, int @var{blocksize}, char *@var{buf}, void *@var{private}), void *@var{private}) +@end deftypefun + +@c ---------------------------------------------------------------------- + +@node Creating and expanding directories, Creating and removing directory entries, Iterating over a directory, Directory functions +@comment node-name, next, previous, up +@subsection Creating and expanding directories + +@deftypefun errcode_t ext2fs_mkdir (ext2_filsys @var{fs}, ino_t @var{parent}, ino_t @var{inum}, const char *@var{name}) +@end deftypefun + +@deftypefun errcode_t ext2fs_expand_dir (ext2_filsys @var{fs}, ino_t @var{dir}) +@end deftypefun + +@c ---------------------------------------------------------------------- + +@node Creating and removing directory entries, Looking up filenames, Creating and expanding directories, Directory functions +@comment node-name, next, previous, up +@subsection Creating and removing directory entries + +@deftypefun errcode_t ext2fs_link (ext2_filsys @var{fs}, ino_t @var{dir}, const char *@var{name}, ino_t @var{ino}, int flags) +@end deftypefun + +@deftypefun errcode_t ext2fs_unlink (ext2_filsys @var{fs}, ino_t @var{dir}, const char *@var{name}, ino_t @var{ino}, int @var{flags}) +@end deftypefun + +@c ---------------------------------------------------------------------- + +@node Looking up filenames, Translating inode numbers to filenames, Creating and removing directory entries, Directory functions +@comment node-name, next, previous, up +@subsection Looking up filenames + +@deftypefun errcode_t ext2fs_lookup (ext2_filsys @var{fs}, ino_t @var{dir}, const char *@var{name}, int @var{namelen}, char *@var{buf}, ino_t *@var{inode}) +@end deftypefun + +@deftypefun errcode_t ext2fs_namei (ext2_filsys @var{fs}, ino_t @var{root}, ino_t @var{cwd}, const char *@var{name}, ino_t *@var{inode}) +@end deftypefun + +@deftypefun errcode_t ext2fs_namei_follow (ext2_filsys @var{fs}, ino_t @var{root}, ino_t @var{cwd}, const char *@var{name}, ino_t *@var{inode}) +@end deftypefun + +@deftypefun errcode_t ext2fs_follow_link (ext2_filsys @var{fs}, ino_t @var{root}, ino_t @var{cwd}, ino_t @var{inode}, ino_t *@var{res}_inode) +@end deftypefun + +@c ---------------------------------------------------------------------- + +@node Translating inode numbers to filenames, , Looking up filenames, Directory functions +@comment node-name, next, previous, up +@subsection Translating inode numbers to filenames + +@deftypefun errcode_t ext2fs_get_pathname (ext2_filsys @var{fs}, ino_t @var{dir}, ino_t @var{ino}, char **@var{name}) +@end deftypefun + + +@c ---------------------------------------------------------------------- + +@node Bitmap Functions, Badblocks list management, Directory functions, EXT2FS Library Functions +@comment node-name, next, previous, up +@section Bitmap Functions + +@menu +* Reading and Writing Bitmaps:: +* Allocating Bitmaps:: +* Free bitmaps:: +* Bitmap Operations:: +* Comparing bitmaps:: +* Modifying Bitmaps:: +* Resizing Bitmaps:: +* Clearing Bitmaps:: +@end menu + +@c ---------------------------------------------------------------------- + +@node Reading and Writing Bitmaps, Allocating Bitmaps, Bitmap Functions, Bitmap Functions +@comment node-name, next, previous, up +@subsection Reading and Writing Bitmaps + +@deftypefun errcode_t ext2fs_write_inode_bitmap (ext2_filsys @var{fs}) +@end deftypefun + +@deftypefun errcode_t ext2fs_write_block_bitmap (ext2_filsys @var{fs}) +@end deftypefun + +@deftypefun errcode_t ext2fs_read_inode_bitmap (ext2_filsys @var{fs}) +@end deftypefun + +@deftypefun errcode_t ext2fs_read_block_bitmap (ext2_filsys @var{fs}) +@end deftypefun + +@deftypefun errcode_t ext2fs_read_bitmaps (ext2_filsys @var{fs}) +@end deftypefun + +@deftypefun errcode_t ext2fs_write_bitmaps (ext2_filsys @var{fs}) +@end deftypefun + +@c ---------------------------------------------------------------------- + +@node Allocating Bitmaps, Free bitmaps, Reading and Writing Bitmaps, Bitmap Functions +@comment node-name, next, previous, up +@subsection Allocating Bitmaps + +@deftypefun errcode_t ext2fs_allocate_generic_bitmap (__u32 @var{start}, __u32 @var{end}, _u32 @var{real_end}, const char *@var{descr}, ext2fs_generic_bitmap *@var{ret}) +@end deftypefun + +@deftypefun errcode_t ext2fs_allocate_block_bitmap (ext2_filsys @var{fs}, const char *@var{descr}, ext2fs_block_bitmap *@var{ret}) +@end deftypefun + +@deftypefun errcode_t ext2fs_allocate_inode_bitmap (ext2_filsys @var{fs}, const char *@var{descr}, ext2fs_inode_bitmap *@var{ret}) +@end deftypefun + +@c ---------------------------------------------------------------------- + +@node Free bitmaps, Bitmap Operations, Allocating Bitmaps, Bitmap Functions +@comment node-name, next, previous, up +@subsection Freeing bitmaps + + +@deftypefun void ext2fs_free_generic_bitmap (ext2fs_inode_bitmap @var{bitmap}) +@end deftypefun + +@deftypefun void ext2fs_free_block_bitmap (ext2fs_block_bitmap @var{bitmap}) +@end deftypefun + +@deftypefun void ext2fs_free_inode_bitmap (ext2fs_inode_bitmap @var{bitmap}) +@end deftypefun + + +@c ---------------------------------------------------------------------- + +@node Bitmap Operations, Comparing bitmaps, Free bitmaps, Bitmap Functions +@comment node-name, next, previous, up +@subsection Bitmap Operations + +@deftypefun void ext2fs_mark_block_bitmap (ext2fs_block_bitmap @var{bitmap}, blk_t @var{block}) + +@deftypefunx void ext2fs_unmark_block_bitmap (ext2fs_block_bitmap @var{bitmap}, blk_t @var{block}) + +@deftypefunx int ext2fs_test_block_bitmap (ext2fs_block_bitmap @var{bitmap}, blk_t @var{block}) + +These functions set, clear, and test bits in a block bitmap @var{bitmap}. +@end deftypefun + + +@deftypefun void ext2fs_mark_inode_bitmap (ext2fs_inode_bitmap @var{bitmap}, ino_t @var{inode}) + +@deftypefunx void ext2fs_unmark_inode_bitmap (ext2fs_inode_bitmap @var{bitmap}, ino_t @var{inode}) + +@deftypefunx int ext2fs_test_inode_bitmap (ext2fs_inode_bitmap @var{bitmap}, ino_t @var{inode}) + +These functions set, clear, and test bits in an inode bitmap @var{bitmap}. +@end deftypefun + +@deftypefun void ext2fs_fast_mark_block_bitmap (ext2fs_block_bitmap @var{bitmap}, blk_t @var{block}) + +@deftypefunx void ext2fs_fast_unmark_block_bitmap (ext2fs_block_bitmap @var{bitmap}, blk_t @var{block}) + +@deftypefunx int ext2fs_fast_test_block_bitmap (ext2fs_block_bitmap @var{bitmap}, blk_t @var{block}) + +@deftypefunx void ext2fs_fast_mark_inode_bitmap (ext2fs_inode_bitmap @var{bitmap}, ino_t @var{inode}) + +@deftypefunx void ext2fs_fast_unmark_inode_bitmap (ext2fs_inode_bitmap @var{bitmap}, ino_t @var{inode}) + +@deftypefunx int ext2fs_fast_test_inode_bitmap (ext2fs_inode_bitmap @var{bitmap}, ino_t @var{inode}) + +These ``fast'' functions are like their normal counterparts; however, +they are implemented as inline functions and do not perform bounds +checks on the inode number or block number; they are assumed to be +correct. They should only be used in speed-critical applications, where +the inode or block number has already been validated by other means. +@end deftypefun + +@deftypefun blk_t ext2fs_get_block_bitmap_start (ext2fs_block_bitmap @var{bitmap}) +@deftypefunx ino_t ext2fs_get_inode_bitmap_start (ext2fs_inode_bitmap @var{bitmap}) +Return the first inode or block which is stored in the bitmap. +@end deftypefun + +@deftypefun blk_t ext2fs_get_block_bitmap_end (ext2fs_block_bitmap @var{bitmap}) +@deftypefunx ino_t ext2fs_get_inode_bitmap_end (ext2fs_inode_bitmap @var{bitmap}) + +Return the first inode or block which is stored in the bitmap. +@end deftypefun + + +@c ---------------------------------------------------------------------- + +@node Comparing bitmaps, Modifying Bitmaps, Bitmap Operations, Bitmap Functions +@comment node-name, next, previous, up +@subsection Comparing bitmaps + +@deftypefun errcode_t ext2fs_compare_block_bitmap (ext2fs_block_bitmap @var{bm1}, ext2fs_block_bitmap @var{bm2}) +@end deftypefun + +@deftypefun errcode_t ext2fs_compare_inode_bitmap (ext2fs_inode_bitmap @var{bm1}, ext2fs_inode_bitmap @var{bm2}) +@end deftypefun + + +@c ---------------------------------------------------------------------- + +@node Modifying Bitmaps, Resizing Bitmaps, Comparing bitmaps, Bitmap Functions +@comment node-name, next, previous, up +@subsection Modifying Bitmaps + +@deftypefun errcode_t ext2fs_fudge_inode_bitmap_end (ext2fs_inode_bitmap @var{bitmap}, ino_t @var{end}, ino_t *@var{oend}) +@end deftypefun + +@deftypefun errcode_t ext2fs_fudge_block_bitmap_end (ext2fs_block_bitmap @var{bitmap}, blk_t @var{end}, blk_t *@var{oend}) +@end deftypefun + +@c ---------------------------------------------------------------------- + +@node Resizing Bitmaps, Clearing Bitmaps, Modifying Bitmaps, Bitmap Functions +@comment node-name, next, previous, up +@subsection Resizing Bitmaps + +@deftypefun errcode_t ext2fs_resize_generic_bitmap (__u32 @var{new_end}, __u32 @var{new_real_end}, ext2fs_generic_bitmap @var{bmap}) +@end deftypefun + +@deftypefun errcode_t ext2fs_resize_inode_bitmap (__u32 @var{new_end}, __u32 @var{new_real_end}, ext2fs_inode_bitmap @var{bmap}) +@end deftypefun + +@deftypefun errcode_t ext2fs_resize_block_bitmap (__u32 @var{new_end}, __u32 @var{new_real_end}, ext2fs_block_bitmap @var{bmap}) +@end deftypefun + + +@c ---------------------------------------------------------------------- + +@node Clearing Bitmaps, , Resizing Bitmaps, Bitmap Functions +@comment node-name, next, previous, up +@subsection Clearing Bitmaps + +@deftypefun void ext2fs_clear_inode_bitmap (ext2fs_inode_bitmap @var{bitmap}) +@end deftypefun + +@deftypefun void ext2fs_clear_block_bitmap (ext2fs_block_bitmap @var{bitmap}) +@end deftypefun + + +@c ---------------------------------------------------------------------- + +@node Badblocks list management, Directory-block list management, Bitmap Functions, EXT2FS Library Functions +@comment node-name, next, previous, up +@section Badblocks list management + + +@deftypefun errcode_t ext2fs_badblocks_list_create (ext2_badblocks_list *@var{ret}, int @var{size}) +@end deftypefun + +@deftypefun void ext2fs_badblocks_list_free (ext2_badblocks_list @var{bb}) +@end deftypefun + +@deftypefun errcode_t ext2fs_badblocks_list_add (ext2_badblocks_list @var{bb}, blk_t @var{blk}) +@end deftypefun + +@deftypefun int ext2fs_badblocks_list_test (ext2_badblocks_list @var{bb}, blk_t @var{blk}) +@end deftypefun + +@deftypefun errcode_t ext2fs_badblocks_list_iterate_begin (ext2_badblocks_list @var{bb}, ext2_badblocks_iterate *@var{ret}) +@end deftypefun + +@deftypefun int ext2fs_badblocks_list_iterate (ext2_badblocks_iterate iter, blk_t *@var{blk}) +@end deftypefun + +@deftypefun void ext2fs_badblocks_list_iterate_end (ext2_badblocks_iterate @var{iter}) +@end deftypefun + +@deftypefun errcode_t ext2fs_update_bb_inode (ext2_filsys @var{fs}, ext2_badblocks_list @var{bb_list}) +@end deftypefun + +@deftypefun errcode_t ext2fs_read_bb_inode (ext2_filsys @var{fs}, ext2_badblocks_list *@var{bb_list}) +@end deftypefun + +@deftypefun errcode_t ext2fs_read_bb_FILE (ext2_filsys @var{fs}, FILE *f, ext2_badblocks_list *@var{bb_list}, void (*invalid)(ext2_filsys @var{fs}, blk_t @var{blk})) +@end deftypefun + + +@c ---------------------------------------------------------------------- + +@node Directory-block list management, Byte-swapping functions, Badblocks list management, EXT2FS Library Functions +@comment node-name, next, previous, up +@section Directory-block list management + +@deftypefun errcode_t ext2fs_init_dblist (ext2_filsys @var{fs}, ext2_dblist *@var{ret_dblist}) +@end deftypefun + +@deftypefun void ext2fs_free_dblist (ext2_dblist @var{dblist}) +@end deftypefun + +@deftypefun errcode_t ext2fs_add_dir_block (ext2_dblist dblist, ino_t @var{ino}, blk_t @var{blk}, int @var{blockcnt}) +@end deftypefun + +@deftypefun errcode_t ext2fs_dblist_iterate (ext2_dblist dblist, int (*func)(ext2_filsys @var{fs}, struct ext2_db_entry *@var{db_info}, void *@var{private}), void *@var{private}) +@end deftypefun + +@deftypefun errcode_t ext2fs_dblist_dir_iterate +(ext2_dblist dblist, int flags, char *@var{block_buf}, int (*func)(ino_t @var{dir}, int @var{entry}, struct ext2_dir_entry *@var{dirent}, int @var{offset}, int @var{blocksize}, char *@var{buf}, void *@var{private}), void *@var{private}) +@end deftypefun + +@c ---------------------------------------------------------------------- + +@node Byte-swapping functions, Other functions, Directory-block list management, EXT2FS Library Functions +@comment node-name, next, previous, up +@section Byte-swapping functions + +@deftypefun void ext2fs_swap_super (struct ext2_super_block * @var{super}) +@end deftypefun + +@deftypefun void ext2fs_swap_group_desc (struct ext2_group_desc *@var{gdp}) +@end deftypefun + +@deftypefun void ext2fs_swap_inode (ext2_filsys @var{fs}, struct ext2_inode *@var{to}, struct ext2_inode *@var{from}, int @var{hostorder}) +@end deftypefun + +@deftypefun int ext2fs_native_flag (void) +@end deftypefun + + +@c ---------------------------------------------------------------------- + +@node Other functions, , Byte-swapping functions, EXT2FS Library Functions +@comment node-name, next, previous, up +@section Other functions + +/* alloc.c */ +@deftypefun errcode_t ext2fs_new_inode (ext2_filsys @var{fs}, ino_t @var{dir}, int @var{mode}, ext2fs_inode_bitmap @var{map}, ino_t *@var{ret}) +@end deftypefun + +@deftypefun errcode_t ext2fs_new_block (ext2_filsys @var{fs}, blk_t @var{goal}, ext2fs_block_bitmap @var{map}, blk_t *@var{ret}) +@end deftypefun + +@deftypefun errcode_t ext2fs_get_free_blocks (ext2_filsys @var{fs}, blk_t @var{start}, blk_t @var{finish}, int @var{num}, ext2fs_block_bitmap @var{map}, blk_t *@var{ret}) +@end deftypefun + +/* check_desc.c */ +@deftypefun errcode_t ext2fs_check_desc (ext2_filsys @var{fs}) +@end deftypefun + +@deftypefun errcode_t ext2_get_num_dirs (ext2_filsys @var{fs}, ino_t *@var{ret_num_dirs}) +@end deftypefun + + +/* getsize.c */ +@deftypefun errcode_t ext2fs_get_device_size (const char *@var{file}, int @var{blocksize}, blk_t *@var{retblocks}) +@end deftypefun + + +/* ismounted.c */ +@deftypefun errcode_t ext2fs_check_if_mounted (const char *@var{file}, int *@var{mount_flags}) +@end deftypefun + + +/* valid_blk.c */ +@deftypefun int ext2_inode_has_valid_blocks (struct ext2_inode *@var{inode}) +@end deftypefun + + +/* inline functions */ +@deftypefun int ext2fs_group_of_blk (ext2_filsys @var{fs}, blk_t @var{blk}) +@end deftypefun + +@deftypefun int ext2fs_group_of_ino (ext2_filsys @var{fs}, ino_t @var{ino}) +@end deftypefun + + +@c ---------------------------------------------------------------------- + +@node Concept Index, Function Index, EXT2FS Library Functions, Top +@comment node-name, next, previous, up +@unnumbered Concept Index +@printindex cp + +@c ---------------------------------------------------------------------- + +@node Function Index, , Concept Index, Top +@comment node-name, next, previous, up +@unnumbered Function and Type Index +@printindex fn + + +@contents +@bye |