Version 0.92 (2002-03-29) 
 | 
========== 
 | 
* Minor cleanup. Ran Lindent on the sources. 
 | 
  
 | 
Version 0.92 (2002-03-27) 
 | 
========== 
 | 
* Fixed module makefile problem. It was not compiling all the correct  
 | 
    source files! 
 | 
* Removed duplicated function definition 
 | 
* Fixed potential null pointer dereference when reporting an error 
 | 
  
 | 
Version 0.91 (2002-03-26) 
 | 
========== 
 | 
* Oy! Fixed stupid bug that would cause an unresolved symbol error. 
 | 
    Thanks to Laszlo Boszormenyi for pointing this out to me. 
 | 
  
 | 
Version 0.9 (2002-03-14) 
 | 
========== 
 | 
* Added Sergey S. Kostyliov's patch to eliminate memcpy() overhead 
 | 
    from b+tree operations. Changes the befs_read_datastream() interface. 
 | 
  
 | 
* Segregated the functions that interface directly with the linux  vfs  
 | 
    interface into their own file called linuxvfs.c. [WD] 
 | 
  
 | 
Version 0.64 (2002-02-07) 
 | 
========== 
 | 
* Did the string comparison really right this time (btree.c) [WD] 
 | 
  
 | 
* Fixed up some places where I assumed that a long int could hold 
 | 
    a pointer value. (btree.c) [WD] 
 | 
  
 | 
* Andrew Farnham <andrewfarnham@uq.net.au> pointed out that the module 
 | 
    wouldn't work on older (<2.4.10) kernels due to an unresolved symbol. 
 | 
    This is bad, since 2.4.9 is still the current RedHat kernel. I added 
 | 
    a workaround for this problem (compatibility.h) [WD] 
 | 
  
 | 
* Sergey S. Kostyliov made befs_find_key() use a binary search to find  
 | 
    keys within btree nodes, rather than the linear search we were using  
 | 
    before. (btree.c) [Sergey S. Kostyliov <rathamahata@php4.ru>] 
 | 
  
 | 
* Made a debian package of the source for use with kernel-package. [WD] 
 | 
  
 | 
  
 | 
Version 0.63 (2002-01-31) 
 | 
========== 
 | 
* Fixed bug in befs_find_brun_indirect() that would result in the wrong 
 | 
    block being read. It was introduced when adding byteswapping in  
 | 
    0.61. (datastream.c) [WD] 
 | 
  
 | 
* Fixed a longstanding bug in befs_find_key() that would result in it  
 | 
    finding the first key that is a substring of the string it is searching 
 | 
    for. For example, this would cause files in the same directory with  
 | 
    names like file1 and file2 to mysteriously be duplicates of each other  
 | 
    (because they have the same inode number). Many thanks to Pavel Roskin  
 | 
    for reporting this serious bug!!! 
 | 
    (btree.c) [WD] 
 | 
  
 | 
* Added support for long symlinks, after Axel Dorfler explained up how  
 | 
    they work. I had forgotten all about them. (inode.c, symlink.c) [WD] 
 | 
  
 | 
* Documentation improvements in source. [WD] 
 | 
  
 | 
* Makefile fix for independent module when CONFIG_MODVERSION is set in  
 | 
    kernel config [Pavel Roskin <proski@gnu.org>] 
 | 
  
 | 
* Compile warning fix for namei.c. [Sergey S. Kostyliov <rathamahata@php4.ru>] 
 | 
  
 | 
  
 | 
Version 0.62 
 | 
========== 
 | 
* Fixed makefile for module install [WD] 
 | 
  
 | 
  
 | 
Version 0.61 (2002-01-20) 
 | 
========== 
 | 
* Made functions in endian.h to do the correct byteswapping, no matter 
 | 
    the arch. [WD] 
 | 
  
 | 
* Abbandoned silly checks for a NULL superblock pointer in debug.c. [WD] 
 | 
  
 | 
* Misc code cleanups. Also cleanup of this changelog file. [WD] 
 | 
  
 | 
