0001 Version 0.92 (2002-03-29)
0002 ==========
0003 * Minor cleanup. Ran Lindent on the sources.
0004
0005 Version 0.92 (2002-03-27)
0006 ==========
0007 * Fixed module makefile problem. It was not compiling all the correct
0008 source files!
0009 * Removed duplicated function definition
0010 * Fixed potential null pointer dereference when reporting an error
0011
0012 Version 0.91 (2002-03-26)
0013 ==========
0014 * Oy! Fixed stupid bug that would cause an unresolved symbol error.
0015 Thanks to Laszlo Boszormenyi for pointing this out to me.
0016
0017 Version 0.9 (2002-03-14)
0018 ==========
0019 * Added Sergey S. Kostyliov's patch to eliminate memcpy() overhead
0020 from b+tree operations. Changes the befs_read_datastream() interface.
0021
0022 * Segregated the functions that interface directly with the linux vfs
0023 interface into their own file called linuxvfs.c. [WD]
0024
0025 Version 0.64 (2002-02-07)
0026 ==========
0027 * Did the string comparison really right this time (btree.c) [WD]
0028
0029 * Fixed up some places where I assumed that a long int could hold
0030 a pointer value. (btree.c) [WD]
0031
0032 * Andrew Farnham <andrewfarnham@uq.net.au> pointed out that the module
0033 wouldn't work on older (<2.4.10) kernels due to an unresolved symbol.
0034 This is bad, since 2.4.9 is still the current RedHat kernel. I added
0035 a workaround for this problem (compatibility.h) [WD]
0036
0037 * Sergey S. Kostyliov made befs_find_key() use a binary search to find
0038 keys within btree nodes, rather than the linear search we were using
0039 before. (btree.c) [Sergey S. Kostyliov <rathamahata@php4.ru>]
0040
0041 * Made a debian package of the source for use with kernel-package. [WD]
0042
0043
0044 Version 0.63 (2002-01-31)
0045 ==========
0046 * Fixed bug in befs_find_brun_indirect() that would result in the wrong
0047 block being read. It was introduced when adding byteswapping in
0048 0.61. (datastream.c) [WD]
0049
0050 * Fixed a longstanding bug in befs_find_key() that would result in it
0051 finding the first key that is a substring of the string it is searching
0052 for. For example, this would cause files in the same directory with
0053 names like file1 and file2 to mysteriously be duplicates of each other
0054 (because they have the same inode number). Many thanks to Pavel Roskin
0055 for reporting this serious bug!!!
0056 (btree.c) [WD]
0057
0058 * Added support for long symlinks, after Axel Dorfler explained up how
0059 they work. I had forgotten all about them. (inode.c, symlink.c) [WD]
0060
0061 * Documentation improvements in source. [WD]
0062
0063 * Makefile fix for independent module when CONFIG_MODVERSION is set in
0064 kernel config [Pavel Roskin <proski@gnu.org>]
0065
0066 * Compile warning fix for namei.c. [Sergey S. Kostyliov <rathamahata@php4.ru>]
0067
0068
0069 Version 0.62
0070 ==========
0071 * Fixed makefile for module install [WD]
0072
0073
0074 Version 0.61 (2002-01-20)
0075 ==========
0076 * Made functions in endian.h to do the correct byteswapping, no matter
0077 the arch. [WD]
0078
0079 * Abbandoned silly checks for a NULL superblock pointer in debug.c. [WD]
0080
0081 * Misc code cleanups. Also cleanup of this changelog file. [WD]
0082
0083 * Added byteswapping to all metadata reads from disk.
0084 Uses the functions from endian.h [WD]
0085
0086 * Remove the typedef of struct super_block to vfs_sb, as it offended
0087 certain peoples' aesthetic sense. [WD]
0088
0089 * Ditto with the befs_read_block() interface. [WD]
0090
0091
0092 Version 0.6 (2001-12-15)
0093 ==========
0094 * Cleanup of NLS functions (util.c) [WD]
0095
0096 * Make directory lookup/read use the NLS if an iocharset is provided. [WD]
0097
0098 * Fixed stupid bug where specifying the uid or gid mount options as '0'
0099 would result in the filesystem using the on-disk uid and gid. [WD]
0100
0101 * Added mount option to control debug printing.
0102 The option is, simply enough, 'debug'.
0103 (super.c, debug.c) [WD]
0104
0105 * Removed notion of btree handle from btree.c. It was unnecessary, as the
0106 linux VFS doesn't allow us to keep any state between calls. Updated
0107 dir.c, namei.c befs_fs.h to account for it. [WD]
0108
0109 * Improved handleing of overflow nodes when listing directories.
0110 Now works for overflow nodes hanging off of nodes other than the root
0111 node. This is the cleaner solution to Brent Miszalaski's problem. [WD]
0112
0113 * Added new debug/warning/error print functions in debug.c.
0114 More flexible. Will soon be controllable at mount time
0115 (see TODO). [WD]
0116
0117 * Rewrote datastream position lookups.
0118 (datastream.c) [WD]
0119
0120 * Moved the TODO list to its own file.
0121
0122
0123 Version 0.50 (2001-11-13)
0124 ==========
0125 * Added workaround for mis-understanding of the nature of the b+trees used
0126 in directories. A cleaner solution will come after I've thought about it
0127 for a while. Thanks to Brent Miszalaski for finding and reporting this bug.
0128 (btree.c) [WD]
0129
0130 * Minor cleanups
0131
0132 * Added test for "impossible" condition of empty internal nodes in
0133 seekleaf() in btree.c [WD]
0134
0135 * Implemented the abstracted read_block() in io.c [WD]
0136
0137 * Cleaned up the inode validation in inode.c [WD]
0138
0139 * Anton Altaparmakov figured out (by asking Linus :) ) what was causing the
0140 hanging disk io problem. It turns out you need to have the sync_pages
0141 callback defined in your address_space_ops, even if it just uses the
0142 default linux-supplied implementation. Fixed. Works now.
0143 (file.c) [WD]
0144
0145 * Anton Altaparmakov and Christoph Hellwig alerted me to the fact that
0146 filesystem code should be using GFP_NOFS instead of GFP_KERNEL as the
0147 priority parameter to kmalloc(). Fixed.
0148 (datastream.c, btree.c super.c inode.c) [WD]
0149
0150 * Anton also told me that the blocksize is not allowed to be larger than
0151 the page size in linux, which is 4k i386. Oops. Added a test for
0152 (blocksize > PAGE_SIZE), and refuse to mount in that case. What this
0153 practically means is that 8k blocksize volumes won't work without a major
0154 restructuring of the driver (or an alpha or other 64bit hardware). [WD]
0155
0156 * Cleaned up the befs_count_blocks() function. Much smarter now.
0157 And somewhat smaller too. [WD]
0158
0159 * Made inode allocations use a slab cache
0160 (super.c inode.c) [WD]
0161
0162 * Moved the freeing of the private inode section from put_inode() to
0163 clear_inode(). This fixes a potential free twice type bug. Put_inode()
0164 can be called multiple times for each inode struct. [WD]
0165
0166 * Converted all non vfs-callback functions to use befs_sb_info as the
0167 superblock type, rather than struct super_block. This is for
0168 portablity. [WD]
0169
0170 * Fixed a couple of compile warnings due to use of malloc.h, when slab.h
0171 is the new way. (inode.c, super.c) [WD]
0172
0173 * Fixed erronous includes of linux/befs_fs_i.h and linux/befs_fs_sb.h
0174 in inode.c [WD]
0175
0176 Version 0.45 (2001-10-29)
0177 ==========
0178 * Added functions to get the private superblock and inode structures from
0179 their enclosing public structures. Switched all references to the
0180 private portions to use them. (many files) [WD]
0181
0182 * Made read_super and read_inode allocate the private portions of those
0183 structures into the generic pointer fields of the public structures
0184 with kmalloc(). put_super and put_inode free them. This allows us not
0185 to have to touch the definitions of the public structures in
0186 include/linux/fs.h. Also, befs_inode_info is huge (because of the
0187 symlink string). (super.c, inode.c, befs_fs.h) [WD]
0188
0189 * Fixed a thinko that was corrupting file reads after the first block_run
0190 is done being read. (datastream.c) [WD]
0191
0192 * Removed fsync() hooks, since a read-only filesystem doesn't need them.
0193 [Christoph Hellwig].
0194
0195 * Fixed befs_readlink() (symlink.c) [Christoph Hellwig].
0196
0197 * Removed all the Read-Write stuff. I'll redo it when it is time to add
0198 write support (various files) [WD].
0199
0200 * Removed prototypes for functions who's definitions have been removed
0201 (befs_fs.h) [WD].
0202
0203
0204 Version 0.4 (2001-10-28)
0205 ==========
0206 * Made it an option to use the old non-pagecache befs_file_read() for
0207 testing purposes. (fs/Config.in)
0208
0209 * Fixed unused variable warnings when compiling without debugging.
0210
0211 * Fixed a bug where the inode and super_block didn't get their blockbits
0212 fields set (inode.c and super.c).
0213
0214 * Release patch version 11. AKA befs-driver version 0.4.
0215
0216 * Thats right. New versioning scheme.
0217 I've done some serious testing on it now (on my box anyhow), and it
0218 seems stable and not outragously slow. Existing features are more-or-less
0219 correct (see TODO list). But it isn't 1.0 yet. I think 0.4 gives me some
0220 headroom before the big 1.0.
0221
0222
0223 2001-10-26
0224 ==========
0225 * Fixed date format in this file. Was I smoking crack?
0226
0227 * Removed old datastream code from file.c, since it is nolonger used.
0228
0229 * Generic_read_file() is now used to read regular file data.
0230 It doesn't chew up the buffer cache (it does page io instead), and seems
0231 to be about as fast (even though it has to look up each file block
0232 indivdualy). And it knows about doing readahead, which is a major plus.
0233 So it does i/o in much larger chunks. It is the correct linux way. It
0234 uses befs_get_block() by way of befs_readpage() to find the disk offsets
0235 of blocks, which in turn calls befs_fpos2brun() in datastream.c to do
0236 the hard work of finding the disk block number.
0237
0238 * Changed method of checking for a dirty filesystem in befs_read_super
0239 (super.c). Now we check to see if log_start and log_end differ. If so,
0240 the journal needs to be replayed, and the filesystem cannot be mounted.
0241
0242 * Fixed an extra instance of MOD_DEC_USE_COUNT in super.c
0243
0244 * Fixed a problem with reading the superblock on devices with large sector
0245 sizes (such as cdroms) on linux 2.4.10 and up.
0246
0247 2001-10-24
0248 ==========
0249 * Fix nasty bug in converting block numbers to struct befs_inode_addr.
0250 Subtle, because the old version was only sometimes wrong.
0251 Probably responsible for lots of problems. (inode.c)
0252
0253 * Fix bug with reading an empty directory. (btree.c and dir.c)
0254
0255 * This one looks good. Release patch version 10
0256
0257 2001-10-23
0258 ==========
0259 * Added btree searching function.
0260
0261 * Use befs_btree_find in befs_lookup (namei.c)
0262
0263 * Additional comments in btree.c
0264
0265 2001-10-22
0266 ==========
0267 * Added B+tree reading functions (in btree.c).
0268 Made befs_readdir() use them them instead of the cruft in index.c.
0269
0270 2001-09-11
0271 ==========
0272 * Converted befs_read_file() to use the new datastream code.
0273
0274 * Finally updated the README file.
0275
0276 * Added many comments.
0277
0278 * Posted version 6
0279
0280 * Removed byte-order conversion code.
0281 I have no intention of supporting it, and it was very ugly.
0282 Flow control with #ifdef (ugh). Maybe I'll redo it once
0283 native byteorder works 100%.
0284
0285 2001-09-10
0286 ==========
0287 * Finished implementing read_datastream()
0288
0289 * made befs_read_brun() more general
0290 Supports an offset to start at and a max bytes to read
0291 Added a wrapper function to give the old call
0292
0293 2001-09-30
0294 ==========
0295 * Discovered that the datastream handleing code in file.c is quite deficient
0296 in several respects. For one thing, it doesn't deal with indirect blocks
0297
0298 * Rewrote datastream handleing.
0299
0300 * Created io.c, for io related functions.
0301 Previously, the befs_bread() funtions lived in file.c
0302 Created the befs_read_brun() function.
0303
0304
0305 2001-09-07
0306 ==========
0307 * Made a function to actually count the number of fs blocks used by a file.
0308 And helper functions.
0309 (fs/befs/inode.c)
0310
0311 2001-09-05
0312 ==========
0313 * Fixed a misunderstanding of the inode fields.
0314 This fixed the problmem with wrong file sizes from du and others.
0315 The i_blocks field of the inode struct is not the number of blocks for the
0316 inode, it is the number of blocks for the file. Also, i_blksize is not
0317 necessarily the size of the inode, although in practice it works out.
0318 Changed to blocksize of filesystem.
0319 (fs/befs/inode.c)
0320
0321 * Permanently removed code that had been provisionally ifdefed out of befs_fs.h
0322
0323 * Since we don't support access time, make that field zero, instead of
0324 copying m_time.
0325 (fs/befs/inode.c)
0326
0327 * Added sanity check for inode reading
0328 Make sure inode we got was the one we asked for.
0329 (fs/befs/inode.c)
0330
0331 * Code cleanup
0332 Local pointers to commonly used structures in inode.c.
0333 Got rid of abominations befs_iaddr2inode() and befs_inode2ino().
0334 Replaced with single function iaddr2blockno().
0335 (fs/befs/super.c) (fs/befs/inode.c)
0336
0337 2001-09-01
0338 ==========
0339 * Fixed the problem with statfs where it would always claim the disk was
0340 half full, due to improper understanding of the statfs fields.
0341 (fs/befs/super.c)
0342
0343 * Posted verion 4 of the patch
0344
0345 2001-09-01
0346 ==========
0347 * Changed the macros in befs_fs.h to inline functions.
0348 More readable. Typesafe. Better
0349 (include/linux/befs_fs.h)
0350
0351 * Moved type definitions from befs_fs.h to a new file, befs_fs_types.h
0352 Because befs_fs_i.h and befs_fs_sb.h were including befs_fs.h for the
0353 typedefs, and they are inlcuded in <linux/fs.h>, which has definitions
0354 that I want the inline functions in befs_fs.h to be able to see. Nasty
0355 circularity.
0356 (include/linux/befs_fs.h)
0357
0358 2001-08-30
0359 ==========
0360 * Cleaned up some wording.
0361
0362 * Added additional consitency checks on mount
0363 Check block_size agrees with block_shift
0364 Check flags == BEFS_CLEAN
0365 (fs/befs/super.c)
0366
0367 * Tell the kernel to only mount befs read-only.
0368 By setting the SB_RDONLY flag in befs_read_super().
0369 Not that it was possible to write before. But now the kernel won't even try.
0370 (fs/befs/super.c)
0371
0372 * Got rid of kernel warning on mount.
0373 The kernel doesn't like it if you call set_blocksize() on a device when
0374 you have some of its blocks open. Moved the second set_blocksize() to the
0375 very end of befs_read_super(), after we are done with the disk superblock.
0376 (fs/befs/super.c)
0377
0378 * Fixed wrong number of args bug in befs_dump_inode
0379 (fs/befs/debug.c)
0380
0381 * Solved lots of type mismatches in kprint()s
0382 (everwhere)
0383
0384 2001-08-27
0385 ==========
0386 * Cleaned up the fs/Config.in entries a bit, now slightly more descriptive.
0387
0388 * BeFS depends on NLS, so I made activating BeFS enable the NLS questions
0389 (fs/nls/Config.in)
0390
0391 * Added Configure.help entries for CONFIG_BEFS_FS and CONFIG_DEBUG_BEFS
0392 (currently at fs/befs/Kconfig)
0393
0394 2001-08-??
0395 ==========
0396 * Removed superblock locking calls in befs_read_super(). In 2.4, the VFS
0397 hands us a super_block struct that is already locked.
0398
0399 2001-08-13
0400 ==========
0401 * Will Dyson <will_dyson@pobox.com> is now attempting to maintain this module
0402 Makoto Kato <m_kato@ga2.so-net.ne.jp> is original author.Daniel Berlin
0403 also did some work on it (fixing it up for the later 2.3.x kernels, IIRC).
0404
0405 * Fixed compile errors on 2.4.1 kernel (WD)
0406 Resolve rejected patches
0407 Accommodate changed NLS interface (util.h)
0408 Needed to include <linux/slab.h> in most files
0409 Makefile changes
0410 fs/Config.in changes
0411
0412 * Tried to niceify the code using the ext2 fs as a guide
0413 Declare befs_fs_type using the DECLARE_FSTYPE_DEV() macro
0414
0415 * Made it a configure option to turn on debugging (fs/Config.in)
0416
0417 * Compiles on 2.4.7