Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | Version 0.92 (2002-03-29) |
| 2 | ========== |
| 3 | * Minor cleanup. Ran Lindent on the sources. |
| 4 | |
| 5 | Version 0.92 (2002-03-27) |
| 6 | ========== |
| 7 | * Fixed module makefile problem. It was not compiling all the correct |
| 8 | source files! |
| 9 | * Removed duplicated function definition |
| 10 | * Fixed potential null pointer dereference when reporting an error |
| 11 | |
| 12 | Version 0.91 (2002-03-26) |
| 13 | ========== |
| 14 | * Oy! Fixed stupid bug that would cause an unresolved symbol error. |
| 15 | Thanks to Laszlo Boszormenyi for pointing this out to me. |
| 16 | |
| 17 | Version 0.9 (2002-03-14) |
| 18 | ========== |
| 19 | * Added Sergey S. Kostyliov's patch to eliminate memcpy() overhead |
| 20 | from b+tree operations. Changes the befs_read_datastream() interface. |
| 21 | |
| 22 | * Segregated the functions that interface directly with the linux vfs |
| 23 | interface into their own file called linuxvfs.c. [WD] |
| 24 | |
| 25 | Version 0.64 (2002-02-07) |
| 26 | ========== |
| 27 | * Did the string comparision really right this time (btree.c) [WD] |
| 28 | |
| 29 | * Fixed up some places where I assumed that a long int could hold |
| 30 | a pointer value. (btree.c) [WD] |
| 31 | |
| 32 | * Andrew Farnham <andrewfarnham@uq.net.au> pointed out that the module |
| 33 | wouldn't work on older (<2.4.10) kernels due to an unresolved symbol. |
| 34 | This is bad, since 2.4.9 is still the current RedHat kernel. I added |
| 35 | a workaround for this problem (compatibility.h) [WD] |
| 36 | |
| 37 | * Sergey S. Kostyliov made befs_find_key() use a binary search to find |
| 38 | keys within btree nodes, rather than the linear search we were using |
| 39 | before. (btree.c) [Sergey S. Kostyliov <rathamahata@php4.ru>] |
| 40 | |
| 41 | * Made a debian package of the source for use with kernel-package. [WD] |
| 42 | |
| 43 | |
| 44 | Version 0.63 (2002-01-31) |
| 45 | ========== |
| 46 | * Fixed bug in befs_find_brun_indirect() that would result in the wrong |
| 47 | block being read. It was introduced when adding byteswapping in |
| 48 | 0.61. (datastream.c) [WD] |
| 49 | |
| 50 | * Fixed a longstanding bug in befs_find_key() that would result in it |
| 51 | finding the first key that is a substring of the string it is searching |
| 52 | for. For example, this would cause files in the same directory with |
| 53 | names like file1 and file2 to mysteriously be duplicates of each other |
| 54 | (because they have the same inode number). Many thanks to Pavel Roskin |
| 55 | for reporting this serious bug!!! |
| 56 | (btree.c) [WD] |
| 57 | |
| 58 | * Added support for long symlinks, after Axel Dorfler explained up how |
| 59 | they work. I had forgotten all about them. (inode.c, symlink.c) [WD] |
| 60 | |
| 61 | * Documentation improvements in source. [WD] |
| 62 | |
| 63 | * Makefile fix for independent module when CONFIG_MODVERSION is set in |
| 64 | kernel config [Pavel Roskin <proski@gnu.org>] |
| 65 | |
| 66 | * Compile warning fix for namei.c. [Sergey S. Kostyliov <rathamahata@php4.ru>] |
| 67 | |
| 68 | |
| 69 | Version 0.62 |
| 70 | ========== |
| 71 | * Fixed makefile for module install [WD] |
| 72 | |
| 73 | |
| 74 | Version 0.61 (2002-01-20) |
| 75 | ========== |
| 76 | * Made functions in endian.h to do the correct byteswapping, no matter |
| 77 | the arch. [WD] |
| 78 | |
| 79 | * Abbandoned silly checks for a NULL superblock pointer in debug.c. [WD] |
| 80 | |
| 81 | * Misc code cleanups. Also cleanup of this changelog file. [WD] |
| 82 | |
| 83 | * Added byteswapping to all metadata reads from disk. |
| 84 | Uses the functions from endian.h [WD] |
| 85 | |
| 86 | * Remove the typedef of struct super_block to vfs_sb, as it offended |
| 87 | certain peoples' aesthetic sense. [WD] |
| 88 | |
| 89 | * Ditto with the befs_read_block() interface. [WD] |
| 90 | |
| 91 | |
| 92 | Version 0.6 (2001-12-15) |
| 93 | ========== |
| 94 | * Cleanup of NLS functions (util.c) [WD] |
| 95 | |
| 96 | * Make directory lookup/read use the NLS if an iocharset is provided. [WD] |
| 97 | |
| 98 | * Fixed stupid bug where specifying the uid or gid mount options as '0' |
| 99 | would result in the filesystem using the on-disk uid and gid. [WD] |
| 100 | |
| 101 | * Added mount option to control debug printing. |
| 102 | The option is, simply enough, 'debug'. |
| 103 | (super.c, debug.c) [WD] |
| 104 | |
| 105 | * Removed notion of btree handle from btree.c. It was unnecessary, as the |
| 106 | linux VFS doesn't allow us to keep any state between calls. Updated |
| 107 | dir.c, namei.c befs_fs.h to account for it. [WD] |
| 108 | |
| 109 | * Improved handleing of overflow nodes when listing directories. |
| 110 | Now works for overflow nodes hanging off of nodes other than the root |
| 111 | node. This is the cleaner solution to Brent Miszalaski's problem. [WD] |
| 112 | |
| 113 | * Added new debug/warning/error print functions in debug.c. |
| 114 | More flexible. Will soon be controllable at mount time |
| 115 | (see TODO). [WD] |
| 116 | |
| 117 | * Rewrote datastream positon lookups. |
| 118 | (datastream.c) [WD] |
| 119 | |
| 120 | * Moved the TODO list to its own file. |
| 121 | |
| 122 | |
| 123 | Version 0.50 (2001-11-13) |
| 124 | ========== |
| 125 | * Added workaround for mis-understanding of the nature of the b+trees used |
| 126 | in directories. A cleaner solution will come after I've thought about it |
| 127 | for a while. Thanks to Brent Miszalaski for finding and reporting this bug. |
| 128 | (btree.c) [WD] |
| 129 | |
| 130 | * Minor cleanups |
| 131 | |
| 132 | * Added test for "impossible" condition of empty internal nodes in |
| 133 | seekleaf() in btree.c [WD] |
| 134 | |
| 135 | * Implemented the abstracted read_block() in io.c [WD] |
| 136 | |
| 137 | * Cleaned up the inode validation in inode.c [WD] |
| 138 | |
| 139 | * Anton Altaparmakov figured out (by asking Linus :) ) what was causing the |
| 140 | hanging disk io problem. It turns out you need to have the sync_pages |
| 141 | callback defined in your address_space_ops, even if it just uses the |
| 142 | default linux-supplied implementation. Fixed. Works now. |
| 143 | (file.c) [WD] |
| 144 | |
| 145 | * Anton Altaparmakov and Christoph Hellwig alerted me to the fact that |
| 146 | filesystem code should be using GFP_NOFS instead of GFP_KERNEL as the |
| 147 | priority parameter to kmalloc(). Fixed. |
| 148 | (datastream.c, btree.c super.c inode.c) [WD] |
| 149 | |
| 150 | * Anton also told me that the blocksize is not allowed to be larger than |
| 151 | the page size in linux, which is 4k i386. Oops. Added a test for |
| 152 | (blocksize > PAGE_SIZE), and refuse to mount in that case. What this |
| 153 | practicaly means is that 8k blocksize volumes won't work without a major |
| 154 | restructuring of the driver (or an alpha or other 64bit hardware). [WD] |
| 155 | |
| 156 | * Cleaned up the befs_count_blocks() function. Much smarter now. |
| 157 | And somewhat smaller too. [WD] |
| 158 | |
| 159 | * Made inode allocations use a slab cache |
| 160 | (super.c inode.c) [WD] |
| 161 | |
| 162 | * Moved the freeing of the private inode section from put_inode() to |
| 163 | clear_inode(). This fixes a potential free twice type bug. Put_inode() |
| 164 | can be called multiple times for each inode struct. [WD] |
| 165 | |
| 166 | * Converted all non vfs-callback functions to use befs_sb_info as the |
| 167 | superblock type, rather than struct super_block. This is for |
| 168 | portablity. [WD] |
| 169 | |
| 170 | * Fixed a couple of compile warnings due to use of malloc.h, when slab.h |
| 171 | is the new way. (inode.c, super.c) [WD] |
| 172 | |
| 173 | * Fixed erronous includes of linux/befs_fs_i.h and linux/befs_fs_sb.h |
| 174 | in inode.c [WD] |
| 175 | |
| 176 | Version 0.45 (2001-10-29) |
| 177 | ========== |
| 178 | * Added functions to get the private superblock and inode structures from |
| 179 | their enclosing public structures. Switched all references to the |
| 180 | private portions to use them. (many files) [WD] |
| 181 | |
| 182 | * Made read_super and read_inode allocate the private portions of those |
| 183 | structures into the generic pointer fields of the public structures |
| 184 | with kmalloc(). put_super and put_inode free them. This allows us not |
| 185 | to have to touch the definitions of the public structures in |
| 186 | include/linux/fs.h. Also, befs_inode_info is huge (becuase of the |
| 187 | symlink string). (super.c, inode.c, befs_fs.h) [WD] |
| 188 | |
| 189 | * Fixed a thinko that was corrupting file reads after the first block_run |
| 190 | is done being read. (datastream.c) [WD] |
| 191 | |
| 192 | * Removed fsync() hooks, since a read-only filesystem doesn't need them. |
| 193 | [Christoph Hellwig]. |
| 194 | |
| 195 | * Fixed befs_readlink() (symlink.c) [Christoph Hellwig]. |
| 196 | |
| 197 | * Removed all the Read-Write stuff. I'll redo it when it is time to add |
| 198 | write support (various files) [WD]. |
| 199 | |
| 200 | * Removed prototypes for functions who's definitions have been removed |
| 201 | (befs_fs.h) [WD]. |
| 202 | |
| 203 | |
| 204 | Version 0.4 (2001-10-28) |
| 205 | ========== |
| 206 | * Made it an option to use the old non-pagecache befs_file_read() for |
| 207 | testing purposes. (fs/Config.in) |
| 208 | |
| 209 | * Fixed unused variable warnings when compiling without debugging. |
| 210 | |
| 211 | * Fixed a bug where the inode and super_block didn't get their blockbits |
| 212 | fields set (inode.c and super.c). |
| 213 | |
| 214 | * Release patch version 11. AKA befs-driver version 0.4. |
| 215 | |
| 216 | * Thats right. New versioning scheme. |
| 217 | I've done some serious testing on it now (on my box anyhow), and it |
| 218 | seems stable and not outragously slow. Existing features are more-or-less |
| 219 | correct (see TODO list). But it isn't 1.0 yet. I think 0.4 gives me some |
| 220 | headroom before the big 1.0. |
| 221 | |
| 222 | |
| 223 | 2001-10-26 |
| 224 | ========== |
| 225 | * Fixed date format in this file. Was I smoking crack? |
| 226 | |
| 227 | * Removed old datastream code from file.c, since it is nolonger used. |
| 228 | |
| 229 | * Generic_read_file() is now used to read regular file data. |
| 230 | It doesn't chew up the buffer cache (it does page io instead), and seems |
| 231 | to be about as fast (even though it has to look up each file block |
| 232 | indivdualy). And it knows about doing readahead, which is a major plus. |
| 233 | So it does i/o in much larger chunks. It is the correct linux way. It |
| 234 | uses befs_get_block() by way of befs_readpage() to find the disk offsets |
| 235 | of blocks, which in turn calls befs_fpos2brun() in datastream.c to do |
| 236 | the hard work of finding the disk block number. |
| 237 | |
| 238 | * Changed method of checking for a dirty filesystem in befs_read_super |
| 239 | (super.c). Now we check to see if log_start and log_end differ. If so, |
| 240 | the journal needs to be replayed, and the filesystem cannot be mounted. |
| 241 | |
| 242 | * Fixed an extra instance of MOD_DEC_USE_COUNT in super.c |
| 243 | |
| 244 | * Fixed a problem with reading the superblock on devices with large sector |
| 245 | sizes (such as cdroms) on linux 2.4.10 and up. |
| 246 | |
| 247 | 2001-10-24 |
| 248 | ========== |
| 249 | * Fix nasty bug in converting block numbers to struct befs_inode_addr. |
| 250 | Subtle, because the old version was only sometimes wrong. |
| 251 | Probably responsible for lots of problems. (inode.c) |
| 252 | |
| 253 | * Fix bug with reading an empty directory. (btree.c and dir.c) |
| 254 | |
| 255 | * This one looks good. Release patch version 10 |
| 256 | |
| 257 | 2001-10-23 |
| 258 | ========== |
| 259 | * Added btree searching function. |
| 260 | |
| 261 | * Use befs_btree_find in befs_lookup (namei.c) |
| 262 | |
| 263 | * Additional comments in btree.c |
| 264 | |
| 265 | 2001-10-22 |
| 266 | ========== |
| 267 | * Added B+tree reading functions (in btree.c). |
| 268 | Made befs_readdir() use them them instead of the cruft in index.c. |
| 269 | |
| 270 | 2001-09-11 |
| 271 | ========== |
| 272 | * Converted befs_read_file() to use the new datastream code. |
| 273 | |
| 274 | * Finally updated the README file. |
| 275 | |
| 276 | * Added many comments. |
| 277 | |
| 278 | * Posted version 6 |
| 279 | |
| 280 | * Removed byte-order conversion code. |
| 281 | I have no intention of supporting it, and it was very ugly. |
| 282 | Flow control with #ifdef (ugh). Maybe I'll redo it once |
| 283 | native byteorder works 100%. |
| 284 | |
| 285 | 2001-09-10 |
| 286 | ========== |
| 287 | * Finished implementing read_datastream() |
| 288 | |
| 289 | * made befs_read_brun() more general |
| 290 | Supports an offset to start at and a max bytes to read |
| 291 | Added a wrapper function to give the old call |
| 292 | |
| 293 | 2001-09-30 |
| 294 | ========== |
| 295 | * Discovered that the datastream handleing code in file.c is quite deficient |
| 296 | in several respects. For one thing, it doesn't deal with indirect blocks |
| 297 | |
| 298 | * Rewrote datastream handleing. |
| 299 | |
| 300 | * Created io.c, for io related functions. |
| 301 | Previously, the befs_bread() funtions lived in file.c |
| 302 | Created the befs_read_brun() function. |
| 303 | |
| 304 | |
| 305 | 2001-09-07 |
| 306 | ========== |
| 307 | * Made a function to actually count the number of fs blocks used by a file. |
| 308 | And helper functions. |
| 309 | (fs/befs/inode.c) |
| 310 | |
| 311 | 2001-09-05 |
| 312 | ========== |
| 313 | * Fixed a misunderstanding of the inode fields. |
| 314 | This fixed the problmem with wrong file sizes from du and others. |
| 315 | The i_blocks field of the inode struct is not the number of blocks for the |
| 316 | inode, it is the number of blocks for the file. Also, i_blksize is not |
| 317 | necessarily the size of the inode, although in practice it works out. |
| 318 | Changed to blocksize of filesystem. |
| 319 | (fs/befs/inode.c) |
| 320 | |
| 321 | * Permanently removed code that had been provisionally ifdefed out of befs_fs.h |
| 322 | |
| 323 | * Since we don't support access time, make that field zero, instead of |
| 324 | copying m_time. |
| 325 | (fs/befs/inode.c) |
| 326 | |
| 327 | * Added sanity check for inode reading |
| 328 | Make sure inode we got was the one we asked for. |
| 329 | (fs/befs/inode.c) |
| 330 | |
| 331 | * Code cleanup |
| 332 | Local pointers to commonly used structures in inode.c. |
| 333 | Got rid of abominations befs_iaddr2inode() and befs_inode2ino(). |
| 334 | Replaced with single function iaddr2blockno(). |
| 335 | (fs/befs/super.c) (fs/befs/inode.c) |
| 336 | |
| 337 | 2001-09-01 |
| 338 | ========== |
| 339 | * Fixed the problem with statfs where it would always claim the disk was |
| 340 | half full, due to improper understanding of the statfs fields. |
| 341 | (fs/befs/super.c) |
| 342 | |
| 343 | * Posted verion 4 of the patch |
| 344 | |
| 345 | 2001-09-01 |
| 346 | ========== |
| 347 | * Changed the macros in befs_fs.h to inline functions. |
| 348 | More readable. Typesafe. Better |
| 349 | (include/linux/befs_fs.h) |
| 350 | |
| 351 | * Moved type definitions from befs_fs.h to a new file, befs_fs_types.h |
| 352 | Because befs_fs_i.h and befs_fs_sb.h were including befs_fs.h for the |
| 353 | typedefs, and they are inlcuded in <linux/fs.h>, which has definitions |
| 354 | that I want the inline functions in befs_fs.h to be able to see. Nasty |
| 355 | circularity. |
| 356 | (include/linux/befs_fs.h) |
| 357 | |
| 358 | 2001-08-30 |
| 359 | ========== |
| 360 | * Cleaned up some wording. |
| 361 | |
| 362 | * Added additional consitency checks on mount |
| 363 | Check block_size agrees with block_shift |
| 364 | Check flags == BEFS_CLEAN |
| 365 | (fs/befs/super.c) |
| 366 | |
| 367 | * Tell the kernel to only mount befs read-only. |
| 368 | By setting the MS_RDONLY flag in befs_read_super(). |
| 369 | Not that it was possible to write before. But now the kernel won't even try. |
| 370 | (fs/befs/super.c) |
| 371 | |
| 372 | * Got rid of kernel warning on mount. |
| 373 | The kernel doesn't like it if you call set_blocksize() on a device when |
| 374 | you have some of its blocks open. Moved the second set_blocksize() to the |
| 375 | very end of befs_read_super(), after we are done with the disk superblock. |
| 376 | (fs/befs/super.c) |
| 377 | |
| 378 | * Fixed wrong number of args bug in befs_dump_inode |
| 379 | (fs/befs/debug.c) |
| 380 | |
| 381 | * Solved lots of type mismatches in kprint()s |
| 382 | (everwhere) |
| 383 | |
| 384 | 2001-08-27 |
| 385 | ========== |
| 386 | * Cleaned up the fs/Config.in entries a bit, now slightly more descriptive. |
| 387 | |
| 388 | * BeFS depends on NLS, so I made activating BeFS enable the NLS questions |
| 389 | (fs/nls/Config.in) |
| 390 | |
| 391 | * Added Configure.help entries for CONFIG_BEFS_FS and CONFIG_DEBUG_BEFS |
| 392 | (Documentation/Configure.help) |
| 393 | |
| 394 | 2001-08-?? |
| 395 | ========== |
| 396 | * Removed superblock locking calls in befs_read_super(). In 2.4, the VFS |
| 397 | hands us a super_block struct that is already locked. |
| 398 | |
| 399 | 2001-08-13 |
| 400 | ========== |
| 401 | * Will Dyson <will_dyson@pobox.com> is now attempting to maintain this module |
| 402 | Makoto Kato <m_kato@ga2.so-net.ne.jp> is original author.Daniel Berlin |
| 403 | also did some work on it (fixing it up for the later 2.3.x kernels, IIRC). |
| 404 | |
| 405 | * Fixed compile errors on 2.4.1 kernel (WD) |
| 406 | Resolve rejected patches |
| 407 | Accomodate changed NLS interface (util.h) |
| 408 | Needed to include <linux/slab.h> in most files |
| 409 | Makefile changes |
| 410 | fs/Config.in changes |
| 411 | |
| 412 | * Tried to niceify the code using the ext2 fs as a guide |
| 413 | Declare befs_fs_type using the DECLARE_FSTYPE_DEV() macro |
| 414 | |
| 415 | * Made it a configure option to turn on debugging (fs/Config.in) |
| 416 | |
| 417 | * Compiles on 2.4.7 |