* Added byteswapping to all metadata reads from disk. 
 | 
    Uses the functions from endian.h [WD] 
 | 
  
 | 
* Remove the typedef of struct super_block to vfs_sb, as it offended 
 | 
    certain peoples' aesthetic sense. [WD] 
 | 
  
 | 
* Ditto with the befs_read_block() interface. [WD] 
 | 
  
 | 
  
 | 
Version 0.6 (2001-12-15) 
 | 
========== 
 | 
* Cleanup of NLS functions (util.c) [WD] 
 | 
  
 | 
* Make directory lookup/read use the NLS if an iocharset is provided. [WD] 
 | 
  
 | 
* Fixed stupid bug where specifying the uid or gid mount options as '0'  
 | 
    would result in the filesystem using the on-disk uid and gid. [WD] 
 | 
  
 | 
* Added mount option to control debug printing.  
 | 
    The option is, simply enough, 'debug'.  
 | 
    (super.c, debug.c) [WD] 
 | 
  
 | 
* Removed notion of btree handle from btree.c. It was unnecessary, as the 
 | 
    linux VFS doesn't allow us to keep any state between calls. Updated  
 | 
    dir.c, namei.c befs_fs.h to account for it. [WD] 
 | 
  
 | 
* Improved handleing of overflow nodes when listing directories.  
 | 
    Now works for overflow nodes hanging off of nodes other than the root  
 | 
    node. This is the cleaner solution to Brent Miszalaski's problem. [WD] 
 | 
  
 | 
* Added new debug/warning/error print functions in debug.c.  
 | 
    More flexible. Will soon be controllable at mount time  
 | 
    (see TODO). [WD] 
 | 
  
 | 
* Rewrote datastream position lookups. 
 | 
    (datastream.c) [WD] 
 | 
  
 | 
* Moved the TODO list to its own file. 
 | 
  
 | 
  
 | 
Version 0.50 (2001-11-13) 
 | 
========== 
 | 
* Added workaround for mis-understanding of the nature of the b+trees used  
 | 
    in directories. A cleaner solution will come after I've thought about it  
 | 
    for a while. Thanks to Brent Miszalaski for finding and reporting this bug.  
 | 
    (btree.c) [WD] 
 | 
  
 | 
* Minor cleanups 
 | 
  
 | 
* Added test for "impossible" condition of empty internal nodes in  
 | 
    seekleaf() in btree.c [WD] 
 | 
  
 | 
* Implemented the abstracted read_block() in io.c [WD] 
 | 
  
 | 
* Cleaned up the inode validation in inode.c [WD] 
 | 
  
 | 
* Anton Altaparmakov figured out (by asking Linus :) ) what was causing the  
 | 
     hanging disk io problem. It turns out you need to have the sync_pages  
 | 
    callback defined in your address_space_ops, even if it just uses the  
 | 
    default linux-supplied implementation. Fixed. Works now. 
 | 
    (file.c) [WD] 
 | 
  
 | 
* Anton Altaparmakov and Christoph Hellwig alerted me to the fact that  
 | 
    filesystem code should be using GFP_NOFS instead of GFP_KERNEL as the  
 | 
    priority parameter to kmalloc(). Fixed.  
 | 
    (datastream.c, btree.c super.c inode.c) [WD] 
 | 
  
 | 
* Anton also told me that the blocksize is not allowed to be larger than  
 | 
    the page size in linux, which is 4k i386. Oops. Added a test for  
 | 
    (blocksize > PAGE_SIZE), and refuse to mount in that case. What this  
 | 
    practically means is that 8k blocksize volumes won't work without a major 
 | 
    restructuring of the driver (or an alpha or other 64bit hardware). [WD] 
 | 
  
 | 
* Cleaned up the befs_count_blocks() function. Much smarter now.  
 | 
    And somewhat smaller too. [WD] 
 | 
  
 | 
* Made inode allocations use a slab cache  
 | 
    (super.c inode.c) [WD] 
 | 
  
 | 
