Whamcloud - gitweb
Many files:
[tools/e2fsprogs.git] / lib / ext2fs / ChangeLog
1 1998-12-15  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2
3         * Release of E2fsprogs 1.13
4
5 1998-12-03  Theodore Ts'o  <tytso@rsts-11.mit.edu>
6
7         * Makefile.in: Updated dependencies.
8
9 1998-09-22  Theodore Ts'o  <tytso@rsts-11.mit.edu>
10
11         * initialize.c (ext2fs_initialize): Make sure that we allocate
12                 enough inodes so that we can make a valid filesystem.
13
14 1998-09-02  Theodore Ts'o  <tytso@rsts-11.mit.edu>
15
16         * rw_bitmaps.c: Fixed signed/unsigned warnings.
17
18         * fileio.c (ext2fs_file_set_size): Remove unneeded extern from the
19                 function declaration.
20
21         * dblist.c (make_dblist): Add safety check in case the dblist
22                 pointer passed in is null (in which case, assign it to
23                 fs->dblist).  Fixed some signed/unsigned warnings.
24
25         * bmap.c: Make addr_per_block be of type blk_t to avoid
26                 signed/unsigned warnings.
27
28         * namei.c (ext2fs_follow_link): Remove uneeded extern from the
29                 function declaration.
30
31         * get_pathname.c (get_pathname_proc): Use return value from
32                 ext2fs_get_mem, instead of checking if &gp->name is
33                 NULL.
34
35         * dir_iterate.c (ext2fs_process_dir_block): 
36         * dblist_dir.c (ext2fs_dblist_dir_iterate): Remove uneeded extern
37                 from the function declaration.
38
39         * block.c (ext2fs_block_iterate2): If the read_inode call fails,
40                 return the error directly instead of jumping to the
41                 cleanup routine, since we don't need to do any cleanup.
42
43         * alloc_table.c (ext2fs_allocate_group_table): Make this
44                 function take a dgrp_t for its group argument.
45
46         * ext2fs.h: Make dgrp_t an __u32 type, and make
47                 fs->desc_group_count be of type dgrp_t.
48
49 1998-07-27  Theodore Ts'o  <tytso@rsts-11.mit.edu>
50
51         * badblocks.c (ext2fs_badblocks_list_add): Use a bigger increment
52                 than 10 blocks when we need to expand the size of the
53                 badblocks list.
54
55 1998-07-09  Theodore Ts'o  <tytso@rsts-11.mit.edu>
56
57         * Release of E2fsprogs 1.12
58
59 1998-06-30  Theodore Ts'o  <tytso@rsts-11.mit.edu>
60
61         * closefs.c (ext2fs_flush): Update the s_block_group_nr field as
62                 appropriate for all of the block group copies, so that
63                 it's clear where the beginning of the filesystem is on the
64                 disk.  (For when the partition table gets scrod.)
65
66         * ext2fs.h: Change the name of the feature from
67                 EXT2_FEATURE_INCOMPAT_DIRNAME_SIZE to
68                 EXT2_FEATURE_INCOMPAT_FILESIZE (to match with the kernel).
69
70 1998-06-18  Theodore Ts'o  <tytso@rsts-11.mit.edu>
71
72         * inode.c (get_next_blockgroup): Fix bug where if
73                 get_next_blockgroup() is called early because of a missing
74                 inode table in a block group, the current_inode counter
75                 wasn't incremented correctly.
76
77 1998-06-16  Theodore Ts'o  <tytso@rsts-11.mit.edu>
78
79         * read_bb.c (ext2fs_read_bb_inode): Make function more robust
80                 against a completely trashed bad block inode.
81
82 1998-06-10  Theodore Ts'o  <tytso@rsts-11.mit.edu>
83
84         * alloc_tables.c (ext2fs_allocate_group_table): Fix bug so that if
85                 the stride length hits a bad value, we retry the block
86                 allocation starting at the beginning of the block group.
87
88         * ext2fs.h, bb_inode.c, block.c, bmove.c, dir_iterate.c,
89                 expanddir.c, ext2fsP.h, read_bb.c: Change blkcnt_t to be
90                 e2_blkcnt_t to avoid collision with LFS API.
91
92 1998-05-01  Theodore Ts'o  <tytso@rsts-11.mit.edu>
93
94         * initialize.c (ext2fs_initialize): Initialize s_inodes_count in a
95                 way that avoids overflows on disk sizes greater than 4GB.
96
97 1998-04-28  Theodore Ts'o  <tytso@rsts-11.mit.edu>
98
99         * ext2fs.h: Define EXT2_QSORT_TYPE appropriately for the
100                 return type for comparison functions for qsort.
101
102         * dblist.c (dir_block_cmp): Use EXT2_QSORT_TYPE in function
103                 declaration.
104
105 1998-04-26  Theodore Ts'o  <tytso@rsts-11.mit.edu>
106
107         * ext2fs.h, bitops.h: Add support for the Watcom C compiler to do
108                 inline functions.
109
110         * ext2fs.h, dosio.c: Use asm/types.h instead of linux/types.h to
111                 evade a potential problem with glibc's header files trying
112                 to spike out linux/types.h.
113
114         * ext2fs.h (ext2fs_resize_mem): Change the function prototype to
115                 include the old size of the memory, which is needed for
116                 some braindamaged memory allocation systems that don't
117                 support realloc().
118
119         * badblocks.c (ext2fs_badblocks_list_add):
120           bb_inode.c (clear_bad_block_proc):
121           dblist.c (ext2fs_add_dir_block):
122           icount.c (insert_icount_el):
123           irel_ma.c (ima_put):
124           rs_bitmap.c (ext2fs_resize_generic_bitmap): Update functions to
125                   pass the old size of the memory to be resized to
126                   ext2fs_resize_mem(). 
127
128 1998-03-30  Theodore Ts'o  <tytso@rsts-11.mit.edu>
129
130         * Makefile.in: Change to use new installation directory variables
131                 convention.  Fix uninstall rules to take $(DESTDIR) into
132                 account.
133
134 1998-03-29  Theodore Ts'o  <tytso@rsts-11.mit.edu>
135
136         * ext2fs.h: If __STRICT_ANSI__ is defined and we're on a platform
137                 with 32 bit longs, then we need to manually define __s64
138                 and __u64, since the current kernel header files don't
139                 define these if __STRICT_ANSI__ is defined.  This is a
140                 problem if we are compiling with full GCC warnings, since
141                 we do need 64 bit support.
142         
143         * Makefile.in (OBJS): Remove bmove.o from files to be built,
144                 since we're not using ext2fs_move_blocks() and there
145                 is some question as to its usefulness in its current
146                 form.
147
148         * bmap.c (block_bmap): Remove unused function.
149
150         * bmove.c (process_block): Fix -Wall warning.
151
152 1998-03-23  Theodore Ts'o  <tytso@rsts-11.mit.edu>
153
154         * block.c (ext2fs_block_iterate3): Make the ref_offset field
155                 contain the offset into the inode.i_blocks array when
156                 ref_block is zero.  Since we haven't done a formal
157                 release of e2fsprogs since block_iterate2 was first
158                 introduced, I removed block_iterate2, and renamed
159                 block_iterate3 to be block_iterate2.
160
161         * bb_inode.c, bmove.c, dblist_dir.c, dir_iterate.c,
162                 expanddir.c, ext2fs.h, ext2fsP.h, read_bb.c: Change
163                 use of block_iterate and block_iterate2 to
164                 block_iterate2 with the new prototype for the
165                 interator function.  (using blkcnt_t forr blockcount)
166
167 1998-03-21  Theodore Ts'o  <tytso@rsts-11.mit.edu>
168
169         * ext2fs.h: Add new superblock fields (s_algorithm_usage_bitmap, 
170                 s_prealloc_blocks, s_prealloc_dir_blocks).  Added
171                 conditional defines of new features COMPAT_DIR_PREALLOC,
172                 RO_COMPAT_LARGE_FILE RO_COMPAT_BTREE_DIR,
173                 INCOMPAT_COMPRESSION, INCOMPAT_DIRNAME_SIZE.  Changed
174                 the library to declare that we support COMPAT_DIR_PREALLOC, 
175                 INCOMPAT_DIRNAME_SIZE, RO_COMPAT_LARGE_FILE.
176
177         * fileio.c: Rename function ext2fs_file_llseek to be
178                 ext2fs_file_lseek, which is more accurate.
179
180         * block.c: Add new function ext2fs_block_iterate3 which calls
181                 the iterator function with the blockcount argument of
182                 type blkcnt_t.  This version of the function is
183                 allowed to handle large files; the other fucntions are
184                 not.
185
186         * ext2fs.h: Add new type blkcnt_t
187
188         * ext2_err.et.in: Add error code EXT2_ET_FILE_TOO_BIG
189
190         * block.c (ext2fs_block_iterate2): Fix bug where the block count
191                 field wasn't getting correctly incremented for sparse
192                 files when the indirect or doubly-indirect block
193                 specified in the inode was zero.
194
195 Sun Mar  8 22:42:47 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
196
197         * unlink.c (unlink_proc): 
198         * lookup.c (lookup_proc): 
199         * link.c (link_proc): 
200         * get_pathname.c (get_pathname_proc): 
201         * dir_iterate.c (ext2fs_process_dir_block): Mask off high 8 bits
202                 from dirent->name_len, so it can be used for other
203                 purposes.
204
205         * ext2fs.h: Add definition of EXT2_FEATURE_INCOMPAT_DIRNAME_SIZE,
206                 and indicate that we have support for this incompatible
207                 option.
208
209 Mon Feb 23 08:46:33 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
210
211         * ext2_err.et.in: Added new error code, EXT2_ET_CANCEL_REQUESTED.
212
213 Fri Feb 20 23:58:01 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
214
215         * dblist.c (ext2fs_get_num_dirs): Improve the estimation of the
216                 number of directories when the block group information is
217                 unreliable.
218
219 1998-02-20  Theodore Y. Ts'o  <tytso@edt.mit.edu>
220
221         * inode.c (ext2fs_get_next_inode): Always do the check to see if the
222                 inode table is missing so that we catch the case where the
223                 first block group is missing.
224
225         * getsize.c, ismounted.c, unix_io.c: #include errno.h since it's
226                 needed.
227
228 Mon Feb 16 16:16:00 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
229
230         * ext2_io.h, ext2fs.h: Protect against being included multiple times.
231
232         * bmove.c: #include ext2fsP.h instead of "ext2fs/ext2fs.h"
233
234         * test_io.c (test_flush): Add a debugging printf when the flush
235                 method is called.
236
237         * rw_bitmaps.c (ext2fs_read_bitmaps): If the bitmaps are already
238                 read in, return right away.
239
240 Sun Feb  1 08:20:24 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
241
242         * bitops.h: Don't try to do i386 inline asm functions if the
243                 compiler isn't GCC.
244
245         * ext2fs.h: If EXT2_FLAT_INCLUDES is defined, #include e2_types.h,
246                 instead of linux/types.h, and e2_bitops.h instead of
247                 ext2fs/bitops.h.
248
249         * icount.c, version.c: Don't #include <et/com_err.h>, as it isn't
250                 necessary. 
251
252 Sat Jan 17 13:13:31 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
253
254         * inode.c (ext2fs_open_inode_scan): Initialize the group variables
255                 so that we don't need to call get_next_blockgroup() the
256                 first time around.  Saves a bit of time, and prevents us
257                 from needing to assign -1 to current_group (which is an
258                 unsigned value).
259
260         * icount.c (insert_icount_el): Cast the estimated number of inodes
261                 from a float to an ino_t.
262
263         * alloc.c, alloc_tables.c, badlbocks.c, bb_compat.c, bb_inode.c,
264                 bitmaps.c, bitops.c, block.c, bmap.c, bmove.c, brel_ma.c,
265                 check_desc.c, closefs.c, cmp_bitmaps.c, dblist.c,
266                 dblist_dir.c, dir_iterate.c, dirblock.c, dupfs.c,
267                 expanddir.c, ext2fs.h, fileio.c, freefs.c,
268                 get_pathname.c, getsize.c, icount.c, initialize.c,
269                 inline.c, inode.c, irel_ma.c, ismounted.c, link.c,
270                 lookup.c, mkdir.c, namei.c, native.c, newdir.c,
271                 openfs.c, read_bb.c, read_bb_file.c, rs_bitmap.c,
272                 rw_bitmaps.c, swapfs.c, test_io.c, tst_badblocks.c,
273                 tst_getsize.c, tst_iscan.c, unix_io.c, unlink.c,
274                 valid_blk.c, version.c: If EXT2_FLAT_INCLUDES is
275                 defined, then assume all of the
276                 ext2-specific header files are in a flat directory.
277
278         * block.c, bmove.c, dirblock.c, fileio.c: Explicitly cast
279                 all assignments from void * to be compatible with C++.
280
281 Tue Jan  6 11:28:15 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
282
283         * closefs.c (ext2fs_flush): Add a call to io_channel_flush() to
284                 make sure the contents of the disk are flushed to disk.
285
286 Mon Dec 29 14:39:13 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
287
288         * dblist.c (ext2fs_add_dir_block): Change new to be new_entry to
289                 avoid C++ namespace clash.
290
291         * bitmaps.c (ext2fs_copy_bitmap): Change new to be new_map to
292                 avoid C++ namespace clash.
293
294         * ext2fs.h, bb_inode.c, block.c, bmove.c, brel.h, brel_ma.c,
295                 irel.h, irel_ma.c, dblist.c, dblist_dir.c, dir_iterate.c,
296                 ext2fsP.h, expanddir.c, get_pathname.c, inode.c, link.c,
297                 unlink.c: Change private to be priv_data (to avoid C++
298                 namespace clash)
299
300 Fri Nov 28 09:26:31 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
301
302         * dblist.c (ext2fs_get_num_dirs): Make ext2fs_get_num_dirs more
303                 paranoid about validating the directory counts from the
304                 block group information.
305
306         * all files: Don't include stdlib.h anymore; include it in
307                 ext2_fs.h, since that file requires stdlib.h
308
309 Thu Nov 20 16:07:38 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
310
311         * expanddir.c (ext2fs_expand_dir): Check to make sure the block
312                 bitmap is loaded, and return an error if it is not.
313                 (expand_dir_proc): Only use ext2fs_write_dir_block when
314                 writing a directory block, not when writing out a fresh
315                 indirect block.
316
317 Tue Nov 11 22:46:45 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
318
319         * Makefile.in, tst_getsize.c: Added new file which is used to test
320                 the ext2fs_get_device_size function.
321
322         * ext2_err.et.in (EXT2_ET_UNIMPLEMENTED): Added new error code.
323
324 Sun Nov  2 20:36:13 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
325
326         * ext2fs.h: Make ext2fs_get_mem take an unsigned argument.
327
328         * fileio.c (ext2fs_file_get_size, ext2fs_file_set_size,
329                 ext2fs_file_get_fs): New functions added.
330
331
332 Fri Oct 31 12:16:52 1997    <tytso@EDT.MIT.EDU>
333
334         * bitops.c (ext2fs_warn_bitmap, ext2fs_warn_bitmap2): Don't call
335                 com_err if OMIT_COM_ERR is defined.
336
337 Thu Oct 30 11:33:57 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
338
339         * Rename new error codes to _ET_ in them for consistency.
340
341 Sat Oct 25 00:06:58 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
342
343         * [all files, basically]: Added definition of ext2fs_get_mem, 
344                 ext2fs_free_mem, and ext2fs_resize_mem in ext2fs.h, and
345                 changed all library routines to use these wrapper functions.
346
347         * dblist.c, mkdir.c: use EXT2_DIR_EXISTS and EXT2_DB_NOT_FOUND
348                 instead of the system error messages.
349         
350         * ext2_err.et.in: Added new error messages EXT2_DIR_EXISTS and
351                 EXT2_DB_NOT_FOUND
352
353         * ext2fs.h: Added function declarations and constants for bmap.c
354                 and fileio.c.
355
356         * ext2_err.et.in: Added new error messages EXT2_FILE_RO and
357                 EXT2_ET_MAGIC_EXT2_FILE
358
359         * Makefile.in: Added files bmap.c and fileio.c, and temporarily
360                 commented out brel_ma.c and irel_ma.c
361
362         * bmap.c: New file which maps a file's logical block number to its
363                 physical block number.
364
365         * fileio.c: New file which implements simple file reading and
366                 writing primitives.
367
368         * alloc.c (ext2fs_alloc_block): New function which allocates a
369                 block, zeros it, and updates the filesystem accounting
370                 records appropriately.
371
372 Wed Oct 22 16:47:27 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
373
374         * ext2_err.et.in: Added new error codes: EXT2_NO_MEMORY,
375                 EXT2_INVALID_ARGUMENT, EXT2_BLOCK_ALLOC_FAIL,
376                 EXT2_INODE_ALLOC_FAIL, EXT2_NOT_DIRECTORY
377
378         * Change various library files to use these functions instead of
379                 EINVAL, ENOENT, etc.
380
381 Mon Oct 20 19:32:40 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
382
383         * llseek.c: Check HAVE_LLSEEK_PROTOTYPE to see whether or not we
384                 need to declare llseek().
385
386 Sun Oct 19 18:56:22 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
387
388         * Rename io.h to be ext2_io.h (avoid namespace collisions)
389
390         * Add #ifdef's for HAVE_SYS_STAT_H and HAVE_SYS_TYPES_H
391
392 Fri Oct  3 13:35:59 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
393
394         * llseek.c (ext2fs_llseek): Fix type error for ext2fs_llseek()
395
396         * icount.c (ext2fs_icount_validate): 
397         * bmove.c (process_block): Fix lint error in type for fprintf().
398
399 Mon Sep 15 11:45:09 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
400
401         * inode.c (ext2fs_check_directory): Add support for the callback
402                 to return the error code EXT2_ET_CALLBACK_NOTHANDLED.
403
404 Thu Sep  4 12:28:22 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
405
406         * bitmaps.c (ext2fs_set_bitmap_padding): New function which sets the
407                 padding of the bitmap to be all one's.
408
409 Wed Sep  3 14:27:30 1997  Theodore Y. Ts'o  <tytso@edt.mit.edu>
410
411         * llseek.c: Added missing semicolon to glibc fixup declaration of
412         llseek().
413
414         * bmove.c: Add #include of errno.h
415
416 Sat Aug 23 22:47:46 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
417
418         * Makefile.in (ELF_SO_VERSION): Bump version to be 2.4 since we've
419                 added a new field to the io_channel (app_data).
420
421         * io.h: Add a new element to the io_channel structure, app_data.
422
423         * initialize.c, openfs.c: Set io->app_data to point at the
424                 filesystem handle.
425
426 Thu Aug 14 08:14:17 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
427
428         * io.h: Change the prototype of ext2fs_llseek() to use int's
429                 instead of unsigned int's.
430
431         * llseek.c: Change to allow PIC and !HAVE_LLSEEK.  Add a prototype
432                 to make life easer for GNU Libc 2.
433
434         * rw_bitmaps.c: On the PowerPC, the big-endian variant of the ext2
435                 filesystem has its bitmaps stored as 32-bit words with bit
436                 0 as the LSB of each word.  Thus a bitmap with only bit 0
437                 set would be, as a string of bytes, 00 00 00 01 00 ...  To
438                 cope with this, we byte-reverse each word of a bitmap if
439                 we have a big-endian filesystem, that is, if we are *not*
440                 byte-swapping other word-sized numbers.
441
442 Mon Aug 11 03:30:48 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
443
444         * dosio.c: New file to do DOS/BIOS disk accesses.
445
446         * namei.c (open_namei): Make pathlen be of type size_t.
447
448         * llseek.c: Always #include stdlib.h since it's need to define
449                 size_t.  
450
451         * io.h: Use errcode_t for magic numbers.
452
453         * icount.c (get_icount_el): Use size_t where appropriate
454         
455         * dupfs.c (ext2fs_dup_handle): 
456         * dblist.c (dir_block_cmp): Use size_t where appropriate.
457
458         * read_bb.c (ext2fs_read_bb_inode): 
459         * cmp_bitmaps.c (ext2fs_compare_inode_bitmap): Use blk_t, ino_t
460                 and size_t where appropriate.
461
462         * closefs.c (ext2fs_flush): Use dgrp_t instead of int where
463                 appropriate.
464
465         * openfs.c (ext2fs_open): 
466         * check_desc.c (ext2fs_check_desc): Use blk_t instead of int where
467                 appropriate.
468
469         * rw_bitmaps.c (read_bitmaps): 
470         * irel_ma.c: 
471         * inode.c (ext2fs_write_inode): 
472         * initialize.c (ext2fs_initialize):
473         * brel_ma.c: Fix to make be 16-bit safe.
474
475         * link.c (ext2fs_link): 
476         * unlink.c (ext2fs_unlink):
477         * lookup.c (lookup_proc): 
478         * ismounted.c (ext2fs_check_if_mounted): 
479         * block.c (xlate_func): Add #pragma argsused for Turbo C.
480
481 Sun Aug 10 10:05:22 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
482
483         * block.c (ext2fs_block_iterate2): Use retval which is a errcode_t
484                 type.
485
486         * bitmaps.c (make_bitmap): Use size_t instead of int where
487                 appropriate.
488
489         * bb_inode.c (set_bad_block_proc): Add #pragma argsused for Turbo C.
490
491         * alloc.c (ext2fs_new_inode): Use ino_t instead of int for the
492                 group number.
493
494         * get_pathname.c: Use ino_t instead of int where appropriate.
495
496         * ext2fs.h: Make the magic structure element be errcode_t instead
497                 of int.
498
499         * alloc.c alloc_tables.c badblocks.c bb_compat.c bb_inode.c
500                 bitmaps.c block.c bmove.c brel_ma.c check_desc.c closefs.c
501                 cmp_bitmaps.c dblist.c dblist_dir.c dir_iterate.c
502                 dirblock.c dupfs.c expanddir.c freefs.c get_pathname.c
503                 icount.c initialize.c inline.c inode.c irel_ma.c link.c
504                 llseek.c lookup.c mkdir.c namei.c newdir.c read_bb.c
505                 read_bb_file.c rs_bitmap.c rw_bitmaps.c swapfs.c 
506                 test_io.c tst_badblocks.c tst_iscan.c unix_io.c unlink.c
507                 valid_blk.c version.c: Add an #ifdef for HAVE_UNISTD_H
508
509 Tue Jun 17 01:33:20 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
510
511         * unix_io.c (unix_read_blk): If ext2fs_llseek() fails, but errno
512                 is zero, then return EXT2_IO_LLSEEK_FAILED.
513
514         * ext2_err.et.in: Add a new error code, EXT2_IO_LLSEEK_FAILED.
515
516         * Release of E2fsprogs 1.11
517
518 Mon Jun 16 23:53:06 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
519
520         * dblist.c (ext2fs_dblist_count): Added new function which returns
521                 the number of directory blocks in dblist.
522
523 Sat Jun 14 01:39:13 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
524
525         * unix_io.c (unix_flush): Make the io_channel flush function do a
526                 fsync to flush the kernel buffers to disk.
527
528 Wed Jun 11 18:25:31 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
529
530         * inode.c (ext2fs_inode_scan_goto_blockgroup): Fix bug; the
531                 current inode number wasn't being set by the
532                 goto_blockgroup function.
533
534 Mon Jun  9 10:45:48 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
535
536         * bmove.c (ext2fs_move_blocks): New function which takes a bitmap
537                 of blocks which need to be moved, and moves those blocks
538                 to another location in the filesystem.
539
540         * rs_bitmap.c (ext2fs_resize_generic_bitmap): When expanding a
541                 bitmap, make sure all of the new parts of the bitmap are
542                 zero. 
543
544 Sun Jun  8 16:24:39 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
545
546         * bitmaps.c (ext2fs_copy_bitmap): Fix bug; the destination bitmap
547                 wasn't being returned to the caller.
548
549         * alloc_tables.c (ext2fs_allocate_group_table): Add new function
550                 ext2fs_allocate_group_table() which sets the group tables
551                 for a particular block group.  The relevant code was
552                 factored out of ext2fs_allocate_tables().
553
554         * dblist.c (make_dblist): Adjust the initial size of the directory
555                 block list to be a bit more realistic (ten plus twice the
556                 number of directories in the filesystem).
557
558 Thu May  8 22:19:09 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
559
560         * badblocks.c (ext2fs_badblocks_list_test): Fix bug where
561                 ext2fs_badblocks_list_test would test the list (and exceed
562                 array boundaries) if there were no bad blocks on the bad
563                 blocks list.  (Showed up when user tried: mke2fs -c -b 4096).
564
565 Thu Apr 24 12:16:42 1997  Theodre Ts'o  <tytso@localhost.mit.edu>
566
567         * Release of E2fsprogs version 1.10
568
569 Thu Apr 24 10:13:42 1997  Theodre Ts'o  <tytso@localhost.mit.edu>
570
571         * alloc_tables.c (ext2fs_allocate_tables): Correctly place the
572                 inode and block bitmaps based on the RAID 0 stride
573                 parameter (which is passed by mke2fs).
574
575         * ext2fs.h: Add "stride" parameter to ext2_filsys, to be used by
576                 mke2fs to communicate the stride length to
577                 ext2fs_allocate_tables()
578
579 Wed Apr 23 21:50:42 1997  Theodre Ts'o  <tytso@localhost.mit.edu>
580
581         * initialize.c (ext2fs_initialize): Fix to compile under Linux 1.2
582                 systems.  (We can't assume that the new filesystem types
583                 are supported.)
584
585 Wed Apr 23 18:40:53 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
586
587         * alloc_tables.c (ext2fs_allocate_tables): Make sure that we
588                 allocate the inode and block bitmaps inside block group at
589                 all times.
590
591 Mon Apr 21 00:06:28 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
592
593         * alloc.c (ext2fs_new_block): Fix bug where if goal==0 and the
594                 filesystem has no free blocks, ext2fs_new_block would loop
595                 forever.
596
597         * dupfs.c (ext2fs_dup_handle): Duplicate an ext2 filesystem handle
598
599         * freefs.c (ext2fs_free_inode_cache): Decrement refcount and only
600                 free if refcount goes to zero.
601
602         * inode.c (create_icache): Initialize refcount to 1.
603
604         * ext2fsP.h: Added refcount to ext2_inode_cache
605
606         * dblist.c (ext2fs_copy_dblist): New function to copy a directory
607                 block list.
608
609         * badblocks.c (ext2fs_badblocks_copy): New function to copy a
610                 badblocks structure.
611
612 Sun Apr 20 23:19:51 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
613
614         * bitmaps.c (ext2fs_copy_bitmap): New function to copy a bitmap.
615
616         * unix_io.c, test_io.c (unix_open, test_open): Initialize the
617                 refcount to 1.
618                 (unix_close, test_close): Decrement the refcount and only
619                 close the io_channel if the refcount goes to 0.
620
621         * io.h: Add refcount to the io_channel structure.  Add new macro
622                 interface io_channel_bumpcount() to bump the refcount.
623
624 Thu Apr 17 20:25:03 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
625
626         * inode.c (ext2fs_read_inode, ext2fs_write_inode): Use the inode
627                 cache in the filesystem handle, instead of the inode cache
628                 in a static variable.
629
630         * freefs.c: Added static function to free the inode cache (called by
631                 ext2fs_free). 
632
633         * ext2fsP.h: Added definition of the ext2_inode_cache structures.
634
635         * ext2fs.h: Added pointer to the inode_cache structure.
636
637         * block.c (block_iterate_ind, block_iterate_dind, 
638                 block_iterate_tind): If there are holes in the indirect,
639                 doubly indirect, or triply indirect blocks, increment the
640                 block count field automatically.
641
642 Thu Apr 17 12:23:38 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
643
644         * Release of E2fsprogs version 1.09
645
646 Mon Apr 14 20:38:56 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
647
648         * version.c (ext2fs_parse_version_string): Check the passed in
649                 version string (instead of the hard-coded one).
650
651         * alloc_tables.c (ext2fs_allocate_tables): If the last block is
652                 greater filesystem size, clamp it to prevent allocating a
653                 block or inode bitmap beyond the filesystem.
654
655         * initialize.c (ext2fs_initialize): Fix bug where the metatdata
656                 overhead calculation was accidentally removed.
657
658 Fri Apr 11 18:56:26 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
659
660         * Release of E2fsprogs version 1.08
661
662 Thu Apr 10 13:15:15 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
663
664         * dblist.c (ext2fs_set_dir_block): New function which sets the
665                 block of a dblist entry, given the directory inode and
666                 blockcnt.
667
668 Sat Apr  5 12:42:42 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
669
670         * alloc_tables.c (ext2fs_allocate_tables): Allocate the bitmap and
671                 inode bitmaps at staggered locations across the block
672                 groups, to avoid concentrating the bitmaps on a small
673                 number of disks when using striped RAID arrays.
674
675         * initialize.c (ext2fs_initialize): By default, choose the maximum
676                 possible number of blocks per group (based on the size of
677                 the bitmaps in the blocksize).
678
679 Fri Apr  4 11:28:16 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
680
681         * initialize.c (ext2fs_initialize): Add support for
682                 EXT2_COMPAT_SPARSE_SUPER feature.
683
684         * closefs.c (ext2fs_bg_has_super): New function to determine
685                 whether or a particular block group should have a
686                 superblock and block group descriptor.  Used for the
687                 EXT2_COMPAT_SPARSE_SUPER feature is turned on.
688                 (ext2fs_flush):  Check ext2fs_bg_has_super to see whether
689                 or not the superblock should be written out for the block
690                 group. 
691
692         * ext2fs.h (EXT2_COMPAT_SPARSE_SUPER): Define compatibility flag
693                 for sparse duplicate superblocks.
694
695         * version.c (ext2fs_get_library_version): New function which
696                 returns the library version.
697
698         * version.c (ext2fs_parse_version_string): New function which
699                 parses a version string and returns a version number,
700                 so application programs can compare version numbers as
701                 integers.
702
703 Wed Mar 26 00:43:52 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
704
705         * icount.c (ext2fs_create_icount): Change function so that it also
706                 takes a new argument which contains a "hint" icount
707                 structure.  This "hint" icount allows the create function
708                 to set up the sorted list in advance.  This reduces
709                 significantly the amount of data moving needed to insert
710                 these inodes into the list later.
711         
712         * icount.c (ext2fs_icount_validate): New function which validates
713                 that the icount structure's rep invariant.
714
715         * icount.c (get_icount_el): Completely revamped implementation
716                 to subsume put_icount_el().  Put_icount_el() used to
717                 use an O(N) implementation to insert in the middle
718                 of the icount list.  It now uses a O(ln N) to search
719                 for where the icount should be inserted, and then uses
720                 a memcpy to move the list down (instead of a for loop).
721         
722         * icount.c (ext2fs_icount_fetch, ext2fs_icount_store,
723                 ext2fs_icount_increment, ext2fs_icount_decrement): Check
724                 to see if the inode is within bounds; if it isn't, return
725                 EINVAL.
726
727         * bitops.h (ext2fs_test_generic_bitmap): Fix error message given
728                 when a bad inode number is passed to test_generic_bitmap
729                 to be EXT2FS_TEST_ERROR instead of the wrong
730                 EXT2FS_UNMARK_ERROR.
731
732 Wed Mar 12 13:32:05 1997  Theodore Y. Ts'o  <tytso@mit.edu>
733
734         * Release of E2fsprogs version 1.07
735
736 Sun Mar  2 16:46:18 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
737
738         * Makefile.in (ELF_VERSION): Change version to be 2.2
739
740 Tue Feb 11 14:54:02 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
741
742         * alloc.c (ext2fs_get_free_blocks): Change routine to use
743                 ext2fs_fast_test_block_bitmap_range().
744
745         * bitops.h (ext2fs_fast_test_block_bitmap_range,
746                 ext2fs_test_block_bitmap_range: New inline functions which
747                 test to see whether a contiguous range of blocks is
748                 available.
749
750 Thu Feb  6 10:00:13 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
751
752         * badblocks.c (ext2fs_badblocks_list_create): Rename sybmols to use
753                 use ext2fs_badblocks_* instead of badblocks_*
754
755         * bb_compat.c: New file which translates between old badblocks_*()
756                 names to ext2fs_badblocks_*()
757
758         * unlink.c (ext2fs_unlink): New file, moved ext2fs_unlink() from
759                 link.c (since e2fsck doesn't use ext2fs_unlink()).
760
761         * rs_bitmap.c (ext2fs_resize_generic_bitmap): New file, contains
762                 bitmap resizing routine moved from bitmaps.c, since e2fsck
763                 doesn't need to use this function.
764
765         * lookup.c (ext2fs_lookup): Moved ext2fs_lookup to its own file,
766                 since e2fsck only needs ext2fs_lookup.
767
768 Mon Feb  3 10:11:40 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
769
770         * inode.c (ext2fs_open_inode_scan): Set fs->badblocks if it is not
771                 already set; this is needed so that programs like dump
772                 which use the inode scan functions will deal with
773                 filesystems that have bad blocks in the inode table.
774
775 Sun Feb  2 00:17:36 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
776
777         * ext2fs.h (struct_badblocks_list, struct_badblocks_iterate): 
778                 Moved to ext2fsP.h, since it doesn't need to be part of
779                 the public interface.
780
781         * dir_iterate.c: Move ext2_dir_iterate out of namei.c.
782
783 Sat Feb  1 10:14:55 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
784
785         * dblist.c (ext2fs_get_num_dirs): New file, which implements a
786                 directory block list abstraction.  (Code moved from
787                 e2fsck).
788
789         * ext2fs.h, inode.c: Moved definition of ext2_struct_inode_scan to
790                 to inode.c (since no one else should be peeking inside it!)
791
792         * valid_blk.c (ext2_inode_has_valid_blocks): New function.
793
794         * openfs.c (ext2fs_open): Check the feature set in the ext2
795                 superblock, and refuse to open filesystems if they contain
796                 incompatible features.  (Can be overriden with the
797                 EXT2_FLAG_FORCE 
798
799 Sun Jan 12 11:31:46 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
800
801         * block.c (ext2fs_block_iterate2): Added new function
802                 ext2fs_block_iterate2 which changes the function
803                 signature of the callback function to include the
804                 referencing block and offset.
805
806         * inode.c (ext2fs_inode_scan_goto_blockgroup): Added new function
807                 ext2fs_inode_scan_goto_blockgroup which allows an
808                 application to jump to a particular block group while
809                 doing an inode scan.
810
811 Wed Jan  1 23:50:12 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
812
813         * dirblock.c: Include string.h, since we use memcpy().
814
815 Tue Dec  3 12:27:29 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
816
817         * getsize.c (ext2fs_get_device_size): The ioctl BLKGETSIZE returns
818                 a long not an int; this doesn't matter on i386 machines,
819                 but it does on Alpha's.
820         
821 Fri Nov 29 20:57:37 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
822
823         * inode.c (ext2fs_write_inode, ext2fs_read_inode): If the inode
824                 table pointer is NULL, then return an error indicating
825                 that the inode table is missing.
826                 (get_next_blockgroup, get_next_blocks,
827                 ext2fs_get_next_inode): Don't treat a missing inode table
828                 as permanent error.  Return MISSING_INODE_TABLE, but as an
829                 advisory error code, much like BAD_BLOCK_IN_INODE_TABLE.
830
831         * rw_bitmaps.c (ext2fs_write_block_bitmap,
832                 ext2fs_write_inode_bitmap): If the inode or block bitmap
833                 block is zero, then don't write out the inode or block
834                 bitmap.  The idea here is to avoid stomping on the
835                 superblock.
836                 (read_bitmaps): If the inode or block bitmap block is
837                 zero, then fill in that portion of the inode or block
838                 bitmap with all zeros.
839
840         * inode.c (ext2fs_get_next_inode): Fix bug in handling of bad
841                 blocks in inode table when the inode table size is
842                 non-standard (and can therefore span blocks).
843
844 Tue Oct 29 20:13:14 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
845
846         * alloc.c (ext2fs_new_block): Fix fencepost error in
847                 ext2fs_new_block; make sure we don't try to allocate the
848                 first block beyond the end of the filesystem.
849
850 Mon Oct 14 11:00:48 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
851
852         * inode.c (check_for_inode_bad_blocks): New function called by
853                 get_next_blocks() to avoid reading in bad blocks marked in
854                 fs->badblocks.  Inodes located in bad blocks are returned
855                 by ext2fs_get_next_inode() returns the error code 
856                 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE.
857         
858         * alloc_tables.c (ext2fs_allocate_tables): New function which
859                 performs the part of mke2fs's job of allocating the 
860                 filesystem tables.
861
862         * test_io.c (test_close): IO manager which is used for testing
863                 purposes.
864
865 Sun Oct 13 04:31:57 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
866
867         * inode.c (ext2fs_get_next_inode): Separate out the function of
868                 setting up for a new block group to get_next_blockgroup().
869                 Separate out the function of reading in blocks of the
870                 inode table to get_next_blocks().
871
872         * ext2fs.h: Add the badblocks list to the ext2_filsys entry
873
874         * badblocks.c (badblocks_list_add, badblocks_list_test): Add
875                 blocks to the badblock list in sorted order.  This allows
876                 badblocks_list_test to be coded using a binary search for
877                 speed.
878
879 Tue Oct  8 02:02:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
880
881         * Release of E2fsprogs version 1.06
882
883 Mon Oct  7 00:44:17 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
884
885         * ext2fs.h, block.c, closefs.c, dirblock.c, inode.c, native.c,
886                 open.c: Change EXT2_SWAP to EXT2_FLAG_SWAP for
887                 consistency's sake.
888         
889         * closefs.c (ext2fs_flush): If the flag EXT2_MASTER_SB_ONLY is
890                 set, then only write out the master superblock.
891
892 Sun Oct  6 21:45:26 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
893
894         * block.c (ext2fs_block_iterate): Fixed bug which caused
895                 block_iterate to fail to handle HURD created filesystems;
896                 it tested the inode translator field before the inode was
897                 loaded.
898
899 Tue Sep 17 14:08:24 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
900
901         * initialize.c (ext2fs_initialize): Make sure the description for
902                 the inode bitmap is set correctly.
903
904         * bitmaps.c (ext2fs_allocate_generic_bitmap): Fix minor type typo.
905
906 Thu Sep 12 15:23:07 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
907
908         * Release of E2fsprogs version 1.05
909
910 Sat Sep  7 07:36:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
911
912         * initialize.c: Override the kernel's idea of default
913                 checkinterval from 0 (never) to 180 days.
914
915 Wed Aug 28 03:20:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
916
917         * namei.c (ext2fs_namei_follow): New function which follows
918                 symbolic link (if any) at the target.
919
920 Tue Aug 27 01:48:43 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
921
922         * inode.c (ext2fs_read_inode, ext2fs_write_inode): Add support
923                 for shortcut function fs->read_inode() and fs->write_inode().
924                 Added inode_cache to reduce CPU time spent in doing
925                 byte swapping.
926
927         * swapfs.c (ext2fs_swap_super): Swap the new fields in a V2
928                 superblock.
929
930         * namei.c (ext2fs_follow_link): New function.
931                 (ext2fs_namei): Extended to have support for chasing
932                 symbolic links.  ext2fs_namei() still returns an inode
933                 which is a symbolic link.  Symbolic links are only chased
934                 while resolving the containing directory.  To chase
935                 symbolic links of the final result, use
936                 ext2fs_follow_link().
937
938 Mon Aug 26 23:46:07 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
939
940         * ext2_err.et.in: Added new error code EXT2_ET_SYMLINK_LOOP.
941
942         * bitops.h (ext2fs_set_bit, ext2fs_celar_bit): Use asm inlines
943                 provided by Pete A. Zaitcev (zaitcev@lab.sun.mcst.ru).
944
945 Thu Aug 22 00:40:18 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
946
947         * initialize.c (ext2fs_initialize): On systems where the byte
948                 order is not i386 compatible, set the swap_byte flag.
949
950         * inode.c (inocpy_with_swap): Check to see if inode contains a
951                 fast symlink before swapping the inode block fields.  This
952                 required adding a new argument to inocpy_with_swap to
953                 determine whether the mode field is in host order or not.
954
955 Wed Aug 21 00:45:42 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
956
957         * bitops.h (ext2fs_set_bit, ext2fs_clear_bit, ext2fs_test_bit): On
958                 the sparc, if EXT2_STD_BITOPS set, use the standard
959                 i386-compatible bitmask operations, instead on the
960                 non-standard native bitmask operators.
961
962 Fri Aug  9 11:11:35 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
963
964         * block.c (ext2fs_block_iterate): Cause block iterator to return
965                 the HURD translator block (along with everything else).
966                 If the flag BLOCK_FLAG_DATA_ONLY is passed to the block
967                 iterator, then don't return any meta data blocks
968                 (including the HURD translator).
969
970 Wed Jul 17 17:13:34 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
971
972         * gen_uuid.c: New file, which generates DCE-compatible UUIDs.
973
974         * uuid.c: New file, containing UUID utility functions.
975
976 Tue Jul 16 10:19:16 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
977
978         * ext2fs.h: Add a definition of the "real" ext2 superblock.
979
980 Fri May 24 14:54:55 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
981
982         * ext2fs.h: Fix erroneous ino_t type used in block_bitmap type.
983
984 Sun May 19 15:39:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
985
986         * openfs.c (ext2fs_open): If the blocksize in the superblock is
987                 zero, return the error EXT2_ET_CORRUPT_SUPERBLOCK, since
988                 that's a basic value that must be correct for the rest of
989                 the library to work.
990
991         * ext2_err.et.in (EXT2_ET_CORRUPT_SUPERBLOCK): Added new error
992                 code.
993
994 Thu May 16 11:12:30 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
995
996         * Release of E2fsprogs version 1.04
997
998 Wed Mar 27 00:33:40 1996    <tytso@rsts-11.mit.edu>
999
1000         * Release of E2fsprogs version 1.03
1001
1002 Tue Mar 26 12:06:32 1996    <tytso@rsts-11.mit.edu>
1003
1004         * bitops.h (ext2fs_set_bit, ext2fs_clear_bit, ext2fs_test_bit):
1005                 Change the m68k bit numbering for bitmasks to match with
1006                 the bit numbering used by all other ext2 implementations.
1007
1008 Thu Mar  7 03:37:00 1996    <tytso@rsts-11.mit.edu>
1009
1010         * inode.c (ext2fs_get_next_inode, ext2fs_close_inode_scan, 
1011         ext2fs_open_inode_scan): Support dynamically-sized inodes.
1012
1013 Wed Mar  6 12:26:29 1996    <tytso@rsts-11.mit.edu>
1014
1015         * inode.c (ext2fs_read_inode, ext2fs_write_inode): Support
1016                 dynamically-sized inodes.
1017
1018         * openfs.c (ext2fs_open): Allow dynamic revision filesystem to be
1019                 loaded.
1020
1021 Tue Mar  5 03:49:37 1996    <tytso@rsts-11.mit.edu>
1022
1023         * initialize.c (ext2fs_initialize): Catch an error condition where
1024                 the passed in size is *really* too small.
1025
1026         * alloc.c (ext2fs_new_inode): 
1027         * ext2fs.h (EXT2_FIRST_INODE): Add support for dynamic revision to
1028                 get first inode.
1029
1030 Wed Feb 21 15:56:17 1996    <tytso@rsts-11.mit.edu>
1031
1032         * getsize.c (ext2fs_get_device_size): Open the device read-only
1033                 when trying to determine its size.
1034
1035 Wed Jan 31 11:06:08 1996    <tytso@rsts-11.mit.edu>
1036
1037         * Release of E2fsprogs version 1.02
1038
1039 Sat Dec  9 09:57:50 1995    <tytso@rsts-11.mit.edu>
1040
1041         * rw_bitops.c (ext2fs_write_block_bitmap):
1042         * bitops.c (ext2fs_test_bit, ext2fs_clear_bit, ext2fs_set_bit):
1043         * bitops.h (ext2fs_test_bit, ext2fs_clear_bit, ext2fs_set_bit):
1044                 Rename {test,set,clear}_bit to ext2fs_{test,set,clear}_bit, 
1045                 to avoid conflicts with with kernel include files.  Also
1046                 rename ADDR and CONST_ADDR to EXT2FS_ADDR and
1047                 EXT2FS_CONST_ADDR. 
1048
1049 Thu Oct 26 12:09:16 1995    <tytso@rsts-11.mit.edu>
1050
1051         * ext2_err.et: Updated message in EXT2_ET_BASE to say version 0.5c
1052
1053         * swapfs.c (ext2fs_swap_super): Put an #ifdef check around
1054                 s_def_resuid and s_def_resgid for backwards compatibility.
1055
1056 Fri Oct 20 23:33:31 1995    <tytso@rsts-11.mit.edu>
1057
1058         * bitops.h: Added #ifdef's for Sparc.
1059
1060 Wed Sep  6 22:14:46 1995    <tytso@rsts-11.mit.edu>
1061
1062         * getsize.c: #include <sys/ioctl.h> under Linux to pick up ioctl()
1063                 declaration
1064
1065         * closefs.c: #include <string.h> to pick up memset() declaration
1066
1067 Mon Sep  4 21:45:29 1995  Remy Card  <card@bbj>
1068
1069         * Makefile.in: Added support for BSD shared libraries.
1070
1071         * initialize.c (ext2fs_initialize): Correctly set the s_creator_os
1072                 flag.
1073
1074 Mon Sep  4 09:55:30 1995    <tytso@rsts-11.mit.edu>
1075
1076         * unix_io.c (unix_open): Add a double check; if the passed in name
1077                 is NULL, return EXT2_ET_BAD_DEVICE_NAME.
1078
1079         * ext2_err.et (EXT2_ET_BAD_DEVICE_NAME): Added new error code
1080
1081 Wed Aug 16 15:44:10 1995    <tytso@rsts-11.mit.edu>
1082
1083         * inode.c (ext2fs_check_directory): Use LINUX_S_ISDIR instead of
1084                 S_ISDIR.
1085
1086 Tue Aug 15 13:08:36 1995    <tytso@rsts-11.mit.edu>
1087
1088         * getsize.c (ext2fs_get_device_size): Add support for reading the
1089                 partition size from a BSD disk label.
1090
1091 Thu Aug 10 09:33:26 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
1092
1093         * getsize.c (ext2fs_get_device_size): New function that determins
1094                 the size of a device.  Used by mke2fs and e2fsck.
1095
1096 Sat Aug 12 03:09:54 1995  Remy Card  <card@bbj>
1097
1098         * Makefile.in (install): Install static libraries in $(ulibdir)
1099                 (/usr/lib on Linux) instead of $(libdir) (/lib on Linux).
1100
1101 Wed Aug  9 17:04:23 1995  Theodore Y. Ts'o  <tytso@dcl>
1102
1103         * bitmaps.c (ext2fs_free_inode_bitmap, ext2fs_free_block_bitmap):
1104                 Move these functions to freefs.c.
1105
1106         * closefs.c (ext2fs_flush): If swapping blocks, clear the group
1107                 descriptors shadow memory to keep purify quiet.  (This
1108                 also has the nice benefit that the unused portion of the
1109                 shadow descriptors are zeroed out.)
1110
1111         * dirblock.c (ext2fs_write_dir_block): We need to use
1112                 dirent->rec_len *before* it's byteswapped to find the
1113                 location of the next directory structure!
1114
1115         * alloc.c (ext2fs_new_inode): Fix bug which could potentially
1116                 cause ext2fs_new_inode to loop infinitely if we're trying
1117                 to allocate an inode in group #0 and there are no free
1118                 inodes at all in the system.
1119
1120         * closefs.c: #include <errno.h> if it exists.
1121
1122 Sun Aug  6 13:27:50 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
1123
1124         * ext2fs.h (BLOCK_FLAG_HOLE): Added new definition for
1125                 BLOCK_FLAG_APPEND.  Added documentation for the block
1126                 interator flags.
1127
1128 Sat Aug  5 11:44:05 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
1129
1130         * Makefile.in (DLL_INSTALL_DIR, ELF_INSTALL_DIR): Set the
1131                 installation directories correctly.
1132
1133 Tue Jul 18 09:27:38 1995    <tytso@rsx-11.mit.edu>
1134
1135         * namei.c (process_dir_block): 
1136         * mkdir.c (ext2fs_mkdir): 
1137         * expanddir.c (expand_dir_proc): Use ext2fs_{read,write}_dir_block
1138                 to read/write the directory block.
1139
1140         * dirblock.c (ext2fs_read_dir_block), ext2fs_write_dir_block): New
1141                 file containing functions for reading and writing
1142                 directory blocks (byte swapping if necesssary)
1143
1144         * block.c (block_iterate_ind, block_iterate_dind, 
1145                 block_iterate_tind): Byte swap the block addresses if
1146                 EXT2_SWAP_BYTES is set (and swap them back before writing
1147                 them out.)
1148
1149         * inode.c (inocpy_with_swap): New function.
1150         (ext2fs_get_next_inode, ext2fs_read_inode, ext2fs_write_inode):
1151                 Call inocpy_with_swap if EXT2_SWAP_BYTES if set.
1152
1153         * closefs.c (ext2fs_flush): If EXT2_SWAP_BYTES is set, then swap
1154                 the superblock and group descriptors before writing it out.
1155
1156         * openfs.c (ext2fs_open): If the magic number is byte-swapped,
1157                 then set the EXT2_SWAP_BYTES and byte-swap the superblock
1158                 and group descriptors.
1159
1160         * swapfs.c (ext2fs_swap_super, ext2fs_swap_group_desc): New functions
1161                 to desp ext2 filesystem structures.
1162
1163         * bitops.c (set_bit, clear_bit, test_bit): Use modifications
1164                 supplied by Pete A. Zaitcev so that the C language
1165                 versions of these functions are more portable.  They will
1166                 now work on both little and big endian systems, and the
1167                 assumption that 32-bit integers are used is gone.
1168
1169         * bitops.h (ext2_swab16, ext2_swab32): Added new functions for
1170                 doing byte swapping.
1171
1172         * ext2fs.h (EXT2_SWAP_BYTES): Add new flag which indicates that
1173                 byte swapping should take place.
1174
1175 Sun Jul 16 06:21:43 1995    <tytso@rsx-11.mit.edu>
1176
1177         * Makefile.in, cmp_bitmaps.c (ext2fs_compare_block_bitmap_end,
1178                 ext2fs_compare_inode_bitmap_end): Added new file
1179                 containing routines to compare bitmaps.
1180
1181         * ext2_err.et (EXT2_ET_NEQ_BLOCK_BITMAP, EXT2_ET_NEQ_INODE_BITMAP): 
1182                 Added new error codes.
1183
1184 Sat Jul 15 04:23:37 1995    <tytso@rsx-11.mit.edu>
1185
1186         * inode.c (ext2fs_get_next_inode): Don't check scan->inode_buffer;
1187                 if the magic number is correct, it will be allocated.
1188
1189 Fri Jul 14 19:02:59 1995    <tytso@rsx-11.mit.edu>
1190
1191         * block.c (block_iterate_ind, block_iterate_dind, 
1192                 block_iterate_tind): Don't recompute block_nr each loop;
1193                 just increment it!  Factor check of BLOCK_FLAG_APPEND out
1194                 of the loop.  Factor mask of BLOCK_CHANGED into changed
1195                 variable out of the loop.  (block_iterate_ind, in
1196                 particular, gets called a lot, so every little
1197                 optimization helps.)
1198
1199 Thu Jul 13 08:02:45 1995    <tytso@rsx-11.mit.edu>
1200
1201         * block.c (block_iterate_ind, block_iterate_dind, 
1202                 block_iterate_tind): Precompute limit of loop to speed up
1203                 block_iterate_ind and company.
1204
1205         * bitops.h (ext2fs_fast_mark_block_bitmap, 
1206                 ext2fs_fast_unmark_block_bitmap, ext2fs_fast_test_block_bitmap,
1207                 ext2fs_fast_mark_inode_bitmap, ext2fs_fast_unmark_inode_bitmap,
1208                 ext2fs_fast_test_inode_bitmap): Add fast version of these
1209                 functions, which don't do range checking.
1210
1211         * bitops.h (ext2fs_get_block_bitmap_start, 
1212                 ext2fs_get_inode_bitmap_start, ext2fs_get_block_bitmap_end,
1213                 ext2fs_get_inode_bitmap_end): Add new accessor functions
1214                 which return the start and end points of the bitmaps.
1215
1216 Tue Jul 11 18:59:41 1995    <tytso@rsx-11.mit.edu>
1217
1218         * llseek.c (ext2_llseek): If the offset is small enough, use lseek
1219                 instead of llseek.  The errno if the offset is too large
1220                 and lseek is not supported should be EINVAL, not -EINVAL.
1221
1222 Thu Jun 15 23:43:02 1995  Remy Card  <card@bbj>
1223
1224         * Makefile.in: Added support for ELF shared libraries.
1225                 Fixed typos in the compilation rules.
1226                 (distclean): Added Makefile.
1227
1228         * llseek.c (llseek): New function, if llseek() does not exist in the
1229         C library.
1230         (ext2_llseek): Changed to call llseek().
1231
1232 Mon Jun 12 08:29:07 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
1233
1234         * ext2fs.h: Use __u32 to define blk_t, instead of unsigned long.
1235
1236 Sun Jun 11 15:02:54 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
1237
1238         * mkdir.c (ext2fs_mkdir): Use LINUX_S_IFDIR instead of S_IFDIR.
1239
1240         * ext2fs.h (LINUX_S_IFDIR): Define a linux specific versions of
1241                 the S_*, which are normally defined in <sys/stat.h>.  This
1242                 allows us to compile e2fsprogs on a non-Linux system,
1243                 which may have a different value for S_IFDIR.
1244
1245 Sat Jun 10 23:47:05 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
1246
1247         * bitops.c (clear_bit, set_bit): Remove calls to cli() and sti();
1248                 this is a user-mode application!
1249
1250 Thu Jun  8 13:13:22 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>
1251
1252         * llseek.c: Put the include of <linux/unistd.h> inside the #ifdef
1253         __linux__ so that non-linux systems won't see it.
1254
1255         * alloc.c: Include <errno.h> if possible.
1256         * badblocks.c: Ditto.
1257         * bb_inode.c: Ditto.
1258         * bitmaps.c: Ditto.
1259         * block.c: Ditto.
1260         * expanddir.c: Ditto.
1261         * get_pathname.c: Ditto.
1262         * initialize.c: Ditto.
1263         * inode.c: Ditto.
1264         * llseek.c: Ditto.
1265         * mkdir.c: Ditto.
1266         * namei.c: Ditto.
1267         * newdir.c: Ditto.
1268         * openfs.c: Ditto.
1269         * rw_bitmaps.c: Ditto.
1270         * unix_io.c: Ditto.
1271
1272         * Makefile.in: Rewritten to conform to GNU coding standards and
1273         support separate compilation directories.
1274
1275 Thu May 11 04:13:12 1995    <tytso@rsx-11.mit.edu>
1276
1277         * initialize.c (ext2fs_initialize): Don't allow more than one
1278                 bitmaps's worth of inodes in a group.
1279
1280 Sat Mar 11 14:07:11 1995  Theodore Y. Ts'o  <tytso@localhost>
1281
1282         * llseek.c (ext2_llseek): Added error checking to the llseek()
1283                 compat code to protect against overflow.  This only
1284                 applies to 1.0 and early 1.1 kernels, which don't support
1285                 the llseek() system call.
1286
1287 Thu Nov 24 16:29:00 1994  Theodore Y. Ts'o  (tytso@rt-11)
1288
1289         * unix_io.c (unix_open): Initialize the read_error and write_error
1290                 io_channel pointers to be null.
1291
1292         * bb_inode.c (clear_bad_block_proc): If an illegal block number is
1293                 found, clear it but don't try to update the filesystem
1294                 accounting information, since that's hopeless anyway.
1295
1296         * block.c (bloblock_iterate_ind, bloblock_iterate_dind,
1297         bloblock_iterate_tind): Check to see if the indirect blocks are
1298                 valid before trying to read them.
1299
1300         * ext2_err.et (EXT2_ET_BAD_IND_BLOCK, EX2_ET_BAD_DIND_BLOCK,
1301         EXT2_ET_BAD_TIND_BLOCK): Add new error codes.
1302
1303         * bitops.h (ext2fs_mark_block_bitmap, ext2fs_unmark_block_bitmap,
1304         ext2fs_test_block_bitmap, ext2fs_mark_inode_bitmap,
1305         ext2fs_unmark_inode_bitmap, ext2fs_test_inode_bitmap):  If an
1306                 illegal block or inode number is passed in, return instead
1307                 of trying to test, set, or clear the bit.
1308
1309 Mon Nov  7 21:32:33 1994  Remy Card  <card@bbj>
1310
1311         * Makefile: Added a dummy install target in case shared libraries
1312                 are not built.
1313
1314 Mon Oct 24 14:11:44 1994    (tytso@rsx-11)
1315
1316         * bitmaps.c (ext2fs_allocate_block_bitmap): Fix calculation of how
1317                 the real last block of the bitmap should be calculated.
1318
1319 Wed Sep  7 10:05:36 1994    (tytso@rsx-11)
1320
1321         * bitmaps.c (ext2fs_fudge_inode_bitmap_end, 
1322                 ext2fs_fudge_block_bitmap_end, ext2fs_clear_inode_bitmap,
1323                 ext2fs_clear_block_bitmap, ext2fs_free_inode_bitmap,
1324                 ext2fs_free_block_bitmap): Add magic number checking for
1325                 the inode and block bitmaps.
1326
1327         * bitmaps.c (ext2fs_allocate_block_bitmap): Fix to set the correct
1328                 magic number for a block bitmap instead of an inode bitmap.
1329
1330         * inode.c (ext2fs_close_inode_scan, ext2fs_get_next_inode):  Add
1331                 magic number checking for the inode_scan structure.
1332
1333         * badblocks.c (badblocks_list_free, badblocks_list_add, 
1334                 badblocks_list_test, badblocks_list_iterate_begin,
1335                 badblocks_list_iterate, badblocks_list_iterate_end): Add
1336                 magic number checking for the badblocks_list and
1337                 badblocks_iterate structures.
1338
1339         * ext2_err.et (EXT2_ET_MAGIC_UNIX_IO_CHANNEL): 
1340         * unix_io.c (unix_open, unix_close, unix_set_blksize, unix_read_blk,
1341                 unix_write_blk, unix_flush): Add magic number checking
1342                 both for io_channel structure and unix_private_data
1343                 structure.
1344
1345         * openfs.c (ext2fs_open): Add check for io_manager structure's
1346                 magic number.
1347
1348         * rw_bitmaps.c (ext2fs_write_inode_bitmap, ext2fs_write_block_bitmap,
1349                 ext2fs_read_inode_bitmap, ext2fs_read_block_bitmap,
1350                 ext2fs_read_bitmaps, ext2fs_write_bitmaps): 
1351         * read_bb.c (ext2fs_read_bb_inode): 
1352         * read_bb_file.c (ext2fs_read_bb_FILE): 
1353         * newdir.c (ext2fs_new_dir_block): 
1354         * namei.c (ext2fs_dir_iterate, ext2fs_lookup, ext2fs_namei): 
1355         * link.c (ext2fs_link, ext2fs_unlink): 
1356         * inode.c (ext2fs_open_inode_scan, ext2fs_read_inode,
1357                 ext2fs_write_inode, ext2fs_get_blocks, 
1358                 ext2fs_check_directory): 
1359         * get_pathname.c (ext2fs_get_pathname): 
1360         * expanddir.c (ext2fs_expand_dir): 
1361         * block.c (ext2fs_block_iterate): 
1362         * bitmaps.c (ext2fs_allocate_inode_bitmap, 
1363                 ext2fs_allocate_block_bitmap): 
1364         * bb_inode.c (ext2fs_update_bb_inode): 
1365         * alloc.c (ext2fs_new_inode,ext2fs_new_block,ext2fs_get_free_blocks): 
1366         * check_desc.c (ext2fs_check_desc): 
1367         * closefs.c (ext2fs_close, ext2fs_flush): 
1368         * freefs.c (ext2fs_free): Add check for ext2_filsys magic number.
1369
1370         * Makefile:
1371         * ext2fs.h:
1372         * openfs.c:
1373         * check_desc.c (ext2fs_check_desc): Move ext2fs_check_desc from
1374         openfs.c into its own file.
1375
1376         * ext2fs.h (EXT2_CHECK_MAGIC): Added macro for checking for
1377         structure magic numbers.
1378
1379         * closefs.c (ext2fs_flush): Folded in Remy Card's changes to clear
1380         the EXT2_VALID_FS flag in the backup superblock blocks, so that if
1381         someone uses the -b option to specify the use of the backup
1382         superblock --- this usually means that the main superblock is
1383         toast.  :-)
1384
1385         * ext2fs.h: 
1386         * ext2_err.et (EXT2_ET_REV_TOO_HIGH): 
1387         * openfs.c (ext2fs_open): Folded in Remy Card's changes to add a
1388         revision level to the superblock.
1389
1390 Sun Aug 21 00:50:08 1994  Theodore Y. Ts'o  (tytso@rt-11)
1391
1392         * ext2fs.h:
1393         * bitmaps.c:
1394         * bitops.c
1395         * bitops.h:
1396         * openfs.c:
1397         * initialize.c: Completely revamped the inode and block bitmap
1398         structures, so that they can be better chance of being extensible
1399         in a shared library.  They are now their own type, instead of
1400         being a char *.  Also, the function signatures of
1401         ext2fs_test_block_bitmap, ext2fs_mark_block_bitmap,
1402         ext2fs_unmark_block_bitmap, ext2fs_test_inode_bitmap,
1403         ext2fs_mark_inode_bitmap, and ext2fs_unmark_inode_bitmap were
1404         changed to eliminate the ext2_filsys argument, since it is no
1405         longer necessary.
1406
1407 Wed Aug 17 21:46:44 1994  Remy Card  (card@bbj)
1408
1409         * unix_io.c (unix_read_blk and unix_write_blk): use the llseek
1410         system call if available.
1411
1412         * llseek.c: new file.  This is the stub calling the llseek system
1413         call which allows supports for 2GB+ file systems.
1414
1415         * initialize.c (ext2fs_initialize): Ext2fs_initialize now stores
1416         the creator operating system.
1417
1418 Wed Aug 17 10:03:24 1994  Theodore Y. Ts'o  (tytso@rt-11)
1419
1420         * initialize.c (ext2fs_initialize): Ext2fs_initialize now sets up
1421         the group descriptor statistics in addition to everything else.
1422         This relieves mke2fs of the responsibility of doing it.
1423
1424         * bitops.c, bitops.h: Add assembly inline functions for the 68000.
1425         Added a new #define, _EXT2_HAVE_ASM_BITOPS_ to control whether or
1426         not the generic C function equivalents should be included or not.
1427
1428         * openfs.c (ext2fs_open): If a superblock is specified, then use
1429         the backup group descriptors that go along with this superblock,
1430         instead of using the primary group descriptors.  This allows
1431         e2fsck to recover filesystems where the primary group descriptors
1432         have been trashed.
1433
1434