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