* Moved the freeing of the private inode section from put_inode() to  
 | 
    clear_inode(). This fixes a potential free twice type bug. Put_inode()  
 | 
    can be called multiple times for each inode struct. [WD] 
 | 
  
 | 
* Converted all non vfs-callback functions to use befs_sb_info as the  
 | 
    superblock type, rather than struct super_block. This is for  
 | 
    portablity. [WD] 
 | 
  
 | 
* Fixed a couple of compile warnings due to use of malloc.h, when slab.h  
 | 
    is the new way. (inode.c, super.c) [WD] 
 | 
  
 | 
* Fixed erronous includes of linux/befs_fs_i.h and linux/befs_fs_sb.h  
 | 
    in inode.c [WD] 
 | 
  
 | 
Version 0.45 (2001-10-29) 
 | 
========== 
 | 
* Added functions to get the private superblock and inode structures from  
 | 
    their enclosing public structures. Switched all references to the  
 | 
    private portions to use them. (many files) [WD] 
 | 
  
 | 
* Made read_super and read_inode allocate the private portions of those  
 | 
    structures into the generic pointer fields of the public structures  
 | 
    with kmalloc(). put_super and put_inode free them. This allows us not  
 | 
    to have to touch the definitions of the public structures in  
 | 
    include/linux/fs.h. Also, befs_inode_info is huge (because of the  
 | 
    symlink string). (super.c, inode.c, befs_fs.h) [WD] 
 | 
  
 | 
* Fixed a thinko that was corrupting file reads after the first block_run  
 | 
    is done being read. (datastream.c) [WD] 
 | 
  
 | 
* Removed fsync() hooks, since a read-only filesystem doesn't need them.  
 | 
    [Christoph Hellwig]. 
 | 
  
 | 
* Fixed befs_readlink() (symlink.c) [Christoph Hellwig]. 
 | 
  
 | 
* Removed all the Read-Write stuff. I'll redo it when it is time to add  
 | 
    write support (various files) [WD]. 
 | 
  
 | 
* Removed prototypes for functions who's definitions have been removed  
 | 
    (befs_fs.h) [WD]. 
 | 
  
 | 
  
 | 
Version 0.4 (2001-10-28) 
 | 
========== 
 | 
* Made it an option to use the old non-pagecache befs_file_read() for  
 | 
    testing purposes. (fs/Config.in) 
 | 
  
 | 
* Fixed unused variable warnings when compiling without debugging. 
 | 
  
 | 
* Fixed a bug where the inode and super_block didn't get their blockbits  
 | 
    fields set (inode.c and super.c).  
 | 
  
 | 
* Release patch version 11. AKA befs-driver version 0.4. 
 | 
  
 | 
* Thats right. New versioning scheme.  
 | 
    I've done some serious testing on it now (on my box anyhow), and it  
 | 
    seems stable and not outragously slow. Existing features are more-or-less  
 | 
    correct (see TODO list). But it isn't 1.0 yet. I think 0.4 gives me some  
 | 
    headroom before the big 1.0. 
 | 
  
 | 
  
 | 
2001-10-26 
 | 
========== 
 | 
* Fixed date format in this file. Was I smoking crack? 
 | 
  
 | 
* Removed old datastream code from file.c, since it is nolonger used. 
 | 
  
 | 
* Generic_read_file() is now used to read regular file data.  
 | 
    It doesn't chew up the buffer cache (it does page io instead), and seems  
 | 
    to be about as fast (even though it has to look up each file block  
 | 
    indivdualy). And it knows about doing readahead, which is a major plus.  
 | 
    So it does i/o in much larger chunks. It is the correct linux way. It  
 | 
    uses befs_get_block() by way of befs_readpage() to find the disk offsets  
 | 
    of blocks, which in turn calls befs_fpos2brun() in datastream.c to do  
 | 
    the hard work of finding the disk block number. 
 | 
  
 | 
* Changed method of checking for a dirty filesystem in befs_read_super  
 | 
    (super.c). Now we check to see if log_start and log_end differ. If so,  
 | 
    the journal needs to be replayed, and the filesystem cannot be mounted. 
 | 
  
 | 
