Whamcloud - gitweb
Update for the e2fsprogs 1.37 release.
[tools/e2fsprogs.git] / lib / ext2fs / ChangeLog
1 2005-03-21  Theodore Ts'o  <tytso@mit.edu>
2
3         * Release of E2fsprogs 1.37
4
5 2005-03-21  Theodore Ts'o  <tytso@mit.edu>
6
7         * ext2_ext_attr.h (EXT2_XATTR_LEN, EXT2_XATTR_SIZE): Add new
8                 convenience cpp macros.
9
10 2005-03-20  Theodore Ts'o  <tytso@mit.edu>
11
12         * mkdir.c (ext2fs_mkdir): Call ext2fs_write_new_inode() instead of
13                 ext2fs_write_inode().
14
15         * inode.c (ext2fs_write_new_inode): New function which should be
16                 used when the caller is writing an inode for the first
17                 time.  It makes sure that the extra portion of the large
18                 inode is initialized properly.
19
20 2005-03-18  Theodore Ts'o  <tytso@mit.edu>
21
22         * Makefile.in: Fix clean target to remove tst_getsectsize.
23
24         * getsize.c (ext2fs_get_device_size): Check to see if the number
25                 of blocks is greater than 2**32 when we are doing a binary
26                 search to determine the device size.  Thanks to Stephen
27                 Tweedie for the patch.
28         
29 2006-02-05  Theodore Ts'o  <tytso@mit.edu>
30
31         * Release of E2fsprogs 1.36
32
33 2005-02-05  Theodore Ts'o  <tytso@mit.edu>
34
35         * Makefile.in: Remove ext2fs.pc on a "make distclean"
36
37 2005-02-04  Theodore Ts'o  <tytso@mit.edu>
38
39         * Makefile.in (clean): Remove tst_getsize when doing a make clean
40
41 2005-02-03  Theodore Ts'o  <tytso@mit.edu>
42
43         * bitops.c: Make the generic functions more efficient.
44
45         * bitops.h: Drop SPARC assembly code. It's less efficient than GCC
46                 3.4 compiled code and also triggers nasty compiler
47                 warnings on sparc64.  Thanks to Matthias Andree for his
48                 analysis and suggestion.
49         
50 2005-01-27  Theodore Ts'o  <tytso@mit.edu>
51
52         * res_gdt.c (ext2fs_create_resize_inode): Create the resize inode
53                 even if s_reserved_gdt_blocks is zero.
54
55 2005-01-26  Theodore Ts'o  <tytso@mit.edu>
56
57         * ext2fs.pc.in: Add pkg-config files.
58
59 2005-01-25  Theodore Ts'o  <tytso@mit.edu>
60
61         * ext2fs.h: Add definition of struct ext2_inode_large
62
63         * ext2_fs.h: Add new function prototypes
64
65         * ext_attr.c (ext2fs_read_ext_attr, ext2fs_write_ext_attr): The
66                 ext2fs_swap_ext_attr() has been moved to swapfs.c, and
67                 given a new argument, has_header.
68
69         * swapfs.c (ext2fs_swap_ext_attr): Moved from ext_attr.c, and
70                 takes an argument which controls whether or not there is
71                 an EA header which needs to be byteswaped.
72                 (ext2fs_swap_inode_full): New function which byte-swaps
73                 the EA in inode.
74
75         * inode.c (ext2fs_get_next_inode_full, ext2fs_read_inode_full,
76                 ext2fs_write_inode_full): New functions, originally from
77                 Alex Tomas, but which needed to be substantially fixed so
78                 that the tests wouldn't cause major stack overwrite bugs
79                 in byte-swapping is enabled.
80         
81 2005-01-18  Theodore Ts'o  <tytso@mit.edu>
82
83         * Makefile.in: Fix the kernel compile-time echo commands to be
84                 consistent and portable
85
86 2005-01-07  Theodore Ts'o  <tytso@mit.edu>
87
88         * unlink.c (ext2fs_unlink): If both the name and the inode number
89                 are unspecified, then return an error, so that we don't do
90                 something surprising such as unconditionally deleting the
91                 first directory entry.
92                 (unlink_proc): Delete directory entries by coalescing it
93                 with the previous entry, to avoid directory fragmentation.
94
95 2005-01-06  Theodore Ts'o  <tytso@mit.edu>
96
97         * version.c (ext2fs_parse_version_string): Change parsing
98                 algorithm so that version strings such as 1.36-rc1 returns
99                 a non-surprising result (i.e., 136, and not 1361).
100
101 2005-01-05  Theodore Ts'o  <tytso@mit.edu>
102
103         * block.c (block_iterate_ind, block_iterate_dind,
104                 block_iterate_tind): Move the code which byte swaps and
105                 read/writes indirect blocks to ext2fs_{read,write}_ind_block.
106                 This saves 400 bytes, and we need them for the
107                 resize_inode handling. 
108
109         * ind_block.c (ext2fs_read_ind_block, ext2fs_write_ind_block): New
110                 functions.
111
112         * res_gdt.c (ext2fs_create_resize_inode): Use 
113                 ext2fs_{read,write}_ind_block so that byte swapping is
114                 handled on big-endian systems.
115
116         * dupfs.c (ext2fs_dup_handle): Make sure the new filesystem handle
117                 has its own copy of the orig_super data structure.  (This
118                 is a better way of fixing a double-free problem in
119                 resize2fs which Fedora attempted to fix in 
120                 e2fsprogs-1.35-double_free.patch.   Addresses Red Hat
121                 Bugzilla #132707.)
122         
123 2004-12-23  Theodore Ts'o  <tytso@mit.edu>
124
125         * inode.c (ext2fs_flush_icache): When flushing the icache, clear
126                 the last-read block information as well.
127
128         * ext2fs.h (BMAP_SET), bmap.c (ext2fs_bmap): Add support for new
129                 flag, BMAP_SET, which allows the caller to set a
130                 particular logical->physical block mapping.
131
132         * ext2_err.et.in (EXT2_ET_SET_BMAP_NO_IND): New error code
133
134         * initialize.c (calc_reserved_gdt_blocks): #ifdef out all
135                 debugging printf statements.
136         
137         * res_gdt.c (ext2fs_create_resize_inode): Return
138                 EXT2_ET_RESIZE_INODE_CORRUPT if the resize inode is not
139                 what we expect.  #ifdef out all debugging printf
140                 statements.
141
142         * ext2_err.et.in (EXT2_ET_RESIZE_INODE_CORRUPT): Add new error code.
143
144 2004-12-22  Theodore Ts'o  <tytso@mit.edu>
145
146         * swapfs.c (ext2fs_swap_super): Byteswap the reserved_gdt_blocks
147                 superblocks field.
148
149 2004-12-15  Theodore Ts'o  <tytso@mit.edu>
150
151         * sparse.c (ext2fs_list_backups, ext2fs_bg_has_super),
152                 res_gdt.c (list_backups), closefs.c (ext2fs_bg_has_super),
153                 ext2fs.h: Move ext2fs_list_backups() to res_gdt.c, and
154                 ext2fs_bg_has_super() back to closefs.c.  There's no
155                 reason for the new file, since list_backups() isn't being
156                 used by any other functions, and can be made static, and
157                 all users of the ext2fs filesystem will have to call
158                 ext2fs_close() anyway.
159
160 2004-12-15  Theodore Ts'o  <tytso@mit.edu>
161
162         * Applied resize inode patch from Andreas Dilger
163
164         * res_gdt.c (ext2fs_create_resize_inode): New function that
165                 creates the resize inode.
166
167         * initialize.c (ext2fs_initialize): Reserve space for the resize
168                 inode.
169
170         * ext2fs.h (EXT2_LIB_FEATURE_COMPAT_SUPP): Add
171                 EXT2_FEATURE_COMPAT_RESIZE_INODE to the list of supported
172                 capabilities.
173                 Add function prototypes for res_gdt.c and sparse.c.
174
175         * closefs.c (ext2fs_super_and_bgd_loc): Take the reserved blocks
176                 into account when calculating the number of overhead
177                 blocks.
178
179         * closefs.c (ext2fs_bg_has_super, test_root), sparse.c: Move these
180                 functions to the new file sparse.c
181
182         * alloc_sb.c (ext2fs_reserve_super_and_bgd): Reserve the blocks
183                 saved in the resize inode as being in use.
184
185         * ext2_err.et.in (EXT2_ET_RES_GDT_BLOCKS): Add new error code.
186
187         * Makefile.in (srcdir): Add res_gdt.c and sparse.c to the ext2fs
188                 library.
189
190 2004-12-14  Theodore Ts'o  <tytso@mit.edu>
191
192         * Makefile.in: Use Linux-kernel-style makefile output for "make
193                 install"
194
195         * Makefile.in (installdirs): Use $(MKINSTALLDIRS) macro
196                 Update dependencies.
197
198 2004-11-30  Theodore Ts'o  <tytso@mit.edu>
199
200         * unix_io.c (unix_set_option): Add support for the offset option.
201
202         * test_io.c (test_set_option): Add support for the set_option method.
203
204         * ext2_io.h: Add new io_channel method, set_option(), and change
205                 io_channel_write_byte() from a macro to a library function.
206
207         * ext2fs.h, openfs.c(ext2fs_open2): New version of ext2fs_open
208                 which adds a new parameter, io_options.
209                 (ext2fs_open): If there is a question mark in the
210                 filename, and no io_options are specified, assumed that
211                 the text following the question mark are io_options.
212         
213         * io_manager.c, Makefile.in: New source file which contains
214                 high-level functions for the io_channel layer.
215
216         * freefs.c (ext2fs_free): Make sure we don't free the io_channel
217                 if image_io is NULL.
218
219         * Makefile.in: Use Linux-kernel-style makefile output to make it
220                 easier to see errors/warnings.
221
222 2004-11-29  Theodore Ts'o  <tytso@mit.edu>
223
224         * ext2_fs.h (EXT2_EXTENTS_FL, EXT3_FEATURE_INCOMPAT_EXTENTS, 
225                 EXT2_MAX_BLOCK_LOG_SIZE): Add definition for extent
226                 feature and inode flag.  Change maximum allowable block
227                 size to be 65536.
228
229 2004-10-08  Theodore Ts'o  <tytso@mit.edu>
230
231         * getsize.c (ext2fs_get_device_size): Add support for Windows
232                 9x/NT under Cygwin.  Thanks to Sam Robb
233                 (samrobb@users.sourceforge.net) for pointing this and the
234                 suggested code patch.
235
236 2004-09-17  Theodore Ts'o  <tytso@mit.edu>
237
238         * getsize.c: Clean up header #include's.
239
240         * llseek.c (ext2fs_llseek): On non-linux systems, use lseek64() if
241                 it is present.  (Addresses Debian bug #269044)
242
243 2004-07-28  Theodore Ts'o  <tytso@mit.edu>
244
245         * rw_bitmaps.c (read_bitmaps), block.c (block_iterate_ind,
246                 block_iterate_dind, block_iterate_tind), inode.c
247                 (ext2fs_read_inode): If EXT2_FLAG_IMAGE_FILE is set, so
248                 read the metadata from fs->image_io instead of fs->io.
249
250         * initialize.c (ext2fs_initialize), openfs.c (ext2fs_open):
251                 Initialize fs->image_io to be the same as fs->io.
252         
253         * ext2_err.et.in (EXT2_ET_NOT_IMAGE_FILE): Add new error code. 
254
255         * openfs.c (ext2fs_get_data_io, ext2fs_set_data_io,
256                 ext2fs_rewrite_to_io): New functions that allow
257                 applications to manipulate fs->image_io and fs->io safely.
258
259         * freefs.c (ext2fs_free): If fs->image_io is different fs->io,
260                 then call io_channel_close on fs->image_io.
261
262         * ext2fs.h: Add image_io element to the ext2_filsys data
263                 structure.  Add ext2fs_get_data_io() ext2fs_set_data_io(),
264                 and ext2fs_rewrite_to_io() prototypes.
265
266 2004-05-26  Theodore Ts'o  <tytso@mit.edu>
267
268         * closefs.c (ext2fs_flush): Make sure the master superblock is
269                 written last, and only after other I/O has been flushed to
270                 disk.  Thanks to Junfeng Yang from the Stanford
271                 Metacompilation group for pointing a potential ordering
272                 constraint problem if we don't write things out in the
273                 right order.
274
275         * test_io.c: Implement the ability to abort after n reads or
276                 writes to a particular block.  The block is specified by
277                 TEST_IO_BLOCK environment variable, and the read/write
278                 count by the TEST_IO_READ_ABORT and TEST_IO_WRITE_ABORT
279                 environment variables.  The block data is now only dumped
280                 if the 0x10 bit is set in TEST_IO_FLAGS.
281
282 2004-04-03  Theodore Ts'o  <tytso@mit.edu>
283
284         * ext2_types.h.in: Remove check for _UUID_TYPES since uuid_types.h
285                 is no longer used.
286
287 2004-03-08  Theodore Ts'o  <tytso@mit.edu>
288
289         * getsize.c (ext2fs_get_device_size): Only use the BLKGETSIZE64
290                 ioctl on Linux 2.6 since it is unreliable in Linux 2.4.
291                 (Addresses Debian Bug #236528).  Fix typo in the ioctl
292                 used for Mac OS X.
293
294 2004-03-02  Theodore Ts'o  <tytso@mit.edu>
295
296         * getsize.c (ext2fs_get_device_size): Update getsize functions to
297                 use Apple Darwin and Linux 64-bit ioctl's
298
299 2004-02-29  Brian Bergstrand  <brian@bergstrand.org>
300
301         * Makefile.in: Use $(BSDLIB_PIC_FLAG) to determine whether to use
302                 -fpic or -fPIC
303
304 2004-02-28  Theodore Ts'o  <tytso@mit.edu>
305
306         * Release of E2fsprogs 1.35
307
308 2004-02-21  Theodore Ts'o  <tytso@mit.edu>
309
310         * ext2fs.h (ext2fs_resize_mem): Fix C++ problem.  (Addresses Red
311                 Hat Bugzilla #112448; thanks Thomas Woerner from Red Hat.)
312
313 2004-02-14  Theodore Ts'o  <tytso@mit.edu>
314
315         * namei.c (follow_link): Correctly deal with symlinks that have
316                 extended attribute information.  (Addresses Debian Bug
317                 #232328)
318
319 2004-01-30  Theodore Ts'o  <tytso@mit.edu>
320
321         * ext2_fs.h: Reserve an extra 4 bytes for the journal backup,
322                 which we're using due to a typo in the e2fsck code.  (Oops)
323
324         * swapfs.c (ext2fs_swap_inode): Fix byte swap bug which causes SE
325                 Linux created symlinks with mandatory attributes to fail
326                 to be properly handled on big endian systems.  (Addresses
327                 Debian Bug #228723).
328                 (ext2fs_swap_super): Byte swap some new fields in the
329                 superblock, including the journal backup fields.
330
331 2003-12-02  Theodore Ts'o  <tytso@mit.edu>
332
333         * alloc.c, bb_inode.c, bitops.c, block.c, check_desc.c, closefs.c,
334                 dir_iterate.c, dirblock.c, expanddir.c, ext2fs.h,
335                 get_pathname.c, icount.c, imager.c, initalize.c, inode.c,
336                 lookup.c, openfs.c, read_bb.c, read_bb_file.c,
337                 rw_bitmaps.c, unix_io.c, unlink.c, write_bb_file.c: Fix
338                 gcc -Wall complaints.  Mainly marking variables as being
339                 unsued, and catching signed vs. unsigned comparisons.
340
341 2003-09-03  Theodore Ts'o  <tytso@mit.edu>
342
343         * closefs.c (ext2fs_super_and_bgd_loc): New function which
344                 centralizes the calculation of the superblock and block
345                 group descriptors.
346                 (ext2fs_flush): Use ext2fs_super_and_bgd_lock to figure
347                 out where to write the superblock and block group
348                 descriptors.
349
350         * alloc_sb.c (ext2fs_reserve_super_and_bgd): New function which
351                 reserves space in the block bitmap using
352                 ext2fs_super_and_bgd_loc.
353
354         * initialize.c (ext2fs_initialize): Use
355                 ext2fs_reserve_super_and_bgd to initialize the block bitmap.
356
357 2003-08-20  Theodore Ts'o  <tytso@mit.edu>
358
359         * inode_io.c (ext2fs_inode_io_intern2), ext2fs.h: Add new function
360                 allows the caller to pass in the inode data structure.
361
362         * fileio.c (ext2fs_file_open2), ext2fs.h: Add new function which
363                 allows the caller to pass in the inode to be used in the
364                 file I/O.
365
366         * ext2_fs.h: Add a backup of the location of the journal inode
367                 blocks to the superblock.
368
369         * mkjournal.c (write_journal_inode): Save the location of the
370                 journal inode to the backup location in the superblock.
371
372 2003-08-01  Philipp Thomas <pthomas@suse.de>
373
374         * alloc.c, badblocks.c, bb_inode.c, bitmaps.c, block.c, bmap.c,
375                 bmove.c, brel_ma.c, closefs.c, dblist.c, dblist_dir.c,
376                 dir_iterate.c, dirblock.c, dupfs.c, expanddir.c, ext2fs.h,
377                 ext_attr.c, fileio.c, freefs.c, get_pathname.c, icount.c,
378                 initialize.c, inode.c, inode_io.c, irel_ma.c, mkdir.c,
379                 mkjournal.c, namei.c, newdir.c, openfs.c, rs_bitmap.c,
380                 rw_bitmaps.c, test_io.c, unix_io.c: ext2fs_getmem(),
381                 ext2fs_free_mem(), and ext2fs_resize_mem() all now take a
382                 'void *' instead of a 'void **' in order to avoid pointer
383                 aliasing problems with GCC 3.x.
384
385 2003-07-25  Theodore Ts'o  <tytso@mit.edu>
386
387         * Release of E2fsprogs 1.34
388
389 2003-07-06  Theodore Ts'o  <tytso@mit.edu>
390
391         * kernel-jbd.h, flushb.c: Fix gcc -Wall nitpicks (indented cpp
392                 directives)
393
394         * ext2_types.h.in, initialize.c: Fix gcc -Wall nitpicks 
395                 (don't use #elsif)
396
397         * ismounted.c: Fix gcc -Wall nitpicks (Don't use exit as a goto label)
398
399         * llseek.c: Fix gcc -Wall nitpicks (don't use #elsif)
400
401         * lookup.c, read_bb.c: Fix gcc -Wall nitpicks (indent
402                 non-traditional #pragma)
403
404         * test_io.c: Fix gcc -Wall nitpicks (const/unsigned type issues)
405
406 2003-06-24    <tytso@snap.thunk.org>
407
408         * badblocks.c, ext2fs.h (ext2fs_u32_list_find,
409                 ext2fs_u32_list_test, ext2fs_u32_list_del,
410                 ext2fs_badblocks_list_del): Add functions to delete a
411                 block from the badblocks list.
412         * tst_badblocks.c: Add test cases for ext2fs_badblocks_list_del().
413
414 2003-05-21  Theodore Ts'o  <tytso@mit.edu>
415
416         * getsectsize.c (ext2fs_get_device_sectsize): New function which
417                 returns the hardware sector size (if it is available).
418
419 2003-05-13  Theodore Ts'o  <tytso@mit.edu>
420
421         * unix_io.c: Add #ifdef NO_IO_CACHE which disables all userspace
422                 caching by the unix_io layer.  Not enabled, only for
423                 debugging. 
424
425 2003-05-05  Theodore Ts'o  <tytso@mit.edu>
426
427         * test_io.c: Pay attention to the environment variables
428                 TEST_IO_LOGFILE, TEST_IO_FLAGS, and TEST_IO_BLOCK to
429                 determine whether or not we should log io activity, and to
430                 where.
431
432 2003-05-03  Theodore Ts'o  <tytso@mit.edu>
433
434         * tst_badblocks.c (file_test): Use tmpfile() instead of mktemp().
435
436 2003-04-29  Theodore Ts'o  <tytso@mit.edu>
437
438         * getsize.c (ext2fs_get_device_size): Allow windows code to get
439                 the resize for filesystems that are in regular files.
440
441 2003-04-21  Theodore Ts'o  <tytso@mit.edu>
442
443         * Release of E2fsprogs 1.33
444
445 2003-04-21  Theodore Ts'o  <tytso@mit.edu>
446
447         * Makefile.in: Use DYLD_LIBRAY_PATH so that "make check" works on
448                 Darwin systems when building with shared libraries.
449
450 2003-04-18  Theodore Ts'o  <tytso@mit.edu>
451
452         * unix_io.c: Use __CYGWIN__ instead of CYGWIN.
453
454 2003-04-17  Theodore Ts'o  <tytso@mit.edu>
455
456         * getsize.c: Add Cygwin/Windows version of ext2fs_get_device_size()
457
458 2003-04-12  Theodore Ts'o  <tytso@mit.edu>
459
460         * unix_io.c (raw_read_blk): Add Cygwin support (the Windows block
461                 device only accepts sector aligned read requests.
462
463         * ismounted.c (check_mntent_file): Deal with OS's that don't
464                 define MNTOPT_RO.
465
466         * imager.c: If the OS doesn't define ssize_t, typedef it to int.
467
468 2003-04-11  Theodore Ts'o  <tytso@mit.edu>
469
470         * ext2_fs.h (EXT2_FEATURE_RO_COMPAT_BTREE_DIR): Comment out unused
471                 feature flag
472
473 2003-03-30  Theodore Ts'o  <tytso@mit.edu>
474
475         * Makefile.in: Use the compile_et --build-tree option.
476
477 2003-03-14  Theodore Ts'o  <tytso@mit.edu>
478
479         * getsize.c: Add support for Apple Darwin's ioctl to get the hard
480                 disk size.
481
482         * badblocks.c (ext2fs_u32_list_count), ext2fs.h: Add new function
483                 which returns the number of entries in the list.
484
485 2003-03-10  Theodore Ts'o  <tytso@mit.edu>
486
487         * fileio.c (ext2fs_file_lseek): Fix bug added when adding 64-bit
488                 support; avoid null dereference when ret_pos is NULL.
489
490 2003-03-06  Theodore Tso  <tytso@mit.edu>
491
492         * ext2_types.h.in: Don't redefine types if other e2fsprogs
493                 *_types.h files have been included already.
494
495         * kernel-jbd.h: Use C99 variadic cpp macros if not using GCC.
496                 (Older GCC's don't support the C99 variadic macros.)
497
498         * flushb.c (ext2fs_sync_device), 
499         ismounted.c (ext2fs_check_mount_point): Avoid GCC extension: 
500         #warning not supported by Solaris suncc
501
502         * ext2_ext_attr.h: Avoid GCC extension: 0 length arrays in
503                 structure definition.  Not needed for now in 
504                 ext2_ext_attr_entry.
505
506 2003-01-25  Theodore Ts'o  <tytso@mit.edu>
507
508         * dirhash.c: Fix gcc -Wall nits.
509
510 2003-01-22  Theodore Ts'o  <tytso@mit.edu>
511
512         * unix_io.c (unix_write_blk): Fix up GCC -Wall nits.
513
514 2003-01-21  Theodore Ts'o  <tytso@mit.edu>
515
516         * fileio.c (ext2fs_file_read, ext2_file_lseek,
517                 ext2_file_get_size): Add 64-bit support.
518
519         * ext2fs.h (EXT2_I_SIZE): Add macro which caluates a 64bit size
520                 from i_size and i_size_high.
521
522 2003-01-19  Theodore Ts'o  <tytso@mit.edu>
523
524         * initialize.c (ext2fs_initialize): If the user specifies a really
525                 large number of inodes, then reduce the number of blocks
526                 per group until we find a workable set of filesystem
527                 parameters.
528
529         * ext2_err.et.in (EXT2_ET_TOO_MANY_INODES): Add new error code.
530
531 2002-11-09  Theodore Ts'o  <tytso@mit.edu>
532
533         * Release of E2fsprogs 1.32
534
535 2002-11-09  Theodore Ts'o  <tytso@mit.edu>
536
537         * unix_io.c (find_cached_block, reuse_cache, unix_read_blk, 
538                 unix_write_blk): Optimize routines so that we don't end up
539                 searching the cache twice when a block isn't in the
540                 cache.  If reads are larger than READ_DIRECT_SIZE, don't
541                 let them go through the cache.
542
543         * unix_io.c (find_cached_block): Fixed bug which caused some clean
544                 blocks to be erroneously marked as dirty, so they would
545                 get written back to the disk before they are evicted from
546                 the cache.  Harmless, but it slows down e2fsck
547                 significantly.
548
549 2002-11-08  Theodore Ts'o  <tytso@mit.edu>
550
551         * Release of E2fsprogs 1.31
552
553 2002-11-08    <tytso@snap.thunk.org>
554
555         * Makefile.in (check): Skip trying to compile test_byteswap
556                 if --disable-byteswaap had been given to configure.
557
558 2002-11-07    <tytso@snap.thunk.org>
559
560         * closefs.c (write_bgdesc, ext2fs_flush): Fix bug in meta_bg
561                 support when the MASTER_SB_ONLY flag is set.  Some of
562                 the descriptor blocks that should have been written out
563                 were getting skipped.
564
565 2002-10-31  Theodore Ts'o  <tytso@mit.edu>
566
567         * Release of E2fsprogs 1.30
568
569 2002-10-31  Theodore Ts'o  <tytso@mit.edu>
570
571         * ext2_fs.h: Add support for a new inode flag, which is to be used
572                 for indicating the top of directory hierarchies for the
573                 Orlov block allocator.
574         
575         * ismounted.c (check_mntent, check_mntent_file): Add better
576                 support for loopback-mounted filesystems.  Check /etc/mtab
577                 if /proc/mounts doesn't turn up any mount flags, since
578                 /etc/mtab has the loopback image filename, instead of
579                 /dev/loop0.  Also, check based on st_dev and st_ino, so
580                 that if a relative pathname or a pathnames using symbolic
581                 links are used, we can detect the the filesystem correctly
582                 in those cases.  (Addresses Sourceforge bug #619119)
583
584         * flushb.c (ext2fs_sync_device): If the BLKFLSBUF ioctl succeeds,
585                 don't try the FDFLUSH ioctl that was required for floppies
586                 with older kernels.  This avoids needless whining from the
587                 MD device driver.  (Addresses Sourceforge bug #545832).
588
589         * openfs.c (ext2fs_open): Fix bug which caused us to pass the
590                 wrong group_block to ext2fs_descriptor_block_loc if we're
591                 using the backup superblock/block group descriptors.
592                 (ext2fs_descriptor_block_loc): If we're using the backup
593                 superblock descriptors, use the backup descriptor block in
594                 the next block group.
595
596 2002-10-30  Theodore Ts'o  <tytso@mit.edu>
597
598         * alloc_tables.c (ext2fs_allocate_group_table): Allocate the inode
599                 table so that it buts up against the bitmap blocks, to
600                 avoid block fragmentation.
601
602         * closefs.c (write_bgdesc), initalize.c (ext2fs_initialize): Fix
603                 bug; only allocate group descriptor blocks up to
604                 s_first_meta_bg.
605
606 2002-10-25  Theodore Ts'o  <tytso@mit.edu>
607
608         * ext2_fs.h: Add a new superblock field, s_mkfs_time, so that we
609                 know when a filesystem was created.  (Sometimes this can
610                 be useful...)
611
612         * initialize.c (ext2fs_initialize): Set the s_mkfs_time field.
613
614 2002-10-20  Theodore Ts'o  <tytso@valinux.com>
615
616         * ext2_fs.h (EXT3_DEFM_JMODE): Add new default mount options for
617                 the journal data mode.
618
619         * closefs.c (ext2fs_flush, write_bgdesc), ext2_fs.h, ext2fs.h,
620         openfs.c (ext2fs_descriptor_block_loc, ext2fs_open), initialize.c
621         (ext2fs_initialize), swapfs.c (ext2fs_swap_super): Add support for
622         the meta_blockgroup filesystem format.
623
624 2002-10-15    <tytso@snap.thunk.org>
625
626         * ext2_fs.h: Add new field in superblock for default mount options.
627
628 2002-10-13  Theodore Ts'o  <tytso@mit.edu>
629
630         * ext2fs.h: Add #include of header files necessary for ext2fs.h to
631                 compile cleanly.
632
633 2002-10-02  Theodore Y. Ts'o  <tytso@mit.edu>
634
635         * rw_bitmaps.c (ext2fs_write_block_bitmap,
636                 ext2fs_read_block_bitmap): Don't set the CHANGED bit just
637                 because the bitmap is getting written to disk.  Make
638                 ext2fs_swap_bitmap be a static function, since it's not
639                 intended to be exported.
640
641         * swapfs.c (ext2fs_swap_super): Byte-swap the hash seed
642
643 2001-09-24  Theodore Tso  <tytso@mit.edu>
644
645         * Release of E2fsprogs 1.29
646
647 2001-08-31  Theodore Tso  <tytso@thunk.org>
648
649         * Release of E2fsprogs 1.28
650
651 2002-08-31  Theodore Ts'o  <tytso@valinux.com>
652
653         * dblist.c (ext2fs_dblist_sort): New function which allows the
654                 caller to pass in a special sort comparison function.
655
656 2002-08-20  Theodore Ts'o  <tytso@mit.edu>
657
658         * valid_blk.c (ext2fs_inode_has_valid_blocks): Fix bug which
659                 failed to accurately characterize non-standard slow
660                 symlinks.  (Which don't appear in practice on real-life
661                 systems, fortunately.)
662
663 2002-08-17  Theodore Ts'o  <tytso@mit.edu>
664
665         * Makefile.in: Remove inode_io.o from the standard object files,
666                 and only build it if debugfs is enabled (it requires
667                 fileio.o, which is only built if --disable-debugfs isn't
668                 specified to configure).
669
670         * dirhash.c (ext2fs_dirhash): Change the MD4 hash in a backwards
671                 incompatible way so that it is no longer
672                 endian-dependent.  Add the TEA hash.  Allow the seed
673                 parameter to be optional.
674
675         * ext2_fs.h: Remove the HALF_MD4_SEED and HALF_MD4_64 hashes.
676                 These features are all now in the HALF_MD4 hash.  Add
677                 definition for EXT2_HASH_TEA.
678
679         * ext2fs.h (ext2fs_dirhash): Change function prototype so it takes
680                 a pointer instead of an array.
681
682 2002-08-16  Theodore Ts'o  <tytso@mit.edu>
683
684         * ext2_err.et.in (EXT2_ET_BAD_EA_BLOCK_NUM): New error code
685
686         * ext2fs.h (ext2fs_inode_data_blocks): New function which returns
687                 the number of data blocks used by an inode exclusive of
688                 the EA block.
689
690         * ext_attr.c (ext2fs_adjust_ea_refcount): New function which
691                 adjusts the reference count in an extended attribute block.
692
693         * valid_blk.c (ext2fs_inode_has_valid_blocks): Add code to
694                 correctly deal with extended attribute blocks in symbolic
695                 links. 
696
697 2002-08-13    <tytso@snap.thunk.org>
698
699         * Makefile.in: Move dupfs.o and test_io.o from the
700                 needed-by-debugfs object list to the needed-by-resizer
701                 object list.  Fixes compile problem if the system is built
702                 with only --disable-debugfs.
703
704 2002-07-29  Theodore Ts'o  <tytso@mit.edu>
705
706         * link.c (ext2fs_link): When adding a new link to a directory,
707                 clear the HTREE bit.
708
709 2002-07-23  Theodore Ts'o  <tytso@mit.edu>
710
711         * dirhash.c (ext2fs_dirhash): Fix bug which caused MD4
712                 calculations for names > 32 characters to be completely
713                 bogus.  Changed MD4 calculation to match what is currently
714                 being used in the CVS gkernel tree.
715
716 2002-07-19  Theodore Ts'o  <tytso@mit.edu>
717
718         * ext2_fs.h: Add s_hash_seed and s_def_hash_version to the
719                 superblock definition.
720
721         * badblocks.c, freefs.c, ext2fs.h: Use the badblocks functions to
722                 create a set of u32_list functions.
723
724         * dirhash.c (halfMD4Transform): Shift the hash by one bit,
725                 since that's required by the directory indexing code.
726
727 2002-07-14  Theodore Ts'o  <tytso@mit.edu>
728
729         * ext2fs.h, read_bb_file.c: Change private to priv_data, to avoid
730                 using a C++ reserved word.
731
732         * unix_io.c (unix_open): Only attempt the setrlimit workaround if
733                 the kernel version is 2.4.10 -- 2.4.17, since otherwise an
734                 old version of glibc (built against 2.2 headers) will
735                 interact badly with the workaround to actually cause more
736                 problems.  I hate it when the glibc folks think they're
737                 being smarter than the kernel....
738
739 2002-06-28  Andreas Dilger <adilger@clusterfs.com>
740
741         * ext2_fs.h: Add superblock field for reserved group descriptors.
742
743 2002-06-28  Theodore Ts'o  <tytso@mit.edu>
744
745         * bitops.h: Add #define's for ext2fs_{l,b}e{32,16}_to_cpu and
746                 ext2fs_cpu_to_{l,b}e{32,16}
747
748 2002-06-27  Theodore Ts'o  <tytso@mit.edu>
749
750         * ismounted.c (check_mntent): In AIX 4.3, MOUNTED isn't defined.
751                 Add appropriate fallbacks in this case.
752
753 2002-06-26  Theodore Ts'o  <tytso@mit.edu>
754
755         * dirhash.c (ext2fs_dirhash): Change function signature to support
756                 a hash seed, and to return the minor hash (for 64-bit hash
757                 support).   Add support for the half MD4, half MD4 with
758                 seed, and half MD4 with seed and 64 bits.
759
760 2002-06-15  Theodore Ts'o  <tytso@mit.edu>
761
762         * ext2_fs.h (EXT2_DIRSYNC_FL): Add new file.
763
764 2002-06-09  Andreas Dilger <adilger@clusterfs.com>
765
766         * ext2_fs.h: Add macros for maximum block/inode counts:
767                 EXT2_INODES_PER_BLOCK, EXT2_MAX_BLOCKS_PER_GROUP,
768                 and EXT2_MAX_INODES_PER_GROUP.
769
770         * openfs.c (ext2fs_open): Check that the number of blocks in a group
771                 is less than 2^16, otherwise we need an INCOMPAT flag (not
772                 in existence yet, if ever) to open such a filesystem.
773
774         * initialize.c (ext2fs_initialize): Limit the number of blocks and
775                 inodes in a group to less than 2^16.
776
777 2002-06-09  Andreas Dilger <adilger@clusterfs.com>
778
779         * ext2_fs.h: Further minor cleanups of the header.  Consolidate
780                 some checks for __KERNEL__ into one place.
781
782 2002-05-22  Andreas Dilger <adilger@clusterfs.com>
783
784         * ext2_fs.h: Remove macros accessing u.ext2_sb field and use
785                 the EXT2_SB() macro instead.  Remove kernel function
786                 prototypes also.  This matches the 2.5 kernel, and
787                 is also cleaner for other reasons.  Whitespace cleanup.
788
789 2002-05-21  Theodore Ts'o  <tytso@mit.edu>
790
791         * ext2_ext_attr.h: Update to V2 version of the Bestbits format.
792
793 2002-05-16  Andreas Dilger <adilger@clusterfs.com>
794
795         * ext2_fs.h: Change limits to support filesystems with 8k blocks.
796
797         * initialize.c (ext2fs_initialize): Remove assumption that
798                 blocksizes are always <= 4k.
799
800 2002-05-11  Theodore Ts'o  <tytso@mit.edu>
801
802         * bmap.c (ext2fs_bmap): Fix bug which caused ext2fs_bmap to fail
803                 silently if inode pointer is NULL (and ext2fs_bmap is
804                 expected to read the inode itself).
805
806 2002-04-27  Theodore Ts'o  <tytso@mit.edu>
807
808         * ismounted.c (check_mntent_file, is_swap_device): Verify that the
809                 file we are checking is a block device file before looking
810                 at st_rdev, since it's not valid for normal files.
811                 (is_swap_device): Move so that it is outside the
812                 HAVE_MNTENT_H, so that it is always built.
813
814 2002-03-11  Theodore Tso  <tytso@mit.edu>
815
816         * dirblock.c (ext2fs_read_dir_block2, ext2fs_write_dir_block): New
817                 functions which take an extra flags argument.  The flag
818                 EXT2_DIRBLOCK_V2_STRUCT will reverse when the name_len
819                 field is byte swampped on big-endian machines, since in
820                 the V2 structure, name_len is a char field which is
821                 doesn't need to be byte swapped --- except if an
822                 old-style kernel had byte-swapped the name_len field
823                 as part of the V1 structure.
824
825         * ext2_err.et.in (EXT2_ET_DIRHASH_UNSUPP): New error code
826
827         * dirhash.c (ext2fs_dirhash): New function which calculates the
828                 hash for a filename in an indexed directory.
829
830 2002-03-08  Theodore Tso  <tytso@mit.edu>
831
832         * Release of E2fsprogs 1.27
833
834 2002-03-07  Theodore Tso  <tytso@mit.edu>
835
836         * ext2fs.h (ext2fs_inode_io_intern): Add missing function prototype.
837
838         * bmap.c, fileio.c, inode_io.c, tst_badblocks.c, 
839                 tst_byteswap.c: Fix gcc -Wall complaints
840
841         * Makefile.in (check): Use LD_LIBRARY_PATH to run test programs.
842                 (From Philipp Thomas <pthomas@suse.de>)
843
844 2002-02-25  Theodore Tso  <tytso@mit.edu>
845
846         * ext2_fs.h: Add structure definitions for the directory indexing
847                 extension.
848
849 2002-02-23  Theodore Tso  <tytso@mit.edu>
850
851         * unix_io.c (unix_open): Fix 2.4 resource limit workaround so that
852                 it doesn't break things on mis32, sparc32, and alpha
853                 platforms.
854
855 2002-02-21  Theodore Tso  <tytso@mit.edu>
856
857         * ismounted.c (is_swap_device): Fix file descriptor/memory leak;
858                 we were missing an fclose().
859
860 2002-02-20  Theodore Tso  <tytso@mit.edu>
861
862         * Makefile.in, inode_io.c, ext2fs.h, ext2_err.et.in: Add new io
863                 abstraction interface which exports an ext2 inode.
864
865         * ext2fs.h, fileio.c (ext2fs_file_flush): Export ext2fs_file_flush
866                 as a public interface.  Change void * to const void * in
867                 ext2fs_file_write's interface.
868
869         * test_io.c (test_close), unix_io.c (unix_close): Remove unneeded
870                 conditional; save a few bytes.
871         
872 2002-02-12  Theodore Tso  <tytso@mit.edu>
873
874         * Makefile.in (tst_badblocks): Add some extra .o files when
875                 linking the debugging program tst_badblocks which are
876                 needed if we aren't compiling with inline functions enable.
877
878         * kernel-list.h (__inline__): On non-gcc and non-Watcom compilers,
879                 define away __inline__ since it may not be supported.
880
881         * kernel-jbd.h (jbd_debug): For systems that don't do STDC, use a
882                 stripped down jbd_debug that doesn't use variadic
883                 arguments.  This will cause warnings under AIX, but things
884                 should still build.
885
886 2002-02-03  Theodore Tso  <tytso@thunk.org>
887
888         * Release of E2fsprogs 1.26
889
890 2002-02-03  Theodore Tso  <tytso@mit.edu>
891
892         * mkdir.c (ext2fs_mkdir): Change to use ext2fs_inode_alloc_stats2
893                 so that the number of directories in use is adjusted
894                 appropriately.
895
896         * alloc_stats.c (ext2fs_inode_alloc_stats2): Add new function
897                 which optionally will modify the number of directories
898                 count.
899
900 2002-01-03  Theodore Tso  <tytso@mit.edu>
901
902         * dir_iterate.c (ext2fs_dir_iterate2, ext2fs_process_dir_block):
903                 Add support for a new flag, DIRENT_FLAG_INCLUDE_REMOVED,
904                 which will return deleted directory entries.
905                 ext2fs_dir_iterate2 takes a new callback function which
906                 is identical with the one used by
907                 ext2fs_dblist_dir_iterate().  If the directory entry is
908                 deleted, the callback function will be called with the
909                 entry paraemter set to DIRENT_DELETED_FILE.
910
911         * Makefile.in, alloc_stats.c (ext2fs_inode_alloc_stats,
912                 ext2fs_block_alloc_stats): New functions which update
913                 block/inode allocation statistics in the bitmaps, block
914                 group descriptors, and superblock.
915
916         * mkjournal.c (mkjournal_proc), mkdir.c (ext2fs_mkdir),
917                 expanddir.c (expand_dir_proc), bb_inode.c
918                 (clear_bad_block_proc, set_bad_block_proc,
919                 ext2fs_update_bb_inode), alloc.c (ext2fs_alloc_block):
920                 Update to use new block/inode allocation statistics.
921
922 2001-12-24  Theodore Tso  <tytso@mit.edu>
923
924         * ismounted.c (is_swap_device): New function used by
925                 ext2fs_check_if_mounted and ext2fs_check_mount_point which
926                 determines whether or not the specified device is a swap
927                 device by using /proc/swaps.  More bulletproofing for
928                 idiotic/careless system administrators!
929
930         * ext2fs.h, openfs.c (ext2fs_open), initialize.c
931                 (ext2fs_initialize), mkdir.c (ext2fs_mkdir): Add a new
932                 field to struct_ext2_filsys, umask.  This field is
933                 initialize to 022, and affects ext2fs_mkdir in the obvious
934                 way.  (In the future umask should also affect new file
935                 creation routines, but the fileio functions don't
936                 currently support this yes.)
937
938         * ismounted.c (check_mntent_file): Stat all of the entries in
939                 /etc/mtab and/or /proc/mounts in order to catch dim-witted
940                 system administrators who might have created alias
941                 devices.
942  
943 2001-12-23  Theodore Tso  <tytso@mit.edu>
944
945         * Makefile.in, jfs_user.h: Move linux/jbd.h to
946                 ext2fs/kernel-jbd.h, to avoid using the system header
947                 file version of hbd.h when using diet glibc (since it
948                 forcibly adds /usr/include to the beginning of the
949                 include search path.)
950
951         * kernel-jbd.h, kernel-list.h, jfs_compat.h: Move files from
952                 include/linux directory.
953
954 2001-12-16  Theodore Tso  <tytso@mit.edu>
955
956         * bitops.h (ext2fs_mark_generic_bitmap, ext2fs_unmark_generic_bitmap),
957                 ext_attr.c (ext2fs_read_ext_attr, ext2fs_write_ext_attr),
958                 fileio.c (ext2fs_file_write): Fix gcc -Wall nits
959
960         * Makefile.in, jfs_user.h: linux/jfs.h has been renamed to
961                 linux/jbd.h
962
963 2001-12-03  Theodore Tso  <tytso@mit.edu>
964
965         * unix_io.c (unix_open): Make sure the ulimit workaround works
966                 regardless of the version of glibc which is used to
967                 compild e2fsprogs.
968
969 2001-11-26  Theodore Tso  <tytso@mit.edu>
970
971         * unix_io.c (unix_open): Work around a bug in 2.4.10+ kernels by
972                 trying to unset the filesize limit if at all possible,
973                 if a block device is getting opened.  (The filesize limit
974                 shouldn't be applied against writes to a block device, but
975                 starting in 2.4.10, the kernel is doing this.)
976         
977 2001-11-05  Theodore Tso  <tytso@mit.edu>
978
979         * mkjournal.c (ext2fs_add_journal_inode): When creating a .journal
980                 file on adding a journal to an already-mounted filesystem,
981                 try to clear the ext2 file attributes on an already
982                 existing .journal file so that we don't fail if on a
983                 partially added journal to the filesystem.
984
985         * ext2_fs.h: Define a new ext2 file attribute, EXT2_NOTAIL_FL,
986                 which signals that a particular inode should not have the
987                 last bits of data (the "tail") be merged with another
988                 file.  This is necessary to keep LILO happy.
989
990 2001-09-20  Theodore Tso  <tytso@thunk.org>
991
992         * Release of E2fsprogs 1.25
993
994 2001-09-16  Theodore Tso  <tytso@mit.edu>
995
996         * ext2_ext_attr.h: Remove unneeded #include of <linux/config.h>
997                 which was breaking the build on the Hurd.  (Addresses
998                 Debian bug #112414).
999
1000 2001-09-13  Theodore Ts'o  <tytso@mit.edu>
1001
1002         * ismounted.c (check_mntent_file): We now validate the entry in
1003                 /etc/mtab to make sure the filesystem is really mounted,
1004                 since some broken distributions (read: Slackware) have
1005                 buggy boot scripts that don't initialize /etc/mtab before
1006                 checking non-root filesystems.  (Slackware also doesn't
1007                 check the root filesystem separately, and reboot if the
1008                 root filesystem had changes applied to it, which is
1009                 dangerous and broken.)   
1010
1011 2001-09-02  Theodore Tso  <tytso@thunk.org>
1012
1013         * Release of E2fsprogs 1.24a
1014
1015 2001-08-30  Theodore Tso  <tytso@thunk.org>
1016
1017         * Release of E2fsprogs 1.24
1018
1019 2001-08-30  Theodore Tso  <tytso@valinux.com>
1020
1021         * getsize.c (ext2fs_get_device_size): Back out BLKGETSIZE64
1022                 changes, since the ioctl number has been reused by another
1023                 unofficial patch.
1024
1025 2001-08-15  Theodore Tso  <tytso@valinux.com>
1026
1027         * Release of E2fsprogs 1.23
1028
1029 2001-08-05  Theodore Tso  <tytso@valinux.com>
1030
1031         * alloc.c (ext2fs_new_inode, ext2fs_new_block): Use the fast
1032                 version of the bitmap test routines to speed up these
1033                 routines.  (At some point I may want to make these
1034                 routines use the find_first_bit functions, but that will
1035                 add a lot of complexity since it means that these
1036                 functions will have to break the bitmap abstraction
1037                 boundary.  It's not clear it's worth it.)
1038
1039         * mkjournal.c (mkjournal_proc): Remember the last block allocated
1040                 to speed up ext2fs_new_block().
1041
1042 2001-07-29  Theodore Tso  <tytso@valinux.com>
1043
1044         * finddev.c (scan_dir): Fix memory leak; we weren't calling
1045                 closedir() when exiting the function in all cases.
1046
1047 2001-07-27  Theodore Tso  <tytso@valinux.com>
1048
1049         * mkjournal.c (ext2fs_create_journal_superblock): Set the first
1050                 block usable in the journal for external journals to be 2
1051                 or 3, depending on the blocksize, so that the existing
1052                 kernel code does the right thing.
1053
1054         * getsize.c (ext2fs_get_device_size): Add support for the
1055                 BLKGETSIZE64 ioctl.  (Ioctl defined by unofficial patches
1056                 from Ben LaHaise, but it's likely this interface won't
1057                 change.)
1058
1059         * mkjournal.c (ext2fs_add_journal_device): Use the correct block
1060                 when writing the journal superblock, too.  (Oops! Needed
1061                 to make 1k filesystems with external journal to work.)
1062
1063 2001-07-26  Theodore Tso  <tytso@valinux.com>
1064
1065         * mkjournal.c (ext2fs_add_journal_device): Use the correct block
1066                 to find the journal superblock if the blocksize is 1024.
1067
1068 2001-07-21  Theodore Tso  <tytso@valinux.com>
1069
1070         * ext2_err.et.in (EXT2_ET_LOAD_EXT_JOURNAL): Add new error code
1071
1072 2001-07-20  Theodore Tso  <tytso@valinux.com>
1073
1074         * ext_attr.c (ext2fs_write_ext_attr): When writing the extended
1075                 attribute block, set the filesystem changed bit.
1076
1077         * bitops.h (ext2fs_find_first_bit_set, ext2fs_find_next_bit_set):
1078                 Comment out these functions since we're not using them.
1079
1080 2001-07-10  Theodore Tso  <tytso@valinux.com>
1081
1082         * closefs.c (write_primary_superblock): After writing changes to
1083                 the primary superblock, update the original superblock
1084                 copy so we don't have to re-write those changes in the
1085                 future.
1086                 (ext2fs_flush): Clear the superblock dirty flag after
1087                 we've flushed out changes to disk.
1088
1089 2001-07-07  Theodore Tso  <tytso@valinux.com>
1090
1091         * bitops.h (ext2fs_find_first_bit_set): Use %esi instead of %ebx
1092                 to avoid register conflicts when compiling in PIC mode.
1093
1094 2001-07-04  Theodore Tso  <tytso@valinux.com>
1095
1096         * bitops.h (ext2fs_find_first_bit_set, ext2fs_find_next_bit_set):
1097                 Add new functions (C and in i386 assembler) which quickly
1098                 find bits set in a bitmask.
1099
1100 2001-06-23  Theodore Tso  <tytso@valinux.com>
1101
1102         * Makefile.in, ext_attr.c, ext2_attr.c, ext2fs.h: Add new files
1103                 ext2_ext_attr.h and ext_attr.c for extended attributes
1104                 support.
1105
1106         * Release of E2fsprogs 1.22
1107
1108 2001-06-22  Theodore Tso  <tytso@valinux.com>
1109
1110         * mkjournal.c (ext2fs_add_journal_inode): Move close of file
1111                 descriptor so that adding a journal to a mounted
1112                 filesystem doesn't die.  (Fixes a bug accidentally
1113                 introduced in e2fsprogs 1.21.)
1114
1115         * mkjournal.c (ext2fs_add_journal_inode): Only use fchflags if
1116                 HAVE_CHFLAGS and UF_NODUMP are defined, since the Hurd has
1117                 fchflags without defining UF_NODUMP.  (Addresses Debian
1118                 bug #101361)
1119
1120         * flushb.c: Use platform independent method of defining the
1121                 BLKFLSBUF and FDFLUSH ioctl's.  Also include sys/mount.h
1122                 since on newer glibc's BLKFLSBUF is defined there.
1123
1124         * bitops.h: The C language versions of ext2fs_swab16/32 need to be
1125                 included if EXT2FS_ENABLE_SWAPFS is defined, since we need
1126                 to support byte swapping even if we don't support the
1127                 conversion functions.  (Fixes Debian bug #101686).
1128
1129         * dirblock.c (ext2fs_read_dir_block): Remove use of dir_entry_2
1130                 since the byte-swapping code all assumes the
1131                 ext2_dir_entry structure.  (It's a question of whether or
1132                 not name_len should be byte-swapped or not, and whether
1133                 it's a 16 bit or 8 bit field.)
1134
1135 2001-06-15  Theodore Tso  <tytso@valinux.com>
1136
1137         * Release of E2fsprogs 1.21
1138
1139 2001-06-15  Theodore Tso  <tytso@valinux.com>
1140
1141         * Makefile.in: Fix bug in installation of ext2_types.h.  It is a
1142                 file which is generated and is therefore found in the
1143                 build directory, not source directory.
1144
1145         * ismounted.c (check_mntent_file): Use a test file in / to check
1146                 to see if the root filesystem is mounted read-only.  This
1147                 protects against the case where /etc might not be on /, as
1148                 well as the case where /etc/mtab doesn't exist.  (Both are
1149                 should-never happen scenarios, but you never know...)
1150
1151 2001-06-14  Theodore Tso  <tytso@valinux.com>
1152
1153         * ismounted.c (ext2fs_check_if_mounted): Fix grammer in comment.
1154                 Remove unneeded #pragma argsused, since the arguments are
1155                 always used.
1156
1157 2001-06-13  Theodore Tso  <tytso@valinux.com>
1158
1159         * ext2_types.h.in: If linux/types.h has been defined, then don't
1160                 try to redefine the typedefs.
1161
1162         * Makefile.in (HFILES): Add ext2_types.h to the list of files
1163                 which should be installed.
1164
1165         * ismounted.c (check_mntent_file): Work around GNU hurd brain
1166                 damage.  Addresses Debian bug #100304.
1167
1168         * Makefile.in: Limit some .o files from being included into the
1169                 library if --disable-debugfs, --disable-swapfs,
1170                 --disable-imager, or --disable-resizer are used.
1171
1172 2001-06-12  Theodore Tso  <tytso@valinux.com>
1173
1174         * inode.c, tst_iscan.c: Stop using the compatibility badblocks
1175                 function, and use the ext2fs_badblocks_* functions
1176                 instead.
1177
1178 2001-06-11  Theodore Tso  <tytso@valinux.com>
1179
1180         * Makefile.in, gen_bitmap.c, bitops.h: Move inline functions
1181                 ext2fs_mark_generic_bitmap and
1182                 ext2fs_unmark_generic_bitmap to gen_bitmap.c as normal
1183                 functions.  (This saves space and doesn't significantly
1184                 change the speed of e2fsck on a P-III.)
1185
1186         * ext2fs.h, bitops.h, block.c, bmap.c, closefs.c, dirblock.c,
1187                 inode.c, native.c, openfs.c, rw_bitmaps.c, swapfs.c: Only
1188                 include the byte-swapping logic if ENABLE_SWAPFS is turned
1189                 on or if we're on a big-endian machine.
1190         
1191         * initialize.c (ext2fs_initialize):Use WORDS_BIGENDIAN directly to
1192                 set EXT2_FLAG_SWAP_BYTES, instead of using
1193                 ext2fs_native_flag.
1194         
1195         * native.c (ext2fs_native_flag): Use WORDS_BIGENDIAN provided by
1196                 autoconf to determine whether or not return
1197                 EXT2_FLAG_SWAP_BYTES.
1198
1199 2001-06-10  Theodore Tso  <tytso@valinux.com>
1200
1201         * Makefile.in: Remove the dependence on the libe2p library.
1202
1203         * mkjournal.c (ext2fs_add_journal_inode): Replace use of fsetflags
1204                 with direct usage of the ioctl/fchflags so that we don't
1205                 have to depend on the libe2p library.
1206
1207 2001-06-08  Theodore Tso  <tytso@valinux.com>
1208
1209         * ext2_types.h.in: Use unsigned ints in favor of unsigned longs
1210                 when trying to find a 32-bit wide type.
1211
1212         * icount.c (insert_icount_el): Fix the code used to estimate the
1213                 size of the new icount array to be more intelligent, to
1214                 avoid reallocating the array too many times.  Thanks to
1215                 Enrique Perez-Terron for pointing this out.
1216
1217 2001-06-02  Theodore Tso  <tytso@valinux.com>
1218
1219         * valid_blk.c (ext2fs_inode_has_valid_blocks): Only check i_blocks
1220                 for a symlink to determine whether it is a fast symlink.
1221
1222 2001-06-01  Theodore Tso  <tytso@valinux.com>
1223
1224         * Makefile.in, dosio.c, ext2_fs.h, ext2_types.h.in, ext2fs.h:
1225                 Move include/asm/types.h.in to lib/ext2fs/ext2_types.h.in.
1226
1227 2001-05-25  Theodore Tso  <tytso@valinux.com>
1228
1229         * Release of E2fsprogs 1.20
1230
1231 2001-05-25  Theodore Tso  <tytso@valinux.com>
1232
1233         * ismounted.c: More cleanups for ismounted.c, some from Andreas,
1234                 some to clean up Andreas's patches.  Use strncpy instead
1235                 of strcpy to save the root's mountpoint.  Clean up #ifdef
1236                 structure.  Remove uneeded variable in testing/debug driver.
1237
1238 2001-05-24  Andreas Dilger  <adilger@turbolinux.com>
1239
1240         * ismounted.c: Add check for root device which doesn't depend on
1241                 /etc/fstab or /proc/mounts to be correct.  Don't call
1242                 endmntent() before we are done with mnt struct.
1243
1244 2001-05-23  Theodore Tso  <tytso@valinux.com>
1245
1246         * ext2_err.et.in (EXT2_ET_JOURNAL_UNSUPP_VERSION): Added new error
1247                 code.
1248
1249 2001-05-21  Theodore Tso  <tytso@valinux.com>
1250
1251         * ext2_fs.h: Change assignment of EXT2_FEATURE_COMPAT_DIR_INDEX to
1252                 make room for pre-existing usage of
1253                 EXT2_FEATURE_COMPAT_EXT_ATTR.  Add flag EXT2_INDEX_FL with
1254                 the same codepoint as EXT2_BTREE_FL.
1255
1256 2001-05-20  Theodore Tso  <tytso@valinux.com>
1257
1258         * ext2fs.h: #include <> instead of "" for ext2fs and et header
1259                 files, since they will be installed in /usr/include
1260
1261 2001-05-14  Theodore Tso  <tytso@valinux.com>
1262
1263         * alloc.c, alloc_tables.c, badblocks.c, bb_compat.c, bb_inode.c,
1264                 bitmaps.c, bitops.c, block.c, bmap.c, bmove.c, brel_ma.c,
1265                 check_desc.c, closefs.c, cmp_bitmaps.c, dblist.c,
1266                 dblist_dir.c, dir_iterate.c, dirblock.c, dupfs.c,
1267                 expanddir.c, ext2_fs.h, fileio.c, finddev.c, flushb.c,
1268                 freefs.c, get_pathname.c, getsize.c, icount.c, imager.c,
1269                 initialize.c, inline.c, inode.c, irel_ma.c, ismounted.c,
1270                 link.c, lookup.c, mkdir.c, mkjournal.c, namei.c, native.c,
1271                 newdir.c, nt_io.c, openfs.c, read_bb.c, read_bb_file.c,
1272                 rs_bitmap.c, rw_bitmaps.c, swapfs.c, test_io.c,
1273                 tst_badblocks.c, tst_byteswap.c, tst_getsize.c,
1274                 tst_iscan.c, unix_io.c, unlink.c, valid_blk.c, version.c,
1275                 write_bb_file.c, ext2_fs.h: Moved file from include/linux.
1276                 Adjust all files in this directroy to include this file.
1277
1278         * mkjournal.c (ext2fs_create_journal_superblock): Remove redundant
1279                 code.
1280
1281 2001-05-05  Theodore Tso  <tytso@valinux.com>
1282
1283         * fileio.c (ext2fs_file_read): Factored out common code and
1284                 cleaned up function.  Fixed a bug where if there was an
1285                 error reading from the disk, the number of bytes read
1286                 wasn't reliably set.  (Fixes Debian bug #79163)
1287                 (ext2fs_file_write): Factored out common code and made
1288                 function more efficient; if writing a full block, don't
1289                 bother to do a read-modify-write cycle.
1290
1291 2001-05-04  Theodore Tso  <tytso@valinux.com>
1292
1293         * dirblock.c (ext2fs_read_dir_block): Check for an directory
1294                 record length which isn't a multiple four, and treat that
1295                 as an invalid.  Scan the directory and return an error
1296                 (EXT2_ET_DIR_CORRUPTED) if the directory records are
1297                 corrupted.
1298                 (ext2fs_write_dir_block): If while byte-swapping the
1299                 directory block, if there's an error, abort and return
1300                 EXT2_ET_DIR_CORRUPTED.
1301
1302 2001-05-02  Theodore Tso  <tytso@valinux.com>
1303
1304         * ext2fs.h (EXT2_FLAG_IMAGE_FILE): Add new flag, and add
1305                 image_header field in the ext2_filsys structure
1306
1307         * block.c (block_iterate_ind, block_iterate_dind, block_iterate_tind): 
1308         * inode.c (ext2fs_read_inode): 
1309         * rw_bitmaps.c (read_bitmaps): 
1310         * openfs.c (ext2fs_open): Add support for EXT2_FLAG_IMAGE_FILE
1311
1312         * imager.c (ext2fs_image_bitmap_read): Fix bug in imager to make
1313                 sure the full bitmap is saved.
1314
1315 2001-05-01  Theodore Tso  <tytso@valinux.com>
1316
1317         * e2image.h (struct ext2_image_hdr): Add space for the device name
1318                 in the image header.
1319
1320         * dir_iterate.c (ext2fs_process_dir_block): Add a double-check to
1321                 make sure the rec_len is a multiple of 4, to prevent
1322                 bus-errors on architectures which care about mis-aligned
1323                 pointer references.
1324
1325 2001-04-25  Theodore Tso  <tytso@valinux.com>
1326
1327         * getsize.c (ext2fs_get_device_size): Use an unsigned long to
1328                 query the device sizes using the BLKGETSIZE ioctl.
1329
1330 2001-04-16  Theodore Tso  <tytso@valinux.com>
1331
1332         * ismounted.c (check_mntent): Check /proc/mounts on Linux systems
1333                 before checking /etc/mtab.  The EXT2_MF_READONLY flag is
1334                 now set from the /etc/mtab options field for all
1335                 filesystems, not just the root filesystem.  Add debugging
1336                 code to make it easier to test ext2fs_check_if_mounted().
1337
1338         * mkjournal.c (ext2fs_create_journal_superblock): Add safety
1339                 check; return an error if there's an attempt to create a
1340                 journal less than 1024 filesystem blocks.
1341
1342         * ext2_err.et.in, mkjournal.c: Change EXT2_JOURNAL_NOT_BLOCK and
1343                 EXT2_NO_JOURNAL_SB to be EXT2_ET_*.
1344
1345 2001-02-20  Theodore Tso  <tytso@valinux.com>
1346
1347         * bitops.h (ext2fs_swab16, ext2fs_swab32): Add i386 assembly
1348                 inline functions.
1349
1350         * tst_byteswap.c: New function to test the byteswap functions.
1351                 Add to regression test suite.
1352
1353 2001-02-08  Theodore Tso  <tytso@valinux.com>
1354
1355         * e2image.h (struct ext2_image_hdr): Fix type for fs_hostname
1356
1357 2001-02-07  Theodore Tso  <tytso@valinux.com>
1358
1359         * mkjournal.c (ext2fs_create_journal_superblock): Fix the setting
1360                 of s_first for external devices to always be 1, since
1361                 jsb->s_first is always relative to the start of the
1362                 journal superblock.  Use htonl(1) when setting s_nr_users.
1363
1364 2001-01-17  Theodore Ts'o  <tytso@valinux.com>
1365
1366         * mkjournal.c (ext2fs_add_journal_device): Fix bug where the
1367                 device number of the filesystem (instead of the journal)
1368                 was being dropped into s_journal_dev.
1369
1370 2001-01-15  Theodore Ts'o  <tytso@valinux.com>
1371
1372         * initialize.c (ext2fs_initialize): Add support for initializing
1373                 the ext2 superblock for external journal devices.  This
1374                 basically means we don't bother to allocate any block
1375                 group descriptors.
1376
1377         * openfs.c (ext2fs_open): Only open external journal devices if
1378                 the new flag EXT2_FLAG_JOURNAL_DEV_OK is passed to
1379                 ext2fs_open.  When opening such devices, don't try to read
1380                 the block group descriptors, since they're not there.
1381
1382         * ext2_err.et.in (EXT2_NO_JOURNAL_SB): Add new error code 
1383         
1384         * mkjournal.c: Export a new function,
1385                 ext2fs_create_journal_superblock(), which allocates and
1386                 returns a buffer containing a journal superblock.  This is
1387                 needed by mke2fs to create an external journal.  Rewrote
1388                 ext2fs_add_journal_device() so that it no longer creates
1389                 the external journal, but rather adds a filesystem to an
1390                 existing external journal.  It handles all of the UUID
1391                 manipulation.
1392
1393         * ext2fs.h: List the EXT3_FEATURE_JOURNAL_DEV as a flag supported
1394                 by the library.  Define the EXT2_FLAG_JOURNAL_DEV_OK.
1395                 Changed function prototype for ext2fs_add_journal_device().
1396                 
1397 2001-01-14  Theodore Ts'o  <tytso@valinux.com>
1398
1399         * closefs.c (ext2fs_flush): Don't write out anything beyond the
1400                  primary superblock if EXT2_INCOMPAT_JOURNAL_DEV is
1401                  listed.
1402
1403 2001-01-12  Theodore Ts'o  <tytso@valinux.com>
1404
1405         * imager.c: Fix gcc -Wall complaints and a series of bugs where
1406                 retval wasn't set correctly.  (Thanks to Andreas Dilger
1407                 for pointing this out.)
1408
1409 2001-01-11    <tytso@snap.thunk.org>
1410
1411         * flushb.c (ext2fs_sync_device): New function which centralizes
1412                 all of the places which might try to use the BLKFLSBUF
1413                 or FDFLUSH ioctls (and usually failing to define them
1414                 since the system header files don't usually do this for
1415                 us, and we're trying to avoid usage of kernel include
1416                 files now).
1417
1418 2001-01-10    <tytso@snap.thunk.org>
1419
1420         * alloc.c, bb_inode.c, bitmaps.c, bitops.h, block.c, bmap.c, 
1421                 bmove.c, brel.h, cmp_bitmaps.c, dblist.c, dblist_dir.c, 
1422                 dir_iterate.c, expanddir.c, ext2fs.h, ext2fsP.h, fileio.c,
1423                 finddev.c, get_pathname.c, icount.c, inode.c, irel.h, 
1424                 irel_ma.c, ismounted.c, link.c, lookup.c, mkdir.c, 
1425                 mkjournal.c, namei.c, newdir.c, read_bb_file.c, test_io.c,
1426                 tst_iscan.c, unix_io.c, unlink.c: Change use of ino_t to
1427                 ext2_ino_t, to protect applications that attempt to
1428                 compile -D_FILE_OFFSET_BITS=64, since this inexplicably
1429                 changes ino_t(!?).  So we use ext2_ino_t  to avoid an
1430                 unexpected ABI change.
1431
1432 2001-01-05    <tytso@snap.thunk.org>
1433
1434         * dirblock.c (ext2fs_read_dir_block): Fix a potential case where
1435                 we may overrun allocated memory in case of a corrupted
1436                 filesystem (or an e2fsck test case :-) when byte-swapping
1437                 the directory block.
1438
1439         * ext2fs.h: Indent the #warning to fix gcc -Wall complaint.
1440
1441         * mkjournal.c (ext2fs_add_journal_device): Fix various gcc -Wall
1442                 complaints including a missing return 0 at the end of
1443                 ext2fs_add_journal_device.
1444
1445 2001-01-03    <tytso@snap.thunk.org>
1446
1447         * Makefile.in: Link in libe2p when creating libext2fs as a shared
1448                 library, since mkjournal.c now references fsetflags().
1449
1450         * mkjournal.c (ext2fs_add_journal_inode): Folded in Andreas
1451                 Dilger's changes (with fixups) to allow on-line creation
1452                 of a journal file.
1453
1454         * ext2fs.h, closefs.c (ext2fs_flush): Add new flag,
1455                 EXT2_FLAG_SUPER_ONLY, which the close routines to only
1456                 update the superblock, and not the group descriptors.
1457
1458 2000-12-30  Andreas Dilger  <adilger@turbolinux.com>
1459
1460         * ismounted.c: add ext2fs_check_mount_point() function, which will
1461                 optionally return the mount point of a device if mounted
1462
1463 2000-12-14  Andreas Dilger  <adilger@turbolinux.com>
1464
1465         * mkjournal.c: rename ext2fs_add_journal_fs() to the more descriptive
1466                 ext2fs_add_journal_inode()
1467
1468 2001-01-01    <tytso@snap.thunk.org>
1469
1470         * ext2fs.h: Remove definition of ext2fs_sb.  Note: this may break
1471                 source (but not binary) compatibility of some users of the
1472                 ext2 library.  They should just simply do a global search
1473                 and replace of struct ext2fs_sb with struct
1474                 ext2_super_block, and use their own private copy of
1475                 ext2_fs.h if they aren't already.
1476
1477         * closefs.c, initialize.c, link.c, newdir.c, openfs.c, swapfs.c:
1478                 Replace use of ext2fs_sb with ext2_super_block.
1479
1480 2000-12-31    <tytso@snap.thunk.org>
1481
1482         * ext2fs.h: Cleaned up header file by removing definitions of
1483                 feature flags that might not have been defined in older
1484                 ext2 header files.  Now that we're using our own
1485                 include/linux/ext2fs.h header file, this can never happen.
1486
1487         * jfs_dat.h: Removed old header file which is no longer needed.
1488
1489 2000-12-13  Theodore Ts'o  <tytso@valinux.com>
1490
1491         * closefs.c (ext2fs_update_dynamic_rev): New function suggested
1492                 by Andreas Dilger to update the filesystem revision to
1493                 EXT2_DYNAMIC_REV.
1494
1495         * swapfs.c (ext2fs_swap_super): Add byte swapping for the journal
1496                 fields.
1497
1498 2000-12-09    <tytso@snap.thunk.org>
1499
1500         * ext2fs.h, mkjournal.c (ext2fs_add_journal_inode,
1501                 ext2fs_add_journal_device): Add a new argument to the APIs
1502                 of these function, which is a flags word.  This is used to
1503                 allow the creation of a V1 superblock for those folks who
1504                 are using ext3 0.3b in production.  Note, the user-land
1505                 interface for getting at this flag won't be documented, as
1506                 the V1 superblock is deprecated.
1507
1508         * mkjournal.c (init_journal_superblock): Sync Stephen's changes
1509                 which creates a V2 superblock instead of a V1 superblock.
1510
1511 2000-11-21    <tytso@snap.thunk.org>
1512
1513         * test_io.c (test_write_blk, test_write_byte): Fix typos pointed
1514                 out by Andreas Dilger.
1515
1516 2000-11-05    <tytso@snap.thunk.org>
1517
1518         * imager.c (ext2fs_image_{inode,super,bitmap}_{read,write},
1519                 ext2_fs.h, Makefile.in: New file that has routines that
1520                 save ext2fs metadata to a file.
1521
1522         * ext2_err.et.in (EXT2_ET_MAGIC_E2IMAGE): New error code assigned.
1523
1524         * e2image.h: New file which defines the file format for the ext2
1525                 image file.  (Saved copy of ext2 metadata to a file as a
1526                 saving throw against worst-case damage.)
1527
1528 2000-11-01    <tytso@snap.thunk.org>
1529
1530         * inode.c (ext2fs_flush_icache): Add new function
1531                 ext2fs_flush_icache() which flushes the internal inode
1532                 cache.  Applications which modify the inode table blocks
1533                 directly must call this function.
1534
1535 2000-10-26    <tytso@snap.thunk.org>
1536
1537         * mkjournal.c: Add #include of netinet/in.h, since Solaris
1538                 requires it for ntohl().
1539
1540         * ext2_io.h (io_channel_write_byte): Add new interface to allow
1541                 callers to write specific byte ranges.  This is an
1542                 optional interface, which not all IO channels may
1543                 implement.
1544
1545         * unix_io.c (unix_write_byte):
1546         * test_io.c (test_write_byte): Add implementation of the
1547                 write_byte function.
1548
1549         * closefs.c (write_primary_superblock, ext2fs_flush): Add a new
1550                 function which writes the primary superblock.  If the IO
1551                 channel supports writing raw bytes directly, only fields
1552                 which were modified are written to the disk.  This makes
1553                 it safe(r) to use utilities like tune2fs on a mounted
1554                 filesystem. 
1555
1556         * freefs.c (ext2fs_free): Free the original superblock if it is
1557                 available. 
1558
1559         * openfs.c (ext2fs_open): Store a copy of the original superblock
1560                 when opening it.
1561
1562         * ext2fs.h: Add a field to store the original superblock in the
1563                 ext2 context structure.
1564
1565 2000-10-24    <tytso@snap.thunk.org>
1566
1567         * llseek.c: Add #ifdef's for IA64 (it's a 64-bit platform, so we
1568                 don't need to use llseek).
1569
1570 2000-10-24    <tytso@valinux.com>
1571
1572         * Makefile.in, ext2fs.h, jfs_dat.h, mkjournal.c: Add functions for
1573                 creating an ext3 journal on a filesystem.
1574
1575 2000-08-21    <tytso@valinux.com>
1576
1577         * ext2_err.et.in (EXT2_JOURNAL_NOT_BLOCK): Add new error code.
1578
1579 2000-08-22    <tytso@valinux.com>
1580
1581         * unix_io.c: Make massive changes to support a multiple block
1582                 writethrough cacheing.
1583
1584         * ext2_io.h: Added flags field to the io_channel structure.
1585
1586 2000-08-19    <tytso@valinux.com>
1587
1588         * finddev.c, ext2fs.h, Makefile.in: Add new file, finddev.c, which
1589                 provides the function ext2fs_find_block_device().  This
1590                 function returns the pathname to a block device, given its
1591                 device number.
1592
1593 2000-07-13    <tytso@valinux.com>
1594
1595         * Release of E2fsprogs 1.19
1596
1597 2000-07-07  Theodore Ts'o  <tytso@valinux.com>
1598
1599         * ext2fs.h (EXT2_LIB_FEATURE_INCOMPAT_SUPP): Add
1600                 EXT3_FEATURE_INCOMPAT_RECOVER (aka needs_recovery) to the
1601                 list of filesystem flags supported by the library.
1602
1603 2000-07-04  Theodore Ts'o  <tytso@valinux.com>
1604
1605         * ext2fs.h: Update to include latest journalling additions to the
1606                 superblock.
1607
1608         * dll/jump.funcs: Add new jumptable entries for
1609                 ext2fs_write_bb_FILE, ext2fs_read_bb_FILE2, and
1610                 ext2fs_badblocks_equal.
1611
1612         * tst_badblocks.c: Update test program to test
1613                 ext2fs_read_bb_FILE2 and ext2fs_write_FILE.
1614
1615         * write_bb_file.c (ext2fs_write_bb_FILE): New function which
1616                 writes out bad blocks list to a file.
1617
1618         * read_bb_file.c (ext2fs_read_bb_FILE2): Add new function which
1619                 changes the callback function to take two additional
1620                 arguments; a private blind pointer supplied by the caller,
1621                 and pointer to a char * containing a pointer to the
1622                 invalid string.
1623
1624         * badblocks.c (ext2fs_badblocks_equal): Add new function which
1625                 returns true if two badblocks list are equal.
1626
1627         * Makefile.in: Remove explicit link of -lc in the shared library.
1628                 (It shouldn't be necessary, and is harmful in some cases).
1629
1630 2000-06-10  Theodore Ts'o  <tytso@valinux.com>
1631
1632         * getsize.c (main): Add debugging code under #ifdef DEBUG
1633
1634 2000-05-27  Theodore Ts'o  <tytso@valinux.com>
1635
1636         * mkdir.c (ext2fs_mkdir): Read the parent directory's inode
1637                 earlier, so that if there's an error reading it, we can
1638                 more cleanly back out of the operation.
1639
1640 2000-05-25    <tytso@snap.thunk.org>
1641
1642         * getsize.c (ext2fs_get_device_size): Use open64() instead of
1643                 open() if it exists.  Under linux, manually define the
1644                 ioctl for BLKGETSIZE if it isn't already defined and it's
1645                 safe to do so.
1646
1647         * unix_io.c (unix_open): Use open64() instead of open() if it
1648                 exists. 
1649
1650         * llseek.c: Simplify header includes of unistd.h.  If lseek64 is
1651                 available (and prototypes are defined) use it in
1652                 preference to llseek.
1653
1654         * Makefile: Add hack dependency rule so that parallel makes work
1655                 correctly. 
1656
1657 2000-05-18  Theodore Ts'o  <tytso@valinux.com>
1658
1659         * ext2fs.h: Add appropriate ifdef's to support C++ compilation.
1660
1661 2000-04-03  Theodore Ts'o  <tytso@valinux.com>
1662
1663         * block.c: Readibility tweak in conditionals involving
1664                 ctx->fs->flags.
1665
1666         * ext2fs.h: Use AUTOCONF SIZEOF_* macros if available to determine
1667                 how to define __s64 and __u64.  Turn off "compression is
1668                 experimental" warning if the cpp macro
1669                 I_KNOW_THAT_COMPRESSION_IS_EXPERIMENTAL is defined.
1670
1671 2000-02-11    <tytso@snap.thunk.org>
1672
1673         * ext2fs.h: Define EXT2FS_COMPRESSED_BLKADDR and HOLE_BLKADDR.
1674                 Conditionally include Compression as a supported type if
1675                 ENABLE_COMPRESSION (via --enable-compression) is turned on.
1676
1677         * swapfs.c (ext2fs_swap_super): Swap the compression usage bitmap.
1678
1679 2000-02-08    <tytso@snap.thunk.org>
1680
1681         * bitops.h (ext2fs_mark_generic_bitmap, ext2fs_unmark_generic_bitmap,
1682                 ext2fs_mark_block_bitmap, ext2fs_unmark_block_bitmap,
1683                 ext2fs_mark_inode_bitmap, ext2fs_unmark_inode_bitmap):
1684                 Change to return the previous state of the bit that is
1685                 being marked or unmarked.  For speed optimization.
1686         
1687 2000-02-02  Theodore Ts'o  <tytso@valinux.com>
1688
1689         * getsize.c, ismounted.c: Remove unneeded include of linux/fs.h
1690
1691         * swapfs.c: Remove #ifdef HAVE_EXT2_INODE_VERSION since it's not
1692                 needed any more; we know it will always be i_generation.
1693                 Add support for swapping the high bits of the uid and gid.
1694
1695 1999-11-19    <tytso@valinux.com>
1696
1697         * mkdir.c (ext2fs_mkdir): Only update the parent's inode link
1698                 counts if the link was successful.  Patch suggested by
1699                 jeremy@goop.org.
1700
1701         * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
1702                 the source directory.
1703
1704 1999-11-10    <tytso@valinux.com>
1705
1706         * Release of E2fsprogs 1.18
1707
1708 1999-11-08    <tytso@valinux.com>
1709
1710         * Makefile.in (tst_badblocks): Add freefs.o to the object list,
1711                 since ext2fs_badblocks_list_free was moved to freefs.c.
1712
1713         * tst_badblocks.c: Use the newer badblocks API names.  Add
1714                 duplicate blocks to the test inputs to test dealing with
1715                 adding blocks which are already in the badblocks list.
1716
1717         * badblocks.c (ext2fs_badblocks_list_add): If appending to the end
1718                 of the list, use a shortcut O(1) operations instead of an
1719                 O(n) operation.  (Idea suggested by David Beattie.)
1720
1721         * freefs.c (ext2fs_free): Use ext2fs_badblocks_list_free() instead
1722                 of badblocks_list_free(), to save a procedure call.
1723
1724 1999-10-26    <tytso@valinux.com>
1725
1726         * Release of E2fsprogs 1.17
1727
1728 1999-10-26    <tytso@valinux.com>
1729
1730         * ext2fs.h: Add kludge to deal with the fact that egcs cpp doesn't
1731                 seem to handle ~0UL the same way as they used to.
1732
1733 1999-10-25    <tytso@valinux.com>
1734
1735         * nt_io.c (_OpenNtName): Open the device using
1736                 FILE_SYNCHRONOUS_IO_NONALERT instead of
1737                 FILE_SYNCHRONOUS_IO_ALERT
1738                 (nt_open): At the end of the device open routine, unlock 
1739                 the drive but do not dismount it.
1740
1741         * initialize.c (CREATOR_OS): Use __GNU__ instead of __gnu__ to
1742                 detect the Hurd OS.
1743
1744 1999-10-22    <tytso@valinux.com>
1745
1746         * Release of E2fsprogs 1.16
1747
1748 1999-10-22    <tytso@valinux.com>
1749
1750         * mkdir.c (ext2fs_mkdir): Pass EXT2_FT_DIR flag to ext2fs_link().
1751
1752         * link.c (ext2fs_link): This call now uses the low three bits of
1753                 the flags parameter to pass the directory filetype
1754                 information; it will set the directory entry FILETYPE
1755                 information if the filesystem supports it.
1756
1757         * newdir.c (ext2fs_new_dir_block): If the FILETYPE superblock
1758                 option is set, then create the '.' and '..' entries with
1759                 the filetype set to EXT2_FT_DIR.
1760
1761 1999-09-24    <tytso@valinux.com>
1762
1763         * nt_io.c: New file which supports I/O under Windows NT.
1764
1765 1999-09-07    <tytso@valinux.com>
1766
1767         * ext2fs.h: Add new fields for journalling and define new
1768                 feature bits used by newer filesystems: IMAGIC_INODES,
1769                 HAS_JOURNAL, RECOVER.
1770
1771         * expanddir.c (ext2fs_expand_dir, expand_dir_proc): Change where
1772                 we update the inode block count and size files so that the
1773                 block count field is updated correctly when we create an
1774                 indirect block.
1775
1776 1999-07-18  Theodore Ts'o  <tytso@valinux.com>
1777
1778         * Release of E2fsprogs 1.15
1779
1780 1999-06-23    <tytso@valinux.com>
1781
1782         * swapfs.c (ext2fs_swap_inode): Add compatibility for Linux 2.3
1783                 kernels that use i_generation instead of i_version.  Patch
1784                 supplied by Jon Bright <sircus@sircus.demon.co.uk>.
1785
1786 1999-06-21    <tytso@valinux.com>
1787
1788         * dir_iterate.c (ext2fs_process_dir_block): Check for corrupted
1789                 directory entry before calling the callback function.
1790                 This should prevent some core dumps of insufficiently
1791                 paranoid callback functions.
1792
1793 1999-05-29    <tytso@rsts-11.mit.edu>
1794
1795         * ext2fs.h: Add feature definition for AFS IMAGIC inodes.
1796
1797         * fileio.c (ext2fs_file_open): Remove obsolete comment stating
1798                 that we don't handle writing yet (we do).  Fixed bug where
1799                 we weren't allocating a big enough buffer for ext2_bmap.
1800
1801 1999-05-03    <tytso@rsts-11.mit.edu>
1802
1803         * openfs.c (ext2fs_open): Check to make sure that the number of
1804                 blocks per group is not zero --- if so, it must be a bad
1805                 superblock!
1806
1807 1999-01-09  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1808
1809         * Release of E2fsprogs 1.14
1810
1811 1999-01-07  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1812
1813         * inode.c (ext2fs_read_inode, ext2fs_write_inode): Check to see if
1814                 the inode number is zero; if it's zero, return
1815                 EXT2_ET_BAD_INODE_NUM.
1816
1817 1998-12-30  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1818
1819         * initialize.c (ext2fs_initialize): Use EXT2_FIRST_INODE instead
1820                 of EXT2_FIRST_INO to ensure compatibility with Linux 1.2
1821                 header files.
1822
1823 Mon Jan  4 02:32:09 1999  Theodore Y. Ts'o  <tytso@mit.edu>
1824
1825         * llseek.c (ext2fs_llseek): Change ext2fs_llseek() in the
1826                 non-Linux case to use EINVAL by default, unless it isn't
1827                 defined, in which case we use EXT2_ET_INVALID_ARGUMENT
1828                 instead.
1829
1830 1998-12-15  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1831
1832         * Release of E2fsprogs 1.13
1833
1834 1998-12-03  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1835
1836         * Makefile.in: Updated dependencies.
1837
1838 1998-09-22  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1839
1840         * initialize.c (ext2fs_initialize): Make sure that we allocate
1841                 enough inodes so that we can make a valid filesystem.
1842
1843 1998-09-02  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1844
1845         * rw_bitmaps.c: Fixed signed/unsigned warnings.
1846
1847         * fileio.c (ext2fs_file_set_size): Remove unneeded extern from the
1848                 function declaration.
1849
1850         * dblist.c (make_dblist): Add safety check in case the dblist
1851                 pointer passed in is null (in which case, assign it to
1852                 fs->dblist).  Fixed some signed/unsigned warnings.
1853
1854         * bmap.c: Make addr_per_block be of type blk_t to avoid
1855                 signed/unsigned warnings.
1856
1857         * namei.c (ext2fs_follow_link): Remove uneeded extern from the
1858                 function declaration.
1859
1860         * get_pathname.c (get_pathname_proc): Use return value from
1861                 ext2fs_get_mem, instead of checking if &gp->name is
1862                 NULL.
1863
1864         * dir_iterate.c (ext2fs_process_dir_block): 
1865         * dblist_dir.c (ext2fs_dblist_dir_iterate): Remove uneeded extern
1866                 from the function declaration.
1867
1868         * block.c (ext2fs_block_iterate2): If the read_inode call fails,
1869                 return the error directly instead of jumping to the
1870                 cleanup routine, since we don't need to do any cleanup.
1871
1872         * alloc_table.c (ext2fs_allocate_group_table): Make this
1873                 function take a dgrp_t for its group argument.
1874
1875         * ext2fs.h: Make dgrp_t an __u32 type, and make
1876                 fs->desc_group_count be of type dgrp_t.
1877
1878 1998-07-27  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1879
1880         * badblocks.c (ext2fs_badblocks_list_add): Use a bigger increment
1881                 than 10 blocks when we need to expand the size of the
1882                 badblocks list.
1883
1884 1998-07-09  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1885
1886         * Release of E2fsprogs 1.12
1887
1888 1998-06-30  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1889
1890         * closefs.c (ext2fs_flush): Update the s_block_group_nr field as
1891                 appropriate for all of the block group copies, so that
1892                 it's clear where the beginning of the filesystem is on the
1893                 disk.  (For when the partition table gets scrod.)
1894
1895         * ext2fs.h: Change the name of the feature from
1896                 EXT2_FEATURE_INCOMPAT_DIRNAME_SIZE to
1897                 EXT2_FEATURE_INCOMPAT_FILESIZE (to match with the kernel).
1898
1899 1998-06-18  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1900
1901         * inode.c (get_next_blockgroup): Fix bug where if
1902                 get_next_blockgroup() is called early because of a missing
1903                 inode table in a block group, the current_inode counter
1904                 wasn't incremented correctly.
1905
1906 1998-06-16  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1907
1908         * read_bb.c (ext2fs_read_bb_inode): Make function more robust
1909                 against a completely trashed bad block inode.
1910
1911 1998-06-10  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1912
1913         * alloc_tables.c (ext2fs_allocate_group_table): Fix bug so that if
1914                 the stride length hits a bad value, we retry the block
1915                 allocation starting at the beginning of the block group.
1916
1917         * ext2fs.h, bb_inode.c, block.c, bmove.c, dir_iterate.c,
1918                 expanddir.c, ext2fsP.h, read_bb.c: Change blkcnt_t to be
1919                 e2_blkcnt_t to avoid collision with LFS API.
1920
1921 1998-05-01  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1922
1923         * initialize.c (ext2fs_initialize): Initialize s_inodes_count in a
1924                 way that avoids overflows on disk sizes greater than 4GB.
1925
1926 1998-04-28  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1927
1928         * ext2fs.h: Define EXT2_QSORT_TYPE appropriately for the
1929                 return type for comparison functions for qsort.
1930
1931         * dblist.c (dir_block_cmp): Use EXT2_QSORT_TYPE in function
1932                 declaration.
1933
1934 1998-04-26  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1935
1936         * ext2fs.h, bitops.h: Add support for the Watcom C compiler to do
1937                 inline functions.
1938
1939         * ext2fs.h, dosio.c: Use asm/types.h instead of linux/types.h to
1940                 evade a potential problem with glibc's header files trying
1941                 to spike out linux/types.h.
1942
1943         * ext2fs.h (ext2fs_resize_mem): Change the function prototype to
1944                 include the old size of the memory, which is needed for
1945                 some braindamaged memory allocation systems that don't
1946                 support realloc().
1947
1948         * badblocks.c (ext2fs_badblocks_list_add):
1949           bb_inode.c (clear_bad_block_proc):
1950           dblist.c (ext2fs_add_dir_block):
1951           icount.c (insert_icount_el):
1952           irel_ma.c (ima_put):
1953           rs_bitmap.c (ext2fs_resize_generic_bitmap): Update functions to
1954                   pass the old size of the memory to be resized to
1955                   ext2fs_resize_mem(). 
1956
1957 1998-03-30  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1958
1959         * Makefile.in: Change to use new installation directory variables
1960                 convention.  Fix uninstall rules to take $(DESTDIR) into
1961                 account.
1962
1963 1998-03-29  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1964
1965         * ext2fs.h: If __STRICT_ANSI__ is defined and we're on a platform
1966                 with 32 bit longs, then we need to manually define __s64
1967                 and __u64, since the current kernel header files don't
1968                 define these if __STRICT_ANSI__ is defined.  This is a
1969                 problem if we are compiling with full GCC warnings, since
1970                 we do need 64 bit support.
1971         
1972         * Makefile.in (OBJS): Remove bmove.o from files to be built,
1973                 since we're not using ext2fs_move_blocks() and there
1974                 is some question as to its usefulness in its current
1975                 form.
1976
1977         * bmap.c (block_bmap): Remove unused function.
1978
1979         * bmove.c (process_block): Fix -Wall warning.
1980
1981 1998-03-23  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1982
1983         * block.c (ext2fs_block_iterate3): Make the ref_offset field
1984                 contain the offset into the inode.i_blocks array when
1985                 ref_block is zero.  Since we haven't done a formal
1986                 release of e2fsprogs since block_iterate2 was first
1987                 introduced, I removed block_iterate2, and renamed
1988                 block_iterate3 to be block_iterate2.
1989
1990         * bb_inode.c, bmove.c, dblist_dir.c, dir_iterate.c,
1991                 expanddir.c, ext2fs.h, ext2fsP.h, read_bb.c: Change
1992                 use of block_iterate and block_iterate2 to
1993                 block_iterate2 with the new prototype for the
1994                 interator function.  (using blkcnt_t forr blockcount)
1995
1996 1998-03-21  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1997
1998         * ext2fs.h: Add new superblock fields (s_algorithm_usage_bitmap, 
1999                 s_prealloc_blocks, s_prealloc_dir_blocks).  Added
2000                 conditional defines of new features COMPAT_DIR_PREALLOC,
2001                 RO_COMPAT_LARGE_FILE RO_COMPAT_BTREE_DIR,
2002                 INCOMPAT_COMPRESSION, INCOMPAT_DIRNAME_SIZE.  Changed
2003                 the library to declare that we support COMPAT_DIR_PREALLOC, 
2004                 INCOMPAT_DIRNAME_SIZE, RO_COMPAT_LARGE_FILE.
2005
2006         * fileio.c: Rename function ext2fs_file_llseek to be
2007                 ext2fs_file_lseek, which is more accurate.
2008
2009         * block.c: Add new function ext2fs_block_iterate3 which calls
2010                 the iterator function with the blockcount argument of
2011                 type blkcnt_t.  This version of the function is
2012                 allowed to handle large files; the other fucntions are
2013                 not.
2014
2015         * ext2fs.h: Add new type blkcnt_t
2016
2017         * ext2_err.et.in: Add error code EXT2_ET_FILE_TOO_BIG
2018
2019         * block.c (ext2fs_block_iterate2): Fix bug where the block count
2020                 field wasn't getting correctly incremented for sparse
2021                 files when the indirect or doubly-indirect block
2022                 specified in the inode was zero.
2023
2024 Sun Mar  8 22:42:47 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2025
2026         * unlink.c (unlink_proc): 
2027         * lookup.c (lookup_proc): 
2028         * link.c (link_proc): 
2029         * get_pathname.c (get_pathname_proc): 
2030         * dir_iterate.c (ext2fs_process_dir_block): Mask off high 8 bits
2031                 from dirent->name_len, so it can be used for other
2032                 purposes.
2033
2034         * ext2fs.h: Add definition of EXT2_FEATURE_INCOMPAT_DIRNAME_SIZE,
2035                 and indicate that we have support for this incompatible
2036                 option.
2037
2038 Mon Feb 23 08:46:33 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2039
2040         * ext2_err.et.in: Added new error code, EXT2_ET_CANCEL_REQUESTED.
2041
2042 Fri Feb 20 23:58:01 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2043
2044         * dblist.c (ext2fs_get_num_dirs): Improve the estimation of the
2045                 number of directories when the block group information is
2046                 unreliable.
2047
2048 1998-02-20  Theodore Y. Ts'o  <tytso@edt.mit.edu>
2049
2050         * inode.c (ext2fs_get_next_inode): Always do the check to see if the
2051                 inode table is missing so that we catch the case where the
2052                 first block group is missing.
2053
2054         * getsize.c, ismounted.c, unix_io.c: #include errno.h since it's
2055                 needed.
2056
2057 Mon Feb 16 16:16:00 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2058
2059         * ext2_io.h, ext2fs.h: Protect against being included multiple times.
2060
2061         * bmove.c: #include ext2fsP.h instead of "ext2fs/ext2fs.h"
2062
2063         * test_io.c (test_flush): Add a debugging printf when the flush
2064                 method is called.
2065
2066         * rw_bitmaps.c (ext2fs_read_bitmaps): If the bitmaps are already
2067                 read in, return right away.
2068
2069 Sun Feb  1 08:20:24 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2070
2071         * bitops.h: Don't try to do i386 inline asm functions if the
2072                 compiler isn't GCC.
2073
2074         * ext2fs.h: If EXT2_FLAT_INCLUDES is defined, #include e2_types.h,
2075                 instead of linux/types.h, and e2_bitops.h instead of
2076                 ext2fs/bitops.h.
2077
2078         * icount.c, version.c: Don't #include <et/com_err.h>, as it isn't
2079                 necessary. 
2080
2081 Sat Jan 17 13:13:31 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2082
2083         * inode.c (ext2fs_open_inode_scan): Initialize the group variables
2084                 so that we don't need to call get_next_blockgroup() the
2085                 first time around.  Saves a bit of time, and prevents us
2086                 from needing to assign -1 to current_group (which is an
2087                 unsigned value).
2088
2089         * icount.c (insert_icount_el): Cast the estimated number of inodes
2090                 from a float to an ino_t.
2091
2092         * alloc.c, alloc_tables.c, badlbocks.c, bb_compat.c, bb_inode.c,
2093                 bitmaps.c, bitops.c, block.c, bmap.c, bmove.c, brel_ma.c,
2094                 check_desc.c, closefs.c, cmp_bitmaps.c, dblist.c,
2095                 dblist_dir.c, dir_iterate.c, dirblock.c, dupfs.c,
2096                 expanddir.c, ext2fs.h, fileio.c, freefs.c,
2097                 get_pathname.c, getsize.c, icount.c, initialize.c,
2098                 inline.c, inode.c, irel_ma.c, ismounted.c, link.c,
2099                 lookup.c, mkdir.c, namei.c, native.c, newdir.c,
2100                 openfs.c, read_bb.c, read_bb_file.c, rs_bitmap.c,
2101                 rw_bitmaps.c, swapfs.c, test_io.c, tst_badblocks.c,
2102                 tst_getsize.c, tst_iscan.c, unix_io.c, unlink.c,
2103                 valid_blk.c, version.c: If EXT2_FLAT_INCLUDES is
2104                 defined, then assume all of the
2105                 ext2-specific header files are in a flat directory.
2106
2107         * block.c, bmove.c, dirblock.c, fileio.c: Explicitly cast
2108                 all assignments from void * to be compatible with C++.
2109
2110 Tue Jan  6 11:28:15 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2111
2112         * closefs.c (ext2fs_flush): Add a call to io_channel_flush() to
2113                 make sure the contents of the disk are flushed to disk.
2114
2115 Mon Dec 29 14:39:13 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2116
2117         * dblist.c (ext2fs_add_dir_block): Change new to be new_entry to
2118                 avoid C++ namespace clash.
2119
2120         * bitmaps.c (ext2fs_copy_bitmap): Change new to be new_map to
2121                 avoid C++ namespace clash.
2122
2123         * ext2fs.h, bb_inode.c, block.c, bmove.c, brel.h, brel_ma.c,
2124                 irel.h, irel_ma.c, dblist.c, dblist_dir.c, dir_iterate.c,
2125                 ext2fsP.h, expanddir.c, get_pathname.c, inode.c, link.c,
2126                 unlink.c: Change private to be priv_data (to avoid C++
2127                 namespace clash)
2128
2129 Fri Nov 28 09:26:31 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2130
2131         * dblist.c (ext2fs_get_num_dirs): Make ext2fs_get_num_dirs more
2132                 paranoid about validating the directory counts from the
2133                 block group information.
2134
2135         * all files: Don't include stdlib.h anymore; include it in
2136                 ext2_fs.h, since that file requires stdlib.h
2137
2138 Thu Nov 20 16:07:38 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2139
2140         * expanddir.c (ext2fs_expand_dir): Check to make sure the block
2141                 bitmap is loaded, and return an error if it is not.
2142                 (expand_dir_proc): Only use ext2fs_write_dir_block when
2143                 writing a directory block, not when writing out a fresh
2144                 indirect block.
2145
2146 Tue Nov 11 22:46:45 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2147
2148         * Makefile.in, tst_getsize.c: Added new file which is used to test
2149                 the ext2fs_get_device_size function.
2150
2151         * ext2_err.et.in (EXT2_ET_UNIMPLEMENTED): Added new error code.
2152
2153 Sun Nov  2 20:36:13 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2154
2155         * ext2fs.h: Make ext2fs_get_mem take an unsigned argument.
2156
2157         * fileio.c (ext2fs_file_get_size, ext2fs_file_set_size,
2158                 ext2fs_file_get_fs): New functions added.
2159
2160
2161 Fri Oct 31 12:16:52 1997    <tytso@EDT.MIT.EDU>
2162
2163         * bitops.c (ext2fs_warn_bitmap, ext2fs_warn_bitmap2): Don't call
2164                 com_err if OMIT_COM_ERR is defined.
2165
2166 Thu Oct 30 11:33:57 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2167
2168         * Rename new error codes to _ET_ in them for consistency.
2169
2170 Sat Oct 25 00:06:58 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2171
2172         * [all files, basically]: Added definition of ext2fs_get_mem, 
2173                 ext2fs_free_mem, and ext2fs_resize_mem in ext2fs.h, and
2174                 changed all library routines to use these wrapper functions.
2175
2176         * dblist.c, mkdir.c: use EXT2_DIR_EXISTS and EXT2_DB_NOT_FOUND
2177                 instead of the system error messages.
2178         
2179         * ext2_err.et.in: Added new error messages EXT2_DIR_EXISTS and
2180                 EXT2_DB_NOT_FOUND
2181
2182         * ext2fs.h: Added function declarations and constants for bmap.c
2183                 and fileio.c.
2184
2185         * ext2_err.et.in: Added new error messages EXT2_FILE_RO and
2186                 EXT2_ET_MAGIC_EXT2_FILE
2187
2188         * Makefile.in: Added files bmap.c and fileio.c, and temporarily
2189                 commented out brel_ma.c and irel_ma.c
2190
2191         * bmap.c: New file which maps a file's logical block number to its
2192                 physical block number.
2193
2194         * fileio.c: New file which implements simple file reading and
2195                 writing primitives.
2196
2197         * alloc.c (ext2fs_alloc_block): New function which allocates a
2198                 block, zeros it, and updates the filesystem accounting
2199                 records appropriately.
2200
2201 Wed Oct 22 16:47:27 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2202
2203         * ext2_err.et.in: Added new error codes: EXT2_NO_MEMORY,
2204                 EXT2_INVALID_ARGUMENT, EXT2_BLOCK_ALLOC_FAIL,
2205                 EXT2_INODE_ALLOC_FAIL, EXT2_NOT_DIRECTORY
2206
2207         * Change various library files to use these functions instead of
2208                 EINVAL, ENOENT, etc.
2209
2210 Mon Oct 20 19:32:40 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2211
2212         * llseek.c: Check HAVE_LLSEEK_PROTOTYPE to see whether or not we
2213                 need to declare llseek().
2214
2215 Sun Oct 19 18:56:22 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2216
2217         * Rename io.h to be ext2_io.h (avoid namespace collisions)
2218
2219         * Add #ifdef's for HAVE_SYS_STAT_H and HAVE_SYS_TYPES_H
2220
2221 Fri Oct  3 13:35:59 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2222
2223         * llseek.c (ext2fs_llseek): Fix type error for ext2fs_llseek()
2224
2225         * icount.c (ext2fs_icount_validate): 
2226         * bmove.c (process_block): Fix lint error in type for fprintf().
2227
2228 Mon Sep 15 11:45:09 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2229
2230         * inode.c (ext2fs_check_directory): Add support for the callback
2231                 to return the error code EXT2_ET_CALLBACK_NOTHANDLED.
2232
2233 Thu Sep  4 12:28:22 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2234
2235         * bitmaps.c (ext2fs_set_bitmap_padding): New function which sets the
2236                 padding of the bitmap to be all one's.
2237
2238 Wed Sep  3 14:27:30 1997  Theodore Y. Ts'o  <tytso@edt.mit.edu>
2239
2240         * llseek.c: Added missing semicolon to glibc fixup declaration of
2241         llseek().
2242
2243         * bmove.c: Add #include of errno.h
2244
2245 Sat Aug 23 22:47:46 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2246
2247         * Makefile.in (ELF_SO_VERSION): Bump version to be 2.4 since we've
2248                 added a new field to the io_channel (app_data).
2249
2250         * io.h: Add a new element to the io_channel structure, app_data.
2251
2252         * initialize.c, openfs.c: Set io->app_data to point at the
2253                 filesystem handle.
2254
2255 Thu Aug 14 08:14:17 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2256
2257         * io.h: Change the prototype of ext2fs_llseek() to use int's
2258                 instead of unsigned int's.
2259
2260         * llseek.c: Change to allow PIC and !HAVE_LLSEEK.  Add a prototype
2261                 to make life easer for GNU Libc 2.
2262
2263         * rw_bitmaps.c: On the PowerPC, the big-endian variant of the ext2
2264                 filesystem has its bitmaps stored as 32-bit words with bit
2265                 0 as the LSB of each word.  Thus a bitmap with only bit 0
2266                 set would be, as a string of bytes, 00 00 00 01 00 ...  To
2267                 cope with this, we byte-reverse each word of a bitmap if
2268                 we have a big-endian filesystem, that is, if we are *not*
2269                 byte-swapping other word-sized numbers.
2270
2271 Mon Aug 11 03:30:48 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2272
2273         * dosio.c: New file to do DOS/BIOS disk accesses.
2274
2275         * namei.c (open_namei): Make pathlen be of type size_t.
2276
2277         * llseek.c: Always #include stdlib.h since it's need to define
2278                 size_t.  
2279
2280         * io.h: Use errcode_t for magic numbers.
2281
2282         * icount.c (get_icount_el): Use size_t where appropriate
2283         
2284         * dupfs.c (ext2fs_dup_handle): 
2285         * dblist.c (dir_block_cmp): Use size_t where appropriate.
2286
2287         * read_bb.c (ext2fs_read_bb_inode): 
2288         * cmp_bitmaps.c (ext2fs_compare_inode_bitmap): Use blk_t, ino_t
2289                 and size_t where appropriate.
2290
2291         * closefs.c (ext2fs_flush): Use dgrp_t instead of int where
2292                 appropriate.
2293
2294         * openfs.c (ext2fs_open): 
2295         * check_desc.c (ext2fs_check_desc): Use blk_t instead of int where
2296                 appropriate.
2297
2298         * rw_bitmaps.c (read_bitmaps): 
2299         * irel_ma.c: 
2300         * inode.c (ext2fs_write_inode): 
2301         * initialize.c (ext2fs_initialize):
2302         * brel_ma.c: Fix to make be 16-bit safe.
2303
2304         * link.c (ext2fs_link): 
2305         * unlink.c (ext2fs_unlink):
2306         * lookup.c (lookup_proc): 
2307         * ismounted.c (ext2fs_check_if_mounted): 
2308         * block.c (xlate_func): Add #pragma argsused for Turbo C.
2309
2310 Sun Aug 10 10:05:22 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2311
2312         * block.c (ext2fs_block_iterate2): Use retval which is a errcode_t
2313                 type.
2314
2315         * bitmaps.c (make_bitmap): Use size_t instead of int where
2316                 appropriate.
2317
2318         * bb_inode.c (set_bad_block_proc): Add #pragma argsused for Turbo C.
2319
2320         * alloc.c (ext2fs_new_inode): Use ino_t instead of int for the
2321                 group number.
2322
2323         * get_pathname.c: Use ino_t instead of int where appropriate.
2324
2325         * ext2fs.h: Make the magic structure element be errcode_t instead
2326                 of int.
2327
2328         * alloc.c alloc_tables.c badblocks.c bb_compat.c bb_inode.c
2329                 bitmaps.c block.c bmove.c brel_ma.c check_desc.c closefs.c
2330                 cmp_bitmaps.c dblist.c dblist_dir.c dir_iterate.c
2331                 dirblock.c dupfs.c expanddir.c freefs.c get_pathname.c
2332                 icount.c initialize.c inline.c inode.c irel_ma.c link.c
2333                 llseek.c lookup.c mkdir.c namei.c newdir.c read_bb.c
2334                 read_bb_file.c rs_bitmap.c rw_bitmaps.c swapfs.c 
2335                 test_io.c tst_badblocks.c tst_iscan.c unix_io.c unlink.c
2336                 valid_blk.c version.c: Add an #ifdef for HAVE_UNISTD_H
2337
2338 Tue Jun 17 01:33:20 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2339
2340         * unix_io.c (unix_read_blk): If ext2fs_llseek() fails, but errno
2341                 is zero, then return EXT2_IO_LLSEEK_FAILED.
2342
2343         * ext2_err.et.in: Add a new error code, EXT2_IO_LLSEEK_FAILED.
2344
2345         * Release of E2fsprogs 1.11
2346
2347 Mon Jun 16 23:53:06 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2348
2349         * dblist.c (ext2fs_dblist_count): Added new function which returns
2350                 the number of directory blocks in dblist.
2351
2352 Sat Jun 14 01:39:13 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2353
2354         * unix_io.c (unix_flush): Make the io_channel flush function do a
2355                 fsync to flush the kernel buffers to disk.
2356
2357 Wed Jun 11 18:25:31 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2358
2359         * inode.c (ext2fs_inode_scan_goto_blockgroup): Fix bug; the
2360                 current inode number wasn't being set by the
2361                 goto_blockgroup function.
2362
2363 Mon Jun  9 10:45:48 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2364
2365         * bmove.c (ext2fs_move_blocks): New function which takes a bitmap
2366                 of blocks which need to be moved, and moves those blocks
2367                 to another location in the filesystem.
2368
2369         * rs_bitmap.c (ext2fs_resize_generic_bitmap): When expanding a
2370                 bitmap, make sure all of the new parts of the bitmap are
2371                 zero. 
2372
2373 Sun Jun  8 16:24:39 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2374
2375         * bitmaps.c (ext2fs_copy_bitmap): Fix bug; the destination bitmap
2376                 wasn't being returned to the caller.
2377
2378         * alloc_tables.c (ext2fs_allocate_group_table): Add new function
2379                 ext2fs_allocate_group_table() which sets the group tables
2380                 for a particular block group.  The relevant code was
2381                 factored out of ext2fs_allocate_tables().
2382
2383         * dblist.c (make_dblist): Adjust the initial size of the directory
2384                 block list to be a bit more realistic (ten plus twice the
2385                 number of directories in the filesystem).
2386
2387 Thu May  8 22:19:09 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2388
2389         * badblocks.c (ext2fs_badblocks_list_test): Fix bug where
2390                 ext2fs_badblocks_list_test would test the list (and exceed
2391                 array boundaries) if there were no bad blocks on the bad
2392                 blocks list.  (Showed up when user tried: mke2fs -c -b 4096).
2393
2394 Thu Apr 24 12:16:42 1997  Theodre Ts'o  <tytso@localhost.mit.edu>
2395
2396         * Release of E2fsprogs version 1.10
2397
2398 Thu Apr 24 10:13:42 1997  Theodre Ts'o  <tytso@localhost.mit.edu>
2399
2400         * alloc_tables.c (ext2fs_allocate_tables): Correctly place the
2401                 inode and block bitmaps based on the RAID 0 stride
2402                 parameter (which is passed by mke2fs).
2403
2404         * ext2fs.h: Add "stride" parameter to ext2_filsys, to be used by
2405                 mke2fs to communicate the stride length to
2406                 ext2fs_allocate_tables()
2407
2408 Wed Apr 23 21:50:42 1997  Theodre Ts'o  <tytso@localhost.mit.edu>
2409
2410         * initialize.c (ext2fs_initialize): Fix to compile under Linux 1.2
2411                 systems.  (We can't assume that the new filesystem types
2412                 are supported.)
2413
2414 Wed Apr 23 18:40:53 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2415
2416         * alloc_tables.c (ext2fs_allocate_tables): Make sure that we
2417                 allocate the inode and block bitmaps inside block group at
2418                 all times.
2419
2420 Mon Apr 21 00:06:28 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2421
2422         * alloc.c (ext2fs_new_block): Fix bug where if goal==0 and the
2423                 filesystem has no free blocks, ext2fs_new_block would loop
2424                 forever.
2425
2426         * dupfs.c (ext2fs_dup_handle): Duplicate an ext2 filesystem handle
2427
2428         * freefs.c (ext2fs_free_inode_cache): Decrement refcount and only
2429                 free if refcount goes to zero.
2430
2431         * inode.c (create_icache): Initialize refcount to 1.
2432
2433         * ext2fsP.h: Added refcount to ext2_inode_cache
2434
2435         * dblist.c (ext2fs_copy_dblist): New function to copy a directory
2436                 block list.
2437
2438         * badblocks.c (ext2fs_badblocks_copy): New function to copy a
2439                 badblocks structure.
2440
2441 Sun Apr 20 23:19:51 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2442
2443         * bitmaps.c (ext2fs_copy_bitmap): New function to copy a bitmap.
2444
2445         * unix_io.c, test_io.c (unix_open, test_open): Initialize the
2446                 refcount to 1.
2447                 (unix_close, test_close): Decrement the refcount and only
2448                 close the io_channel if the refcount goes to 0.
2449
2450         * io.h: Add refcount to the io_channel structure.  Add new macro
2451                 interface io_channel_bumpcount() to bump the refcount.
2452
2453 Thu Apr 17 20:25:03 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2454
2455         * inode.c (ext2fs_read_inode, ext2fs_write_inode): Use the inode
2456                 cache in the filesystem handle, instead of the inode cache
2457                 in a static variable.
2458
2459         * freefs.c: Added static function to free the inode cache (called by
2460                 ext2fs_free). 
2461
2462         * ext2fsP.h: Added definition of the ext2_inode_cache structures.
2463
2464         * ext2fs.h: Added pointer to the inode_cache structure.
2465
2466         * block.c (block_iterate_ind, block_iterate_dind, 
2467                 block_iterate_tind): If there are holes in the indirect,
2468                 doubly indirect, or triply indirect blocks, increment the
2469                 block count field automatically.
2470
2471 Thu Apr 17 12:23:38 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2472
2473         * Release of E2fsprogs version 1.09
2474
2475 Mon Apr 14 20:38:56 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2476
2477         * version.c (ext2fs_parse_version_string): Check the passed in
2478                 version string (instead of the hard-coded one).
2479
2480         * alloc_tables.c (ext2fs_allocate_tables): If the last block is
2481                 greater filesystem size, clamp it to prevent allocating a
2482                 block or inode bitmap beyond the filesystem.
2483
2484         * initialize.c (ext2fs_initialize): Fix bug where the metatdata
2485                 overhead calculation was accidentally removed.
2486
2487 Fri Apr 11 18:56:26 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2488
2489         * Release of E2fsprogs version 1.08
2490
2491 Thu Apr 10 13:15:15 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2492
2493         * dblist.c (ext2fs_set_dir_block): New function which sets the
2494                 block of a dblist entry, given the directory inode and
2495                 blockcnt.
2496
2497 Sat Apr  5 12:42:42 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2498
2499         * alloc_tables.c (ext2fs_allocate_tables): Allocate the bitmap and
2500                 inode bitmaps at staggered locations across the block
2501                 groups, to avoid concentrating the bitmaps on a small
2502                 number of disks when using striped RAID arrays.
2503
2504         * initialize.c (ext2fs_initialize): By default, choose the maximum
2505                 possible number of blocks per group (based on the size of
2506                 the bitmaps in the blocksize).
2507
2508 Fri Apr  4 11:28:16 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2509
2510         * initialize.c (ext2fs_initialize): Add support for
2511                 EXT2_COMPAT_SPARSE_SUPER feature.
2512
2513         * closefs.c (ext2fs_bg_has_super): New function to determine
2514                 whether or a particular block group should have a
2515                 superblock and block group descriptor.  Used for the
2516                 EXT2_COMPAT_SPARSE_SUPER feature is turned on.
2517                 (ext2fs_flush):  Check ext2fs_bg_has_super to see whether
2518                 or not the superblock should be written out for the block
2519                 group. 
2520
2521         * ext2fs.h (EXT2_COMPAT_SPARSE_SUPER): Define compatibility flag
2522                 for sparse duplicate superblocks.
2523
2524         * version.c (ext2fs_get_library_version): New function which
2525                 returns the library version.
2526
2527         * version.c (ext2fs_parse_version_string): New function which
2528                 parses a version string and returns a version number,
2529                 so application programs can compare version numbers as
2530                 integers.
2531
2532 Wed Mar 26 00:43:52 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2533
2534         * icount.c (ext2fs_create_icount): Change function so that it also
2535                 takes a new argument which contains a "hint" icount
2536                 structure.  This "hint" icount allows the create function
2537                 to set up the sorted list in advance.  This reduces
2538                 significantly the amount of data moving needed to insert
2539                 these inodes into the list later.
2540         
2541         * icount.c (ext2fs_icount_validate): New function which validates
2542                 that the icount structure's rep invariant.
2543
2544         * icount.c (get_icount_el): Completely revamped implementation
2545                 to subsume put_icount_el().  Put_icount_el() used to
2546                 use an O(N) implementation to insert in the middle
2547                 of the icount list.  It now uses a O(ln N) to search
2548                 for where the icount should be inserted, and then uses
2549                 a memcpy to move the list down (instead of a for loop).
2550         
2551         * icount.c (ext2fs_icount_fetch, ext2fs_icount_store,
2552                 ext2fs_icount_increment, ext2fs_icount_decrement): Check
2553                 to see if the inode is within bounds; if it isn't, return
2554                 EINVAL.
2555
2556         * bitops.h (ext2fs_test_generic_bitmap): Fix error message given
2557                 when a bad inode number is passed to test_generic_bitmap
2558                 to be EXT2FS_TEST_ERROR instead of the wrong
2559                 EXT2FS_UNMARK_ERROR.
2560
2561 Wed Mar 12 13:32:05 1997  Theodore Y. Ts'o  <tytso@mit.edu>
2562
2563         * Release of E2fsprogs version 1.07
2564
2565 Sun Mar  2 16:46:18 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2566
2567         * Makefile.in (ELF_VERSION): Change version to be 2.2
2568
2569 Tue Feb 11 14:54:02 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2570
2571         * alloc.c (ext2fs_get_free_blocks): Change routine to use
2572                 ext2fs_fast_test_block_bitmap_range().
2573
2574         * bitops.h (ext2fs_fast_test_block_bitmap_range,
2575                 ext2fs_test_block_bitmap_range: New inline functions which
2576                 test to see whether a contiguous range of blocks is
2577                 available.
2578
2579 Thu Feb  6 10:00:13 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2580
2581         * badblocks.c (ext2fs_badblocks_list_create): Rename sybmols to use
2582                 use ext2fs_badblocks_* instead of badblocks_*
2583
2584         * bb_compat.c: New file which translates between old badblocks_*()
2585                 names to ext2fs_badblocks_*()
2586
2587         * unlink.c (ext2fs_unlink): New file, moved ext2fs_unlink() from
2588                 link.c (since e2fsck doesn't use ext2fs_unlink()).
2589
2590         * rs_bitmap.c (ext2fs_resize_generic_bitmap): New file, contains
2591                 bitmap resizing routine moved from bitmaps.c, since e2fsck
2592                 doesn't need to use this function.
2593
2594         * lookup.c (ext2fs_lookup): Moved ext2fs_lookup to its own file,
2595                 since e2fsck only needs ext2fs_lookup.
2596
2597 Mon Feb  3 10:11:40 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2598
2599         * inode.c (ext2fs_open_inode_scan): Set fs->badblocks if it is not
2600                 already set; this is needed so that programs like dump
2601                 which use the inode scan functions will deal with
2602                 filesystems that have bad blocks in the inode table.
2603
2604 Sun Feb  2 00:17:36 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2605
2606         * ext2fs.h (struct_badblocks_list, struct_badblocks_iterate): 
2607                 Moved to ext2fsP.h, since it doesn't need to be part of
2608                 the public interface.
2609
2610         * dir_iterate.c: Move ext2_dir_iterate out of namei.c.
2611
2612 Sat Feb  1 10:14:55 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2613
2614         * dblist.c (ext2fs_get_num_dirs): New file, which implements a
2615                 directory block list abstraction.  (Code moved from
2616                 e2fsck).
2617
2618         * ext2fs.h, inode.c: Moved definition of ext2_struct_inode_scan to
2619                 to inode.c (since no one else should be peeking inside it!)
2620
2621         * valid_blk.c (ext2_inode_has_valid_blocks): New function.
2622
2623         * openfs.c (ext2fs_open): Check the feature set in the ext2
2624                 superblock, and refuse to open filesystems if they contain
2625                 incompatible features.  (Can be overriden with the
2626                 EXT2_FLAG_FORCE 
2627
2628 Sun Jan 12 11:31:46 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2629
2630         * block.c (ext2fs_block_iterate2): Added new function
2631                 ext2fs_block_iterate2 which changes the function
2632                 signature of the callback function to include the
2633                 referencing block and offset.
2634
2635         * inode.c (ext2fs_inode_scan_goto_blockgroup): Added new function
2636                 ext2fs_inode_scan_goto_blockgroup which allows an
2637                 application to jump to a particular block group while
2638                 doing an inode scan.
2639
2640 Wed Jan  1 23:50:12 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2641
2642         * dirblock.c: Include string.h, since we use memcpy().
2643
2644 Tue Dec  3 12:27:29 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2645
2646         * getsize.c (ext2fs_get_device_size): The ioctl BLKGETSIZE returns
2647                 a long not an int; this doesn't matter on i386 machines,
2648                 but it does on Alpha's.
2649         
2650 Fri Nov 29 20:57:37 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2651
2652         * inode.c (ext2fs_write_inode, ext2fs_read_inode): If the inode
2653                 table pointer is NULL, then return an error indicating
2654                 that the inode table is missing.
2655                 (get_next_blockgroup, get_next_blocks,
2656                 ext2fs_get_next_inode): Don't treat a missing inode table
2657                 as permanent error.  Return MISSING_INODE_TABLE, but as an
2658                 advisory error code, much like BAD_BLOCK_IN_INODE_TABLE.
2659
2660         * rw_bitmaps.c (ext2fs_write_block_bitmap,
2661                 ext2fs_write_inode_bitmap): If the inode or block bitmap
2662                 block is zero, then don't write out the inode or block
2663                 bitmap.  The idea here is to avoid stomping on the
2664                 superblock.
2665                 (read_bitmaps): If the inode or block bitmap block is
2666                 zero, then fill in that portion of the inode or block
2667                 bitmap with all zeros.
2668
2669         * inode.c (ext2fs_get_next_inode): Fix bug in handling of bad
2670                 blocks in inode table when the inode table size is
2671                 non-standard (and can therefore span blocks).
2672
2673 Tue Oct 29 20:13:14 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2674
2675         * alloc.c (ext2fs_new_block): Fix fencepost error in
2676                 ext2fs_new_block; make sure we don't try to allocate the
2677                 first block beyond the end of the filesystem.
2678
2679 Mon Oct 14 11:00:48 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2680
2681         * inode.c (check_for_inode_bad_blocks): New function called by
2682                 get_next_blocks() to avoid reading in bad blocks marked in
2683                 fs->badblocks.  Inodes located in bad blocks are returned
2684                 by ext2fs_get_next_inode() returns the error code 
2685                 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE.
2686         
2687         * alloc_tables.c (ext2fs_allocate_tables): New function which
2688                 performs the part of mke2fs's job of allocating the 
2689                 filesystem tables.
2690
2691         * test_io.c (test_close): IO manager which is used for testing
2692                 purposes.
2693
2694 Sun Oct 13 04:31:57 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2695
2696         * inode.c (ext2fs_get_next_inode): Separate out the function of
2697                 setting up for a new block group to get_next_blockgroup().
2698                 Separate out the function of reading in blocks of the
2699                 inode table to get_next_blocks().
2700
2701         * ext2fs.h: Add the badblocks list to the ext2_filsys entry
2702
2703         * badblocks.c (badblocks_list_add, badblocks_list_test): Add
2704                 blocks to the badblock list in sorted order.  This allows
2705                 badblocks_list_test to be coded using a binary search for
2706                 speed.
2707
2708 Tue Oct  8 02:02:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2709
2710         * Release of E2fsprogs version 1.06
2711
2712 Mon Oct  7 00:44:17 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2713
2714         * ext2fs.h, block.c, closefs.c, dirblock.c, inode.c, native.c,
2715                 open.c: Change EXT2_SWAP to EXT2_FLAG_SWAP for
2716                 consistency's sake.
2717         
2718         * closefs.c (ext2fs_flush): If the flag EXT2_MASTER_SB_ONLY is
2719                 set, then only write out the master superblock.
2720
2721 Sun Oct  6 21:45:26 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2722
2723         * block.c (ext2fs_block_iterate): Fixed bug which caused
2724                 block_iterate to fail to handle HURD created filesystems;
2725                 it tested the inode translator field before the inode was
2726                 loaded.
2727
2728 Tue Sep 17 14:08:24 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2729
2730         * initialize.c (ext2fs_initialize): Make sure the description for
2731                 the inode bitmap is set correctly.
2732
2733         * bitmaps.c (ext2fs_allocate_generic_bitmap): Fix minor type typo.
2734
2735 Thu Sep 12 15:23:07 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2736
2737         * Release of E2fsprogs version 1.05
2738
2739 Sat Sep  7 07:36:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2740
2741         * initialize.c: Override the kernel's idea of default
2742                 checkinterval from 0 (never) to 180 days.
2743
2744 Wed Aug 28 03:20:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2745
2746         * namei.c (ext2fs_namei_follow): New function which follows
2747                 symbolic link (if any) at the target.
2748
2749 Tue Aug 27 01:48:43 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2750
2751         * inode.c (ext2fs_read_inode, ext2fs_write_inode): Add support
2752                 for shortcut function fs->read_inode() and fs->write_inode().
2753                 Added inode_cache to reduce CPU time spent in doing
2754                 byte swapping.
2755
2756         * swapfs.c (ext2fs_swap_super): Swap the new fields in a V2
2757                 superblock.
2758
2759         * namei.c (ext2fs_follow_link): New function.
2760                 (ext2fs_namei): Extended to have support for chasing
2761                 symbolic links.  ext2fs_namei() still returns an inode
2762                 which is a symbolic link.  Symbolic links are only chased
2763                 while resolving the containing directory.  To chase
2764                 symbolic links of the final result, use
2765                 ext2fs_follow_link().
2766
2767 Mon Aug 26 23:46:07 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2768
2769         * ext2_err.et.in: Added new error code EXT2_ET_SYMLINK_LOOP.
2770
2771         * bitops.h (ext2fs_set_bit, ext2fs_celar_bit): Use asm inlines
2772                 provided by Pete A. Zaitcev (zaitcev@lab.sun.mcst.ru).
2773
2774 Thu Aug 22 00:40:18 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2775
2776         * initialize.c (ext2fs_initialize): On systems where the byte
2777                 order is not i386 compatible, set the swap_byte flag.
2778
2779         * inode.c (inocpy_with_swap): Check to see if inode contains a
2780                 fast symlink before swapping the inode block fields.  This
2781                 required adding a new argument to inocpy_with_swap to
2782                 determine whether the mode field is in host order or not.
2783
2784 Wed Aug 21 00:45:42 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2785
2786         * bitops.h (ext2fs_set_bit, ext2fs_clear_bit, ext2fs_test_bit): On
2787                 the sparc, if EXT2_STD_BITOPS set, use the standard
2788                 i386-compatible bitmask operations, instead on the
2789                 non-standard native bitmask operators.
2790
2791 Fri Aug  9 11:11:35 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2792
2793         * block.c (ext2fs_block_iterate): Cause block iterator to return
2794                 the HURD translator block (along with everything else).
2795                 If the flag BLOCK_FLAG_DATA_ONLY is passed to the block
2796                 iterator, then don't return any meta data blocks
2797                 (including the HURD translator).
2798
2799 Wed Jul 17 17:13:34 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2800
2801         * gen_uuid.c: New file, which generates DCE-compatible UUIDs.
2802
2803         * uuid.c: New file, containing UUID utility functions.
2804
2805 Tue Jul 16 10:19:16 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2806
2807         * ext2fs.h: Add a definition of the "real" ext2 superblock.
2808
2809 Fri May 24 14:54:55 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2810
2811         * ext2fs.h: Fix erroneous ino_t type used in block_bitmap type.
2812
2813 Sun May 19 15:39:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2814
2815         * openfs.c (ext2fs_open): If the blocksize in the superblock is
2816                 zero, return the error EXT2_ET_CORRUPT_SUPERBLOCK, since
2817                 that's a basic value that must be correct for the rest of
2818                 the library to work.
2819
2820         * ext2_err.et.in (EXT2_ET_CORRUPT_SUPERBLOCK): Added new error
2821                 code.
2822
2823 Thu May 16 11:12:30 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2824
2825         * Release of E2fsprogs version 1.04
2826
2827 Wed Mar 27 00:33:40 1996    <tytso@rsts-11.mit.edu>
2828
2829         * Release of E2fsprogs version 1.03
2830
2831 Tue Mar 26 12:06:32 1996    <tytso@rsts-11.mit.edu>
2832
2833         * bitops.h (ext2fs_set_bit, ext2fs_clear_bit, ext2fs_test_bit):
2834                 Change the m68k bit numbering for bitmasks to match with
2835                 the bit numbering used by all other ext2 implementations.
2836
2837 Thu Mar  7 03:37:00 1996    <tytso@rsts-11.mit.edu>
2838
2839         * inode.c (ext2fs_get_next_inode, ext2fs_close_inode_scan, 
2840         ext2fs_open_inode_scan): Support dynamically-sized inodes.
2841
2842 Wed Mar  6 12:26:29 1996    <tytso@rsts-11.mit.edu>
2843
2844         * inode.c (ext2fs_read_inode, ext2fs_write_inode): Support
2845                 dynamically-sized inodes.
2846
2847         * openfs.c (ext2fs_open): Allow dynamic revision filesystem to be
2848                 loaded.
2849
2850 Tue Mar  5 03:49:37 1996    <tytso@rsts-11.mit.edu>
2851
2852         * initialize.c (ext2fs_initialize): Catch an error condition where
2853                 the passed in size is *really* too small.
2854
2855         * alloc.c (ext2fs_new_inode): 
2856         * ext2fs.h (EXT2_FIRST_INODE): Add support for dynamic revision to
2857                 get first inode.
2858
2859 Wed Feb 21 15:56:17 1996    <tytso@rsts-11.mit.edu>
2860
2861         * getsize.c (ext2fs_get_device_size): Open the device read-only
2862                 when trying to determine its size.
2863
2864 Wed Jan 31 11:06:08 1996    <tytso@rsts-11.mit.edu>
2865
2866         * Release of E2fsprogs version 1.02
2867
2868 Sat Dec  9 09:57:50 1995    <tytso@rsts-11.mit.edu>
2869
2870         * rw_bitops.c (ext2fs_write_block_bitmap):
2871         * bitops.c (ext2fs_test_bit, ext2fs_clear_bit, ext2fs_set_bit):
2872         * bitops.h (ext2fs_test_bit, ext2fs_clear_bit, ext2fs_set_bit):
2873                 Rename {test,set,clear}_bit to ext2fs_{test,set,clear}_bit, 
2874                 to avoid conflicts with with kernel include files.  Also
2875                 rename ADDR and CONST_ADDR to EXT2FS_ADDR and
2876                 EXT2FS_CONST_ADDR. 
2877
2878 Thu Oct 26 12:09:16 1995    <tytso@rsts-11.mit.edu>
2879
2880         * ext2_err.et: Updated message in EXT2_ET_BASE to say version 0.5c
2881
2882         * swapfs.c (ext2fs_swap_super): Put an #ifdef check around
2883                 s_def_resuid and s_def_resgid for backwards compatibility.
2884
2885 Fri Oct 20 23:33:31 1995    <tytso@rsts-11.mit.edu>
2886
2887         * bitops.h: Added #ifdef's for Sparc.
2888
2889 Wed Sep  6 22:14:46 1995    <tytso@rsts-11.mit.edu>
2890
2891         * getsize.c: #include <sys/ioctl.h> under Linux to pick up ioctl()
2892                 declaration
2893
2894         * closefs.c: #include <string.h> to pick up memset() declaration
2895
2896 Mon Sep  4 21:45:29 1995  Remy Card  <card@bbj>
2897
2898         * Makefile.in: Added support for BSD shared libraries.
2899
2900         * initialize.c (ext2fs_initialize): Correctly set the s_creator_os
2901                 flag.
2902
2903 Mon Sep  4 09:55:30 1995    <tytso@rsts-11.mit.edu>
2904
2905         * unix_io.c (unix_open): Add a double check; if the passed in name
2906                 is NULL, return EXT2_ET_BAD_DEVICE_NAME.
2907
2908         * ext2_err.et (EXT2_ET_BAD_DEVICE_NAME): Added new error code
2909
2910 Wed Aug 16 15:44:10 1995    <tytso@rsts-11.mit.edu>
2911
2912         * inode.c (ext2fs_check_directory): Use LINUX_S_ISDIR instead of
2913                 S_ISDIR.
2914
2915 Tue Aug 15 13:08:36 1995    <tytso@rsts-11.mit.edu>
2916
2917         * getsize.c (ext2fs_get_device_size): Add support for reading the
2918                 partition size from a BSD disk label.
2919
2920 Thu Aug 10 09:33:26 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
2921
2922         * getsize.c (ext2fs_get_device_size): New function that determins
2923                 the size of a device.  Used by mke2fs and e2fsck.
2924
2925 Sat Aug 12 03:09:54 1995  Remy Card  <card@bbj>
2926
2927         * Makefile.in (install): Install static libraries in $(ulibdir)
2928                 (/usr/lib on Linux) instead of $(libdir) (/lib on Linux).
2929
2930 Wed Aug  9 17:04:23 1995  Theodore Y. Ts'o  <tytso@dcl>
2931
2932         * bitmaps.c (ext2fs_free_inode_bitmap, ext2fs_free_block_bitmap):
2933                 Move these functions to freefs.c.
2934
2935         * closefs.c (ext2fs_flush): If swapping blocks, clear the group
2936                 descriptors shadow memory to keep purify quiet.  (This
2937                 also has the nice benefit that the unused portion of the
2938                 shadow descriptors are zeroed out.)
2939
2940         * dirblock.c (ext2fs_write_dir_block): We need to use
2941                 dirent->rec_len *before* it's byteswapped to find the
2942                 location of the next directory structure!
2943
2944         * alloc.c (ext2fs_new_inode): Fix bug which could potentially
2945                 cause ext2fs_new_inode to loop infinitely if we're trying
2946                 to allocate an inode in group #0 and there are no free
2947                 inodes at all in the system.
2948
2949         * closefs.c: #include <errno.h> if it exists.
2950
2951 Sun Aug  6 13:27:50 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
2952
2953         * ext2fs.h (BLOCK_FLAG_HOLE): Added new definition for
2954                 BLOCK_FLAG_APPEND.  Added documentation for the block
2955                 interator flags.
2956
2957 Sat Aug  5 11:44:05 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
2958
2959         * Makefile.in (DLL_INSTALL_DIR, ELF_INSTALL_DIR): Set the
2960                 installation directories correctly.
2961
2962 Tue Jul 18 09:27:38 1995    <tytso@rsx-11.mit.edu>
2963
2964         * namei.c (process_dir_block): 
2965         * mkdir.c (ext2fs_mkdir): 
2966         * expanddir.c (expand_dir_proc): Use ext2fs_{read,write}_dir_block
2967                 to read/write the directory block.
2968
2969         * dirblock.c (ext2fs_read_dir_block), ext2fs_write_dir_block): New
2970                 file containing functions for reading and writing
2971                 directory blocks (byte swapping if necesssary)
2972
2973         * block.c (block_iterate_ind, block_iterate_dind, 
2974                 block_iterate_tind): Byte swap the block addresses if
2975                 EXT2_SWAP_BYTES is set (and swap them back before writing
2976                 them out.)
2977
2978         * inode.c (inocpy_with_swap): New function.
2979         (ext2fs_get_next_inode, ext2fs_read_inode, ext2fs_write_inode):
2980                 Call inocpy_with_swap if EXT2_SWAP_BYTES if set.
2981
2982         * closefs.c (ext2fs_flush): If EXT2_SWAP_BYTES is set, then swap
2983                 the superblock and group descriptors before writing it out.
2984
2985         * openfs.c (ext2fs_open): If the magic number is byte-swapped,
2986                 then set the EXT2_SWAP_BYTES and byte-swap the superblock
2987                 and group descriptors.
2988
2989         * swapfs.c (ext2fs_swap_super, ext2fs_swap_group_desc): New functions
2990                 to desp ext2 filesystem structures.
2991
2992         * bitops.c (set_bit, clear_bit, test_bit): Use modifications
2993                 supplied by Pete A. Zaitcev so that the C language
2994                 versions of these functions are more portable.  They will
2995                 now work on both little and big endian systems, and the
2996                 assumption that 32-bit integers are used is gone.
2997
2998         * bitops.h (ext2_swab16, ext2_swab32): Added new functions for
2999                 doing byte swapping.
3000
3001         * ext2fs.h (EXT2_SWAP_BYTES): Add new flag which indicates that
3002                 byte swapping should take place.
3003
3004 Sun Jul 16 06:21:43 1995    <tytso@rsx-11.mit.edu>
3005
3006         * Makefile.in, cmp_bitmaps.c (ext2fs_compare_block_bitmap_end,
3007                 ext2fs_compare_inode_bitmap_end): Added new file
3008                 containing routines to compare bitmaps.
3009
3010         * ext2_err.et (EXT2_ET_NEQ_BLOCK_BITMAP, EXT2_ET_NEQ_INODE_BITMAP): 
3011                 Added new error codes.
3012
3013 Sat Jul 15 04:23:37 1995    <tytso@rsx-11.mit.edu>
3014
3015         * inode.c (ext2fs_get_next_inode): Don't check scan->inode_buffer;
3016                 if the magic number is correct, it will be allocated.
3017
3018 Fri Jul 14 19:02:59 1995    <tytso@rsx-11.mit.edu>
3019
3020         * block.c (block_iterate_ind, block_iterate_dind, 
3021                 block_iterate_tind): Don't recompute block_nr each loop;
3022                 just increment it!  Factor check of BLOCK_FLAG_APPEND out
3023                 of the loop.  Factor mask of BLOCK_CHANGED into changed
3024                 variable out of the loop.  (block_iterate_ind, in
3025                 particular, gets called a lot, so every little
3026                 optimization helps.)
3027
3028 Thu Jul 13 08:02:45 1995    <tytso@rsx-11.mit.edu>
3029
3030         * block.c (block_iterate_ind, block_iterate_dind, 
3031                 block_iterate_tind): Precompute limit of loop to speed up
3032                 block_iterate_ind and company.
3033
3034         * bitops.h (ext2fs_fast_mark_block_bitmap, 
3035                 ext2fs_fast_unmark_block_bitmap, ext2fs_fast_test_block_bitmap,
3036                 ext2fs_fast_mark_inode_bitmap, ext2fs_fast_unmark_inode_bitmap,
3037                 ext2fs_fast_test_inode_bitmap): Add fast version of these
3038                 functions, which don't do range checking.
3039
3040         * bitops.h (ext2fs_get_block_bitmap_start, 
3041                 ext2fs_get_inode_bitmap_start, ext2fs_get_block_bitmap_end,
3042                 ext2fs_get_inode_bitmap_end): Add new accessor functions
3043                 which return the start and end points of the bitmaps.
3044
3045 Tue Jul 11 18:59:41 1995    <tytso@rsx-11.mit.edu>
3046
3047         * llseek.c (ext2_llseek): If the offset is small enough, use lseek
3048                 instead of llseek.  The errno if the offset is too large
3049                 and lseek is not supported should be EINVAL, not -EINVAL.
3050
3051 Thu Jun 15 23:43:02 1995  Remy Card  <card@bbj>
3052
3053         * Makefile.in: Added support for ELF shared libraries.
3054                 Fixed typos in the compilation rules.
3055                 (distclean): Added Makefile.
3056
3057         * llseek.c (llseek): New function, if llseek() does not exist in the
3058         C library.
3059         (ext2_llseek): Changed to call llseek().
3060
3061 Mon Jun 12 08:29:07 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
3062
3063         * ext2fs.h: Use __u32 to define blk_t, instead of unsigned long.
3064
3065 Sun Jun 11 15:02:54 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
3066
3067         * mkdir.c (ext2fs_mkdir): Use LINUX_S_IFDIR instead of S_IFDIR.
3068
3069         * ext2fs.h (LINUX_S_IFDIR): Define a linux specific versions of
3070                 the S_*, which are normally defined in <sys/stat.h>.  This
3071                 allows us to compile e2fsprogs on a non-Linux system,
3072                 which may have a different value for S_IFDIR.
3073
3074 Sat Jun 10 23:47:05 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
3075
3076         * bitops.c (clear_bit, set_bit): Remove calls to cli() and sti();
3077                 this is a user-mode application!
3078
3079 Thu Jun  8 13:13:22 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>
3080
3081         * llseek.c: Put the include of <linux/unistd.h> inside the #ifdef
3082         __linux__ so that non-linux systems won't see it.
3083
3084         * alloc.c: Include <errno.h> if possible.
3085         * badblocks.c: Ditto.
3086         * bb_inode.c: Ditto.
3087         * bitmaps.c: Ditto.
3088         * block.c: Ditto.
3089         * expanddir.c: Ditto.
3090         * get_pathname.c: Ditto.
3091         * initialize.c: Ditto.
3092         * inode.c: Ditto.
3093         * llseek.c: Ditto.
3094         * mkdir.c: Ditto.
3095         * namei.c: Ditto.
3096         * newdir.c: Ditto.
3097         * openfs.c: Ditto.
3098         * rw_bitmaps.c: Ditto.
3099         * unix_io.c: Ditto.
3100
3101         * Makefile.in: Rewritten to conform to GNU coding standards and
3102         support separate compilation directories.
3103
3104 Thu May 11 04:13:12 1995    <tytso@rsx-11.mit.edu>
3105
3106         * initialize.c (ext2fs_initialize): Don't allow more than one
3107                 bitmaps's worth of inodes in a group.
3108
3109 Sat Mar 11 14:07:11 1995  Theodore Y. Ts'o  <tytso@localhost>
3110
3111         * llseek.c (ext2_llseek): Added error checking to the llseek()
3112                 compat code to protect against overflow.  This only
3113                 applies to 1.0 and early 1.1 kernels, which don't support
3114                 the llseek() system call.
3115
3116 Thu Nov 24 16:29:00 1994  Theodore Y. Ts'o  (tytso@rt-11)
3117
3118         * unix_io.c (unix_open): Initialize the read_error and write_error
3119                 io_channel pointers to be null.
3120
3121         * bb_inode.c (clear_bad_block_proc): If an illegal block number is
3122                 found, clear it but don't try to update the filesystem
3123                 accounting information, since that's hopeless anyway.
3124
3125         * block.c (bloblock_iterate_ind, bloblock_iterate_dind,
3126         bloblock_iterate_tind): Check to see if the indirect blocks are
3127                 valid before trying to read them.
3128
3129         * ext2_err.et (EXT2_ET_BAD_IND_BLOCK, EX2_ET_BAD_DIND_BLOCK,
3130         EXT2_ET_BAD_TIND_BLOCK): Add new error codes.
3131
3132         * bitops.h (ext2fs_mark_block_bitmap, ext2fs_unmark_block_bitmap,
3133         ext2fs_test_block_bitmap, ext2fs_mark_inode_bitmap,
3134         ext2fs_unmark_inode_bitmap, ext2fs_test_inode_bitmap):  If an
3135                 illegal block or inode number is passed in, return instead
3136                 of trying to test, set, or clear the bit.
3137
3138 Mon Nov  7 21:32:33 1994  Remy Card  <card@bbj>
3139
3140         * Makefile: Added a dummy install target in case shared libraries
3141                 are not built.
3142
3143 Mon Oct 24 14:11:44 1994    (tytso@rsx-11)
3144
3145         * bitmaps.c (ext2fs_allocate_block_bitmap): Fix calculation of how
3146                 the real last block of the bitmap should be calculated.
3147
3148 Wed Sep  7 10:05:36 1994    (tytso@rsx-11)
3149
3150         * bitmaps.c (ext2fs_fudge_inode_bitmap_end, 
3151                 ext2fs_fudge_block_bitmap_end, ext2fs_clear_inode_bitmap,
3152                 ext2fs_clear_block_bitmap, ext2fs_free_inode_bitmap,
3153                 ext2fs_free_block_bitmap): Add magic number checking for
3154                 the inode and block bitmaps.
3155
3156         * bitmaps.c (ext2fs_allocate_block_bitmap): Fix to set the correct
3157                 magic number for a block bitmap instead of an inode bitmap.
3158
3159         * inode.c (ext2fs_close_inode_scan, ext2fs_get_next_inode):  Add
3160                 magic number checking for the inode_scan structure.
3161
3162         * badblocks.c (badblocks_list_free, badblocks_list_add, 
3163                 badblocks_list_test, badblocks_list_iterate_begin,
3164                 badblocks_list_iterate, badblocks_list_iterate_end): Add
3165                 magic number checking for the badblocks_list and
3166                 badblocks_iterate structures.
3167
3168         * ext2_err.et (EXT2_ET_MAGIC_UNIX_IO_CHANNEL): 
3169         * unix_io.c (unix_open, unix_close, unix_set_blksize, unix_read_blk,
3170                 unix_write_blk, unix_flush): Add magic number checking
3171                 both for io_channel structure and unix_private_data
3172                 structure.
3173
3174         * openfs.c (ext2fs_open): Add check for io_manager structure's
3175                 magic number.
3176
3177         * rw_bitmaps.c (ext2fs_write_inode_bitmap, ext2fs_write_block_bitmap,
3178                 ext2fs_read_inode_bitmap, ext2fs_read_block_bitmap,
3179                 ext2fs_read_bitmaps, ext2fs_write_bitmaps): 
3180         * read_bb.c (ext2fs_read_bb_inode): 
3181         * read_bb_file.c (ext2fs_read_bb_FILE): 
3182         * newdir.c (ext2fs_new_dir_block): 
3183         * namei.c (ext2fs_dir_iterate, ext2fs_lookup, ext2fs_namei): 
3184         * link.c (ext2fs_link, ext2fs_unlink): 
3185         * inode.c (ext2fs_open_inode_scan, ext2fs_read_inode,
3186                 ext2fs_write_inode, ext2fs_get_blocks, 
3187                 ext2fs_check_directory): 
3188         * get_pathname.c (ext2fs_get_pathname): 
3189         * expanddir.c (ext2fs_expand_dir): 
3190         * block.c (ext2fs_block_iterate): 
3191         * bitmaps.c (ext2fs_allocate_inode_bitmap, 
3192                 ext2fs_allocate_block_bitmap): 
3193         * bb_inode.c (ext2fs_update_bb_inode): 
3194         * alloc.c (ext2fs_new_inode,ext2fs_new_block,ext2fs_get_free_blocks): 
3195         * check_desc.c (ext2fs_check_desc): 
3196         * closefs.c (ext2fs_close, ext2fs_flush): 
3197         * freefs.c (ext2fs_free): Add check for ext2_filsys magic number.
3198
3199         * Makefile:
3200         * ext2fs.h:
3201         * openfs.c:
3202         * check_desc.c (ext2fs_check_desc): Move ext2fs_check_desc from
3203         openfs.c into its own file.
3204
3205         * ext2fs.h (EXT2_CHECK_MAGIC): Added macro for checking for
3206         structure magic numbers.
3207
3208         * closefs.c (ext2fs_flush): Folded in Remy Card's changes to clear
3209         the EXT2_VALID_FS flag in the backup superblock blocks, so that if
3210         someone uses the -b option to specify the use of the backup
3211         superblock --- this usually means that the main superblock is
3212         toast.  :-)
3213
3214         * ext2fs.h: 
3215         * ext2_err.et (EXT2_ET_REV_TOO_HIGH): 
3216         * openfs.c (ext2fs_open): Folded in Remy Card's changes to add a
3217         revision level to the superblock.
3218
3219 Sun Aug 21 00:50:08 1994  Theodore Y. Ts'o  (tytso@rt-11)
3220
3221         * ext2fs.h:
3222         * bitmaps.c:
3223         * bitops.c
3224         * bitops.h:
3225         * openfs.c:
3226         * initialize.c: Completely revamped the inode and block bitmap
3227         structures, so that they can be better chance of being extensible
3228         in a shared library.  They are now their own type, instead of
3229         being a char *.  Also, the function signatures of
3230         ext2fs_test_block_bitmap, ext2fs_mark_block_bitmap,
3231         ext2fs_unmark_block_bitmap, ext2fs_test_inode_bitmap,
3232         ext2fs_mark_inode_bitmap, and ext2fs_unmark_inode_bitmap were
3233         changed to eliminate the ext2_filsys argument, since it is no
3234         longer necessary.
3235
3236 Wed Aug 17 21:46:44 1994  Remy Card  (card@bbj)
3237
3238         * unix_io.c (unix_read_blk and unix_write_blk): use the llseek
3239         system call if available.
3240
3241         * llseek.c: new file.  This is the stub calling the llseek system
3242         call which allows supports for 2GB+ file systems.
3243
3244         * initialize.c (ext2fs_initialize): Ext2fs_initialize now stores
3245         the creator operating system.
3246
3247 Wed Aug 17 10:03:24 1994  Theodore Y. Ts'o  (tytso@rt-11)
3248
3249         * initialize.c (ext2fs_initialize): Ext2fs_initialize now sets up
3250         the group descriptor statistics in addition to everything else.
3251         This relieves mke2fs of the responsibility of doing it.
3252
3253         * bitops.c, bitops.h: Add assembly inline functions for the 68000.
3254         Added a new #define, _EXT2_HAVE_ASM_BITOPS_ to control whether or
3255         not the generic C function equivalents should be included or not.
3256
3257         * openfs.c (ext2fs_open): If a superblock is specified, then use
3258         the backup group descriptors that go along with this superblock,
3259         instead of using the primary group descriptors.  This allows
3260         e2fsck to recover filesystems where the primary group descriptors
3261         have been trashed.
3262
3263