* Fixed an extra instance of MOD_DEC_USE_COUNT in super.c 
 | 
  
 | 
* Fixed a problem with reading the superblock on devices with large sector  
 | 
    sizes (such as cdroms) on linux 2.4.10 and up. 
 | 
  
 | 
2001-10-24 
 | 
========== 
 | 
* Fix nasty bug in converting block numbers to struct befs_inode_addr.  
 | 
    Subtle, because the old version was only sometimes wrong.  
 | 
    Probably responsible for lots of problems. (inode.c) 
 | 
  
 | 
* Fix bug with reading an empty directory. (btree.c and dir.c) 
 | 
  
 | 
* This one looks good. Release patch version 10 
 | 
  
 | 
2001-10-23 
 | 
========== 
 | 
* Added btree searching function. 
 | 
  
 | 
* Use befs_btree_find in befs_lookup (namei.c) 
 | 
  
 | 
* Additional comments in btree.c 
 | 
  
 | 
2001-10-22 
 | 
========== 
 | 
* Added B+tree reading functions (in btree.c).  
 | 
    Made befs_readdir() use them them instead of the cruft in index.c. 
 | 
  
 | 
2001-09-11 
 | 
========== 
 | 
* Converted befs_read_file() to use the new datastream code. 
 | 
  
 | 
* Finally updated the README file. 
 | 
  
 | 
* Added many comments. 
 | 
  
 | 
* Posted version 6 
 | 
  
 | 
* Removed byte-order conversion code.  
 | 
    I have no intention of supporting it, and it was very ugly.  
 | 
    Flow control with #ifdef (ugh). Maybe I'll redo it once  
 | 
    native byteorder works 100%. 
 | 
  
 | 
2001-09-10 
 | 
========== 
 | 
* Finished implementing read_datastream() 
 | 
  
 | 
* made befs_read_brun() more general 
 | 
    Supports an offset to start at and a max bytes to read 
 | 
    Added a wrapper function to give the old call 
 | 
  
 | 
2001-09-30 
 | 
========== 
 | 
* Discovered that the datastream handleing code in file.c is quite deficient  
 | 
    in several respects. For one thing, it doesn't deal with indirect blocks 
 | 
  
 | 
* Rewrote datastream handleing. 
 | 
  
 | 
* Created io.c, for io related functions. 
 | 
    Previously, the befs_bread() funtions lived in file.c 
 | 
    Created the befs_read_brun() function. 
 | 
  
 | 
  
 | 
2001-09-07 
 | 
========== 
 | 
* Made a function to actually count the number of fs blocks used by a file. 
 | 
    And helper functions. 
 | 
    (fs/befs/inode.c) 
 | 
  
 | 
2001-09-05 
 | 
========== 
 | 
* Fixed a misunderstanding of the inode fields.  
 | 
    This fixed the problmem with wrong file sizes from du and others. 
 | 
    The i_blocks field of the inode struct is not the number of blocks for the 
 | 
    inode, it is the number of blocks for the file.    Also, i_blksize is not 
 | 
    necessarily the size of the inode, although in  practice it works out. 
 | 
    Changed to blocksize of filesystem. 
 | 
    (fs/befs/inode.c) 
 | 
  
 | 
* Permanently removed code that had been provisionally ifdefed out of befs_fs.h 
 | 
  
 | 
* Since we don't support access time, make that field zero, instead of  
 | 
    copying m_time. 
 | 
    (fs/befs/inode.c) 
 | 
  
 | 
* Added sanity check for inode reading 
 | 
    Make sure inode we got was the one we asked for.  
 | 
    (fs/befs/inode.c) 
 | 
  
 | 
* Code cleanup 
 | 
    Local pointers to commonly used structures in inode.c. 
 | 
    Got rid of abominations befs_iaddr2inode() and befs_inode2ino().  
 | 
    Replaced with single function iaddr2blockno(). 
 | 
    (fs/befs/super.c) (fs/befs/inode.c) 
 | 
  
 | 
2001-09-01 
 | 
========== 
 | 
* Fixed the problem with statfs where it would always claim the disk was  
 | 
    half full, due to improper understanding of the statfs fields. 
 | 
    (fs/befs/super.c) 
 | 
  
 | 
* Posted verion 4 of the patch 
 | 
  
 | 
2001-09-01 
 | 
========== 
 | 
* Changed the macros in befs_fs.h to inline functions. 
 | 
    More readable. Typesafe. Better 
 | 
    (include/linux/befs_fs.h) 
 | 
  
 | 
* Moved type definitions from befs_fs.h to a new file, befs_fs_types.h  
 | 
    Because befs_fs_i.h and befs_fs_sb.h were including befs_fs.h for the  
 | 
    typedefs, and they are inlcuded in <linux/fs.h>, which has definitions  
 | 
    that I want the inline functions in befs_fs.h to be able to see. Nasty 
 | 
    circularity. 
 | 
    (include/linux/befs_fs.h) 
 | 
  
 | 
2001-08-30 
 | 
========== 
 | 
* Cleaned up some wording. 
 | 
  
 | 
* Added additional consitency checks on mount 
 | 
    Check block_size agrees with block_shift 
 | 
    Check flags == BEFS_CLEAN 
 | 
    (fs/befs/super.c) 
 | 
  
 | 
* Tell the kernel to only mount befs read-only.  
 | 
    By setting the SB_RDONLY flag in befs_read_super(). 
 | 
    Not that it was possible to write before. But now the kernel won't even try. 
 | 
    (fs/befs/super.c) 
 | 
  
 | 
* Got rid of kernel warning on mount. 
 | 
    The kernel doesn't like it if you call set_blocksize() on a device when  
 | 
    you have some of its blocks open. Moved the second set_blocksize() to the 
 | 
    very end of befs_read_super(), after we are done with the disk superblock. 
 | 
    (fs/befs/super.c) 
 | 
     
 | 
* Fixed wrong number of args bug in befs_dump_inode 
 | 
    (fs/befs/debug.c) 
 | 
  
 | 
* Solved lots of type mismatches in kprint()s 
 | 
    (everwhere) 
 | 
  
 | 
2001-08-27 
 | 
========== 
 | 
* Cleaned up the fs/Config.in entries a bit, now slightly more descriptive. 
 | 
  
 | 
* BeFS depends on NLS, so I made activating BeFS enable the NLS questions 
 | 
    (fs/nls/Config.in) 
 | 
  
 | 
* Added Configure.help entries for CONFIG_BEFS_FS and CONFIG_DEBUG_BEFS 
 | 
    (currently at fs/befs/Kconfig) 
 | 
  
 | 
2001-08-?? 
 | 
========== 
 | 
* Removed superblock locking calls in befs_read_super(). In 2.4, the VFS  
 | 
    hands us a super_block struct that is already locked. 
 | 
  
 | 
2001-08-13 
 | 
========== 
 | 
* Will Dyson <will_dyson@pobox.com> is now attempting to maintain this module 
 | 
    Makoto Kato <m_kato@ga2.so-net.ne.jp> is original author.Daniel Berlin  
 | 
    also did some work on it (fixing it up for the later 2.3.x kernels, IIRC). 
 | 
  
 | 
* Fixed compile errors on 2.4.1 kernel (WD) 
 | 
    Resolve rejected patches 
 | 
    Accommodate changed NLS interface (util.h) 
 | 
    Needed to include <linux/slab.h> in most files 
 | 
    Makefile changes 
 | 
    fs/Config.in changes 
 | 
  
 | 
* Tried to niceify the code using the ext2 fs as a guide 
 | 
    Declare befs_fs_type using the DECLARE_FSTYPE_DEV() macro 
 | 
  
 | 
* Made it a configure option to turn on debugging (fs/Config.in) 
 | 
  
 | 
* Compiles on 2.4.7 
 |