Whamcloud - gitweb
ChangeLog, ext2_err.et.in, unix_io.c:
[tools/e2fsprogs.git] / lib / ext2fs / ChangeLog
1 Tue Jun 17 01:33:20 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
2
3         * unix_io.c (unix_read_blk): If ext2fs_llseek() fails, but errno
4                 is zero, then return EXT2_IO_LLSEEK_FAILED.
5
6         * ext2_err.et.in: Add a new error code, EXT2_IO_LLSEEK_FAILED.
7
8         * Release of E2fsprogs 1.11
9
10 Mon Jun 16 23:53:06 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
11
12         * dblist.c (ext2fs_dblist_count): Added new function which returns
13                 the number of directory blocks in dblist.
14
15 Sat Jun 14 01:39:13 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
16
17         * unix_io.c (unix_flush): Make the io_channel flush function do a
18                 fsync to flush the kernel buffers to disk.
19
20 Wed Jun 11 18:25:31 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
21
22         * inode.c (ext2fs_inode_scan_goto_blockgroup): Fix bug; the
23                 current inode number wasn't being set by the
24                 goto_blockgroup function.
25
26 Mon Jun  9 10:45:48 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
27
28         * bmove.c (ext2fs_move_blocks): New function which takes a bitmap
29                 of blocks which need to be moved, and moves those blocks
30                 to another location in the filesystem.
31
32         * rs_bitmap.c (ext2fs_resize_generic_bitmap): When expanding a
33                 bitmap, make sure all of the new parts of the bitmap are
34                 zero. 
35
36 Sun Jun  8 16:24:39 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
37
38         * bitmaps.c (ext2fs_copy_bitmap): Fix bug; the destination bitmap
39                 wasn't being returned to the caller.
40
41         * alloc_tables.c (ext2fs_allocate_group_table): Add new function
42                 ext2fs_allocate_group_table() which sets the group tables
43                 for a particular block group.  The relevant code was
44                 factored out of ext2fs_allocate_tables().
45
46         * dblist.c (make_dblist): Adjust the initial size of the directory
47                 block list to be a bit more realistic (ten plus twice the
48                 number of directories in the filesystem).
49
50 Thu May  8 22:19:09 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
51
52         * badblocks.c (ext2fs_badblocks_list_test): Fix bug where
53                 ext2fs_badblocks_list_test would test the list (and exceed
54                 array boundaries) if there were no bad blocks on the bad
55                 blocks list.  (Showed up when user tried: mke2fs -c -b 4096).
56
57 Thu Apr 24 12:16:42 1997  Theodre Ts'o  <tytso@localhost.mit.edu>
58
59         * Release of E2fsprogs version 1.10
60
61 Thu Apr 24 10:13:42 1997  Theodre Ts'o  <tytso@localhost.mit.edu>
62
63         * alloc_tables.c (ext2fs_allocate_tables): Correctly place the
64                 inode and block bitmaps based on the RAID 0 stride
65                 parameter (which is passed by mke2fs).
66
67         * ext2fs.h: Add "stride" parameter to ext2_filsys, to be used by
68                 mke2fs to communicate the stride length to
69                 ext2fs_allocate_tables()
70
71 Wed Apr 23 21:50:42 1997  Theodre Ts'o  <tytso@localhost.mit.edu>
72
73         * initialize.c (ext2fs_initialize): Fix to compile under Linux 1.2
74                 systems.  (We can't assume that the new filesystem types
75                 are supported.)
76
77 Wed Apr 23 18:40:53 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
78
79         * alloc_tables.c (ext2fs_allocate_tables): Make sure that we
80                 allocate the inode and block bitmaps inside block group at
81                 all times.
82
83 Mon Apr 21 00:06:28 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
84
85         * alloc.c (ext2fs_new_block): Fix bug where if goal==0 and the
86                 filesystem has no free blocks, ext2fs_new_block would loop
87                 forever.
88
89         * dupfs.c (ext2fs_dup_handle): Duplicate an ext2 filesystem handle
90
91         * freefs.c (ext2fs_free_inode_cache): Decrement refcount and only
92                 free if refcount goes to zero.
93
94         * inode.c (create_icache): Initialize refcount to 1.
95
96         * ext2fsP.h: Added refcount to ext2_inode_cache
97
98         * dblist.c (ext2fs_copy_dblist): New function to copy a directory
99                 block list.
100
101         * badblocks.c (ext2fs_badblocks_copy): New function to copy a
102                 badblocks structure.
103
104 Sun Apr 20 23:19:51 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
105
106         * bitmaps.c (ext2fs_copy_bitmap): New function to copy a bitmap.
107
108         * unix_io.c, test_io.c (unix_open, test_open): Initialize the
109                 refcount to 1.
110                 (unix_close, test_close): Decrement the refcount and only
111                 close the io_channel if the refcount goes to 0.
112
113         * io.h: Add refcount to the io_channel structure.  Add new macro
114                 interface io_channel_bumpcount() to bump the refcount.
115
116 Thu Apr 17 20:25:03 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
117
118         * inode.c (ext2fs_read_inode, ext2fs_write_inode): Use the inode
119                 cache in the filesystem handle, instead of the inode cache
120                 in a static variable.
121
122         * freefs.c: Added static function to free the inode cache (called by
123                 ext2fs_free). 
124
125         * ext2fsP.h: Added definition of the ext2_inode_cache structures.
126
127         * ext2fs.h: Added pointer to the inode_cache structure.
128
129         * block.c (block_iterate_ind, block_iterate_dind, 
130                 block_iterate_tind): If there are holes in the indirect,
131                 doubly indirect, or triply indirect blocks, increment the
132                 block count field automatically.
133
134 Thu Apr 17 12:23:38 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
135
136         * Release of E2fsprogs version 1.09
137
138 Mon Apr 14 20:38:56 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
139
140         * version.c (ext2fs_parse_version_string): Check the passed in
141                 version string (instead of the hard-coded one).
142
143         * alloc_tables.c (ext2fs_allocate_tables): If the last block is
144                 greater filesystem size, clamp it to prevent allocating a
145                 block or inode bitmap beyond the filesystem.
146
147         * initialize.c (ext2fs_initialize): Fix bug where the metatdata
148                 overhead calculation was accidentally removed.
149
150 Fri Apr 11 18:56:26 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
151
152         * Release of E2fsprogs version 1.08
153
154 Thu Apr 10 13:15:15 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
155
156         * dblist.c (ext2fs_set_dir_block): New function which sets the
157                 block of a dblist entry, given the directory inode and
158                 blockcnt.
159
160 Sat Apr  5 12:42:42 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
161
162         * alloc_tables.c (ext2fs_allocate_tables): Allocate the bitmap and
163                 inode bitmaps at staggered locations across the block
164                 groups, to avoid concentrating the bitmaps on a small
165                 number of disks when using striped RAID arrays.
166
167         * initialize.c (ext2fs_initialize): By default, choose the maximum
168                 possible number of blocks per group (based on the size of
169                 the bitmaps in the blocksize).
170
171 Fri Apr  4 11:28:16 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
172
173         * initialize.c (ext2fs_initialize): Add support for
174                 EXT2_COMPAT_SPARSE_SUPER feature.
175
176         * closefs.c (ext2fs_bg_has_super): New function to determine
177                 whether or a particular block group should have a
178                 superblock and block group descriptor.  Used for the
179                 EXT2_COMPAT_SPARSE_SUPER feature is turned on.
180                 (ext2fs_flush):  Check ext2fs_bg_has_super to see whether
181                 or not the superblock should be written out for the block
182                 group. 
183
184         * ext2fs.h (EXT2_COMPAT_SPARSE_SUPER): Define compatibility flag
185                 for sparse duplicate superblocks.
186
187         * version.c (ext2fs_get_library_version): New function which
188                 returns the library version.
189
190         * version.c (ext2fs_parse_version_string): New function which
191                 parses a version string and returns a version number,
192                 so application programs can compare version numbers as
193                 integers.
194
195 Wed Mar 26 00:43:52 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
196
197         * icount.c (ext2fs_create_icount): Change function so that it also
198                 takes a new argument which contains a "hint" icount
199                 structure.  This "hint" icount allows the create function
200                 to set up the sorted list in advance.  This reduces
201                 significantly the amount of data moving needed to insert
202                 these inodes into the list later.
203         
204         * icount.c (ext2fs_icount_validate): New function which validates
205                 that the icount structure's rep invariant.
206
207         * icount.c (get_icount_el): Completely revamped implementation
208                 to subsume put_icount_el().  Put_icount_el() used to
209                 use an O(N) implementation to insert in the middle
210                 of the icount list.  It now uses a O(ln N) to search
211                 for where the icount should be inserted, and then uses
212                 a memcpy to move the list down (instead of a for loop).
213         
214         * icount.c (ext2fs_icount_fetch, ext2fs_icount_store,
215                 ext2fs_icount_increment, ext2fs_icount_decrement): Check
216                 to see if the inode is within bounds; if it isn't, return
217                 EINVAL.
218
219         * bitops.h (ext2fs_test_generic_bitmap): Fix error message given
220                 when a bad inode number is passed to test_generic_bitmap
221                 to be EXT2FS_TEST_ERROR instead of the wrong
222                 EXT2FS_UNMARK_ERROR.
223
224 Wed Mar 12 13:32:05 1997  Theodore Y. Ts'o  <tytso@mit.edu>
225
226         * Release of E2fsprogs version 1.07
227
228 Sun Mar  2 16:46:18 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
229
230         * Makefile.in (ELF_VERSION): Change version to be 2.2
231
232 Tue Feb 11 14:54:02 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
233
234         * alloc.c (ext2fs_get_free_blocks): Change routine to use
235                 ext2fs_fast_test_block_bitmap_range().
236
237         * bitops.h (ext2fs_fast_test_block_bitmap_range,
238                 ext2fs_test_block_bitmap_range: New inline functions which
239                 test to see whether a contiguous range of blocks is
240                 available.
241
242 Thu Feb  6 10:00:13 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
243
244         * badblocks.c (ext2fs_badblocks_list_create): Rename sybmols to use
245                 use ext2fs_badblocks_* instead of badblocks_*
246
247         * bb_compat.c: New file which translates between old badblocks_*()
248                 names to ext2fs_badblocks_*()
249
250         * unlink.c (ext2fs_unlink): New file, moved ext2fs_unlink() from
251                 link.c (since e2fsck doesn't use ext2fs_unlink()).
252
253         * rs_bitmap.c (ext2fs_resize_generic_bitmap): New file, contains
254                 bitmap resizing routine moved from bitmaps.c, since e2fsck
255                 doesn't need to use this function.
256
257         * lookup.c (ext2fs_lookup): Moved ext2fs_lookup to its own file,
258                 since e2fsck only needs ext2fs_lookup.
259
260 Mon Feb  3 10:11:40 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
261
262         * inode.c (ext2fs_open_inode_scan): Set fs->badblocks if it is not
263                 already set; this is needed so that programs like dump
264                 which use the inode scan functions will deal with
265                 filesystems that have bad blocks in the inode table.
266
267 Sun Feb  2 00:17:36 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
268
269         * ext2fs.h (struct_badblocks_list, struct_badblocks_iterate): 
270                 Moved to ext2fsP.h, since it doesn't need to be part of
271                 the public interface.
272
273         * dir_iterate.c: Move ext2_dir_iterate out of namei.c.
274
275 Sat Feb  1 10:14:55 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
276
277         * dblist.c (ext2fs_get_num_dirs): New file, which implements a
278                 directory block list abstraction.  (Code moved from
279                 e2fsck).
280
281         * ext2fs.h, inode.c: Moved definition of ext2_struct_inode_scan to
282                 to inode.c (since no one else should be peeking inside it!)
283
284         * valid_blk.c (ext2_inode_has_valid_blocks): New function.
285
286         * openfs.c (ext2fs_open): Check the feature set in the ext2
287                 superblock, and refuse to open filesystems if they contain
288                 incompatible features.  (Can be overriden with the
289                 EXT2_FLAG_FORCE 
290
291 Sun Jan 12 11:31:46 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
292
293         * block.c (ext2fs_block_iterate2): Added new function
294                 ext2fs_block_iterate2 which changes the function
295                 signature of the callback function to include the
296                 referencing block and offset.
297
298         * inode.c (ext2fs_inode_scan_goto_blockgroup): Added new function
299                 ext2fs_inode_scan_goto_blockgroup which allows an
300                 application to jump to a particular block group while
301                 doing an inode scan.
302
303 Wed Jan  1 23:50:12 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
304
305         * dirblock.c: Include string.h, since we use memcpy().
306
307 Tue Dec  3 12:27:29 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
308
309         * getsize.c (ext2fs_get_device_size): The ioctl BLKGETSIZE returns
310                 a long not an int; this doesn't matter on i386 machines,
311                 but it does on Alpha's.
312         
313 Fri Nov 29 20:57:37 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
314
315         * inode.c (ext2fs_write_inode, ext2fs_read_inode): If the inode
316                 table pointer is NULL, then return an error indicating
317                 that the inode table is missing.
318                 (get_next_blockgroup, get_next_blocks,
319                 ext2fs_get_next_inode): Don't treat a missing inode table
320                 as permanent error.  Return MISSING_INODE_TABLE, but as an
321                 advisory error code, much like BAD_BLOCK_IN_INODE_TABLE.
322
323         * rw_bitmaps.c (ext2fs_write_block_bitmap,
324                 ext2fs_write_inode_bitmap): If the inode or block bitmap
325                 block is zero, then don't write out the inode or block
326                 bitmap.  The idea here is to avoid stomping on the
327                 superblock.
328                 (read_bitmaps): If the inode or block bitmap block is
329                 zero, then fill in that portion of the inode or block
330                 bitmap with all zeros.
331
332         * inode.c (ext2fs_get_next_inode): Fix bug in handling of bad
333                 blocks in inode table when the inode table size is
334                 non-standard (and can therefore span blocks).
335
336 Tue Oct 29 20:13:14 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
337
338         * alloc.c (ext2fs_new_block): Fix fencepost error in
339                 ext2fs_new_block; make sure we don't try to allocate the
340                 first block beyond the end of the filesystem.
341
342 Mon Oct 14 11:00:48 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
343
344         * inode.c (check_for_inode_bad_blocks): New function called by
345                 get_next_blocks() to avoid reading in bad blocks marked in
346                 fs->badblocks.  Inodes located in bad blocks are returned
347                 by ext2fs_get_next_inode() returns the error code 
348                 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE.
349         
350         * alloc_tables.c (ext2fs_allocate_tables): New function which
351                 performs the part of mke2fs's job of allocating the 
352                 filesystem tables.
353
354         * test_io.c (test_close): IO manager which is used for testing
355                 purposes.
356
357 Sun Oct 13 04:31:57 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
358
359         * inode.c (ext2fs_get_next_inode): Separate out the function of
360                 setting up for a new block group to get_next_blockgroup().
361                 Separate out the function of reading in blocks of the
362                 inode table to get_next_blocks().
363
364         * ext2fs.h: Add the badblocks list to the ext2_filsys entry
365
366         * badblocks.c (badblocks_list_add, badblocks_list_test): Add
367                 blocks to the badblock list in sorted order.  This allows
368                 badblocks_list_test to be coded using a binary search for
369                 speed.
370
371 Tue Oct  8 02:02:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
372
373         * Release of E2fsprogs version 1.06
374
375 Mon Oct  7 00:44:17 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
376
377         * ext2fs.h, block.c, closefs.c, dirblock.c, inode.c, native.c,
378                 open.c: Change EXT2_SWAP to EXT2_FLAG_SWAP for
379                 consistency's sake.
380         
381         * closefs.c (ext2fs_flush): If the flag EXT2_MASTER_SB_ONLY is
382                 set, then only write out the master superblock.
383
384 Sun Oct  6 21:45:26 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
385
386         * block.c (ext2fs_block_iterate): Fixed bug which caused
387                 block_iterate to fail to handle HURD created filesystems;
388                 it tested the inode translator field before the inode was
389                 loaded.
390
391 Tue Sep 17 14:08:24 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
392
393         * initialize.c (ext2fs_initialize): Make sure the description for
394                 the inode bitmap is set correctly.
395
396         * bitmaps.c (ext2fs_allocate_generic_bitmap): Fix minor type typo.
397
398 Thu Sep 12 15:23:07 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
399
400         * Release of E2fsprogs version 1.05
401
402 Sat Sep  7 07:36:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
403
404         * initialize.c: Override the kernel's idea of default
405                 checkinterval from 0 (never) to 180 days.
406
407 Wed Aug 28 03:20:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
408
409         * namei.c (ext2fs_namei_follow): New function which follows
410                 symbolic link (if any) at the target.
411
412 Tue Aug 27 01:48:43 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
413
414         * inode.c (ext2fs_read_inode, ext2fs_write_inode): Add support
415                 for shortcut function fs->read_inode() and fs->write_inode().
416                 Added inode_cache to reduce CPU time spent in doing
417                 byte swapping.
418
419         * swapfs.c (ext2fs_swap_super): Swap the new fields in a V2
420                 superblock.
421
422         * namei.c (ext2fs_follow_link): New function.
423                 (ext2fs_namei): Extended to have support for chasing
424                 symbolic links.  ext2fs_namei() still returns an inode
425                 which is a symbolic link.  Symbolic links are only chased
426                 while resolving the containing directory.  To chase
427                 symbolic links of the final result, use
428                 ext2fs_follow_link().
429
430 Mon Aug 26 23:46:07 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
431
432         * ext2_err.et.in: Added new error code EXT2_ET_SYMLINK_LOOP.
433
434         * bitops.h (ext2fs_set_bit, ext2fs_celar_bit): Use asm inlines
435                 provided by Pete A. Zaitcev (zaitcev@lab.sun.mcst.ru).
436
437 Thu Aug 22 00:40:18 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
438
439         * initialize.c (ext2fs_initialize): On systems where the byte
440                 order is not i386 compatible, set the swap_byte flag.
441
442         * inode.c (inocpy_with_swap): Check to see if inode contains a
443                 fast symlink before swapping the inode block fields.  This
444                 required adding a new argument to inocpy_with_swap to
445                 determine whether the mode field is in host order or not.
446
447 Wed Aug 21 00:45:42 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
448
449         * bitops.h (ext2fs_set_bit, ext2fs_clear_bit, ext2fs_test_bit): On
450                 the sparc, if EXT2_STD_BITOPS set, use the standard
451                 i386-compatible bitmask operations, instead on the
452                 non-standard native bitmask operators.
453
454 Fri Aug  9 11:11:35 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
455
456         * block.c (ext2fs_block_iterate): Cause block iterator to return
457                 the HURD translator block (along with everything else).
458                 If the flag BLOCK_FLAG_DATA_ONLY is passed to the block
459                 iterator, then don't return any meta data blocks
460                 (including the HURD translator).
461
462 Wed Jul 17 17:13:34 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
463
464         * gen_uuid.c: New file, which generates DCE-compatible UUIDs.
465
466         * uuid.c: New file, containing UUID utility functions.
467
468 Tue Jul 16 10:19:16 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
469
470         * ext2fs.h: Add a definition of the "real" ext2 superblock.
471
472 Fri May 24 14:54:55 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
473
474         * ext2fs.h: Fix erroneous ino_t type used in block_bitmap type.
475
476 Sun May 19 15:39:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
477
478         * openfs.c (ext2fs_open): If the blocksize in the superblock is
479                 zero, return the error EXT2_ET_CORRUPT_SUPERBLOCK, since
480                 that's a basic value that must be correct for the rest of
481                 the library to work.
482
483         * ext2_err.et.in (EXT2_ET_CORRUPT_SUPERBLOCK): Added new error
484                 code.
485
486 Thu May 16 11:12:30 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
487
488         * Release of E2fsprogs version 1.04
489
490 Wed Mar 27 00:33:40 1996    <tytso@rsts-11.mit.edu>
491
492         * Release of E2fsprogs version 1.03
493
494 Tue Mar 26 12:06:32 1996    <tytso@rsts-11.mit.edu>
495
496         * bitops.h (ext2fs_set_bit, ext2fs_clear_bit, ext2fs_test_bit):
497                 Change the m68k bit numbering for bitmasks to match with
498                 the bit numbering used by all other ext2 implementations.
499
500 Thu Mar  7 03:37:00 1996    <tytso@rsts-11.mit.edu>
501
502         * inode.c (ext2fs_get_next_inode, ext2fs_close_inode_scan, 
503         ext2fs_open_inode_scan): Support dynamically-sized inodes.
504
505 Wed Mar  6 12:26:29 1996    <tytso@rsts-11.mit.edu>
506
507         * inode.c (ext2fs_read_inode, ext2fs_write_inode): Support
508                 dynamically-sized inodes.
509
510         * openfs.c (ext2fs_open): Allow dynamic revision filesystem to be
511                 loaded.
512
513 Tue Mar  5 03:49:37 1996    <tytso@rsts-11.mit.edu>
514
515         * initialize.c (ext2fs_initialize): Catch an error condition where
516                 the passed in size is *really* too small.
517
518         * alloc.c (ext2fs_new_inode): 
519         * ext2fs.h (EXT2_FIRST_INODE): Add support for dynamic revision to
520                 get first inode.
521
522 Wed Feb 21 15:56:17 1996    <tytso@rsts-11.mit.edu>
523
524         * getsize.c (ext2fs_get_device_size): Open the device read-only
525                 when trying to determine its size.
526
527 Wed Jan 31 11:06:08 1996    <tytso@rsts-11.mit.edu>
528
529         * Release of E2fsprogs version 1.02
530
531 Sat Dec  9 09:57:50 1995    <tytso@rsts-11.mit.edu>
532
533         * rw_bitops.c (ext2fs_write_block_bitmap):
534         * bitops.c (ext2fs_test_bit, ext2fs_clear_bit, ext2fs_set_bit):
535         * bitops.h (ext2fs_test_bit, ext2fs_clear_bit, ext2fs_set_bit):
536                 Rename {test,set,clear}_bit to ext2fs_{test,set,clear}_bit, 
537                 to avoid conflicts with with kernel include files.  Also
538                 rename ADDR and CONST_ADDR to EXT2FS_ADDR and
539                 EXT2FS_CONST_ADDR. 
540
541 Thu Oct 26 12:09:16 1995    <tytso@rsts-11.mit.edu>
542
543         * ext2_err.et: Updated message in EXT2_ET_BASE to say version 0.5c
544
545         * swapfs.c (ext2fs_swap_super): Put an #ifdef check around
546                 s_def_resuid and s_def_resgid for backwards compatibility.
547
548 Fri Oct 20 23:33:31 1995    <tytso@rsts-11.mit.edu>
549
550         * bitops.h: Added #ifdef's for Sparc.
551
552 Wed Sep  6 22:14:46 1995    <tytso@rsts-11.mit.edu>
553
554         * getsize.c: #include <sys/ioctl.h> under Linux to pick up ioctl()
555                 declaration
556
557         * closefs.c: #include <string.h> to pick up memset() declaration
558
559 Mon Sep  4 21:45:29 1995  Remy Card  <card@bbj>
560
561         * Makefile.in: Added support for BSD shared libraries.
562
563         * initialize.c (ext2fs_initialize): Correctly set the s_creator_os
564                 flag.
565
566 Mon Sep  4 09:55:30 1995    <tytso@rsts-11.mit.edu>
567
568         * unix_io.c (unix_open): Add a double check; if the passed in name
569                 is NULL, return EXT2_ET_BAD_DEVICE_NAME.
570
571         * ext2_err.et (EXT2_ET_BAD_DEVICE_NAME): Added new error code
572
573 Wed Aug 16 15:44:10 1995    <tytso@rsts-11.mit.edu>
574
575         * inode.c (ext2fs_check_directory): Use LINUX_S_ISDIR instead of
576                 S_ISDIR.
577
578 Tue Aug 15 13:08:36 1995    <tytso@rsts-11.mit.edu>
579
580         * getsize.c (ext2fs_get_device_size): Add support for reading the
581                 partition size from a BSD disk label.
582
583 Thu Aug 10 09:33:26 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
584
585         * getsize.c (ext2fs_get_device_size): New function that determins
586                 the size of a device.  Used by mke2fs and e2fsck.
587
588 Sat Aug 12 03:09:54 1995  Remy Card  <card@bbj>
589
590         * Makefile.in (install): Install static libraries in $(ulibdir)
591                 (/usr/lib on Linux) instead of $(libdir) (/lib on Linux).
592
593 Wed Aug  9 17:04:23 1995  Theodore Y. Ts'o  <tytso@dcl>
594
595         * bitmaps.c (ext2fs_free_inode_bitmap, ext2fs_free_block_bitmap):
596                 Move these functions to freefs.c.
597
598         * closefs.c (ext2fs_flush): If swapping blocks, clear the group
599                 descriptors shadow memory to keep purify quiet.  (This
600                 also has the nice benefit that the unused portion of the
601                 shadow descriptors are zeroed out.)
602
603         * dirblock.c (ext2fs_write_dir_block): We need to use
604                 dirent->rec_len *before* it's byteswapped to find the
605                 location of the next directory structure!
606
607         * alloc.c (ext2fs_new_inode): Fix bug which could potentially
608                 cause ext2fs_new_inode to loop infinitely if we're trying
609                 to allocate an inode in group #0 and there are no free
610                 inodes at all in the system.
611
612         * closefs.c: #include <errno.h> if it exists.
613
614 Sun Aug  6 13:27:50 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
615
616         * ext2fs.h (BLOCK_FLAG_HOLE): Added new definition for
617                 BLOCK_FLAG_APPEND.  Added documentation for the block
618                 interator flags.
619
620 Sat Aug  5 11:44:05 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
621
622         * Makefile.in (DLL_INSTALL_DIR, ELF_INSTALL_DIR): Set the
623                 installation directories correctly.
624
625 Tue Jul 18 09:27:38 1995    <tytso@rsx-11.mit.edu>
626
627         * namei.c (process_dir_block): 
628         * mkdir.c (ext2fs_mkdir): 
629         * expanddir.c (expand_dir_proc): Use ext2fs_{read,write}_dir_block
630                 to read/write the directory block.
631
632         * dirblock.c (ext2fs_read_dir_block), ext2fs_write_dir_block): New
633                 file containing functions for reading and writing
634                 directory blocks (byte swapping if necesssary)
635
636         * block.c (block_iterate_ind, block_iterate_dind, 
637                 block_iterate_tind): Byte swap the block addresses if
638                 EXT2_SWAP_BYTES is set (and swap them back before writing
639                 them out.)
640
641         * inode.c (inocpy_with_swap): New function.
642         (ext2fs_get_next_inode, ext2fs_read_inode, ext2fs_write_inode):
643                 Call inocpy_with_swap if EXT2_SWAP_BYTES if set.
644
645         * closefs.c (ext2fs_flush): If EXT2_SWAP_BYTES is set, then swap
646                 the superblock and group descriptors before writing it out.
647
648         * openfs.c (ext2fs_open): If the magic number is byte-swapped,
649                 then set the EXT2_SWAP_BYTES and byte-swap the superblock
650                 and group descriptors.
651
652         * swapfs.c (ext2fs_swap_super, ext2fs_swap_group_desc): New functions
653                 to desp ext2 filesystem structures.
654
655         * bitops.c (set_bit, clear_bit, test_bit): Use modifications
656                 supplied by Pete A. Zaitcev so that the C language
657                 versions of these functions are more portable.  They will
658                 now work on both little and big endian systems, and the
659                 assumption that 32-bit integers are used is gone.
660
661         * bitops.h (ext2_swab16, ext2_swab32): Added new functions for
662                 doing byte swapping.
663
664         * ext2fs.h (EXT2_SWAP_BYTES): Add new flag which indicates that
665                 byte swapping should take place.
666
667 Sun Jul 16 06:21:43 1995    <tytso@rsx-11.mit.edu>
668
669         * Makefile.in, cmp_bitmaps.c (ext2fs_compare_block_bitmap_end,
670                 ext2fs_compare_inode_bitmap_end): Added new file
671                 containing routines to compare bitmaps.
672
673         * ext2_err.et (EXT2_ET_NEQ_BLOCK_BITMAP, EXT2_ET_NEQ_INODE_BITMAP): 
674                 Added new error codes.
675
676 Sat Jul 15 04:23:37 1995    <tytso@rsx-11.mit.edu>
677
678         * inode.c (ext2fs_get_next_inode): Don't check scan->inode_buffer;
679                 if the magic number is correct, it will be allocated.
680
681 Fri Jul 14 19:02:59 1995    <tytso@rsx-11.mit.edu>
682
683         * block.c (block_iterate_ind, block_iterate_dind, 
684                 block_iterate_tind): Don't recompute block_nr each loop;
685                 just increment it!  Factor check of BLOCK_FLAG_APPEND out
686                 of the loop.  Factor mask of BLOCK_CHANGED into changed
687                 variable out of the loop.  (block_iterate_ind, in
688                 particular, gets called a lot, so every little
689                 optimization helps.)
690
691 Thu Jul 13 08:02:45 1995    <tytso@rsx-11.mit.edu>
692
693         * block.c (block_iterate_ind, block_iterate_dind, 
694                 block_iterate_tind): Precompute limit of loop to speed up
695                 block_iterate_ind and company.
696
697         * bitops.h (ext2fs_fast_mark_block_bitmap, 
698                 ext2fs_fast_unmark_block_bitmap, ext2fs_fast_test_block_bitmap,
699                 ext2fs_fast_mark_inode_bitmap, ext2fs_fast_unmark_inode_bitmap,
700                 ext2fs_fast_test_inode_bitmap): Add fast version of these
701                 functions, which don't do range checking.
702
703         * bitops.h (ext2fs_get_block_bitmap_start, 
704                 ext2fs_get_inode_bitmap_start, ext2fs_get_block_bitmap_end,
705                 ext2fs_get_inode_bitmap_end): Add new accessor functions
706                 which return the start and end points of the bitmaps.
707
708 Tue Jul 11 18:59:41 1995    <tytso@rsx-11.mit.edu>
709
710         * llseek.c (ext2_llseek): If the offset is small enough, use lseek
711                 instead of llseek.  The errno if the offset is too large
712                 and lseek is not supported should be EINVAL, not -EINVAL.
713
714 Thu Jun 15 23:43:02 1995  Remy Card  <card@bbj>
715
716         * Makefile.in: Added support for ELF shared libraries.
717                 Fixed typos in the compilation rules.
718                 (distclean): Added Makefile.
719
720         * llseek.c (llseek): New function, if llseek() does not exist in the
721         C library.
722         (ext2_llseek): Changed to call llseek().
723
724 Mon Jun 12 08:29:07 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
725
726         * ext2fs.h: Use __u32 to define blk_t, instead of unsigned long.
727
728 Sun Jun 11 15:02:54 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
729
730         * mkdir.c (ext2fs_mkdir): Use LINUX_S_IFDIR instead of S_IFDIR.
731
732         * ext2fs.h (LINUX_S_IFDIR): Define a linux specific versions of
733                 the S_*, which are normally defined in <sys/stat.h>.  This
734                 allows us to compile e2fsprogs on a non-Linux system,
735                 which may have a different value for S_IFDIR.
736
737 Sat Jun 10 23:47:05 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
738
739         * bitops.c (clear_bit, set_bit): Remove calls to cli() and sti();
740                 this is a user-mode application!
741
742 Thu Jun  8 13:13:22 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>
743
744         * llseek.c: Put the include of <linux/unistd.h> inside the #ifdef
745         __linux__ so that non-linux systems won't see it.
746
747         * alloc.c: Include <errno.h> if possible.
748         * badblocks.c: Ditto.
749         * bb_inode.c: Ditto.
750         * bitmaps.c: Ditto.
751         * block.c: Ditto.
752         * expanddir.c: Ditto.
753         * get_pathname.c: Ditto.
754         * initialize.c: Ditto.
755         * inode.c: Ditto.
756         * llseek.c: Ditto.
757         * mkdir.c: Ditto.
758         * namei.c: Ditto.
759         * newdir.c: Ditto.
760         * openfs.c: Ditto.
761         * rw_bitmaps.c: Ditto.
762         * unix_io.c: Ditto.
763
764         * Makefile.in: Rewritten to conform to GNU coding standards and
765         support separate compilation directories.
766
767 Thu May 11 04:13:12 1995    <tytso@rsx-11.mit.edu>
768
769         * initialize.c (ext2fs_initialize): Don't allow more than one
770                 bitmaps's worth of inodes in a group.
771
772 Sat Mar 11 14:07:11 1995  Theodore Y. Ts'o  <tytso@localhost>
773
774         * llseek.c (ext2_llseek): Added error checking to the llseek()
775                 compat code to protect against overflow.  This only
776                 applies to 1.0 and early 1.1 kernels, which don't support
777                 the llseek() system call.
778
779 Thu Nov 24 16:29:00 1994  Theodore Y. Ts'o  (tytso@rt-11)
780
781         * unix_io.c (unix_open): Initialize the read_error and write_error
782                 io_channel pointers to be null.
783
784         * bb_inode.c (clear_bad_block_proc): If an illegal block number is
785                 found, clear it but don't try to update the filesystem
786                 accounting information, since that's hopeless anyway.
787
788         * block.c (bloblock_iterate_ind, bloblock_iterate_dind,
789         bloblock_iterate_tind): Check to see if the indirect blocks are
790                 valid before trying to read them.
791
792         * ext2_err.et (EXT2_ET_BAD_IND_BLOCK, EX2_ET_BAD_DIND_BLOCK,
793         EXT2_ET_BAD_TIND_BLOCK): Add new error codes.
794
795         * bitops.h (ext2fs_mark_block_bitmap, ext2fs_unmark_block_bitmap,
796         ext2fs_test_block_bitmap, ext2fs_mark_inode_bitmap,
797         ext2fs_unmark_inode_bitmap, ext2fs_test_inode_bitmap):  If an
798                 illegal block or inode number is passed in, return instead
799                 of trying to test, set, or clear the bit.
800
801 Mon Nov  7 21:32:33 1994  Remy Card  <card@bbj>
802
803         * Makefile: Added a dummy install target in case shared libraries
804                 are not built.
805
806 Mon Oct 24 14:11:44 1994    (tytso@rsx-11)
807
808         * bitmaps.c (ext2fs_allocate_block_bitmap): Fix calculation of how
809                 the real last block of the bitmap should be calculated.
810
811 Wed Sep  7 10:05:36 1994    (tytso@rsx-11)
812
813         * bitmaps.c (ext2fs_fudge_inode_bitmap_end, 
814                 ext2fs_fudge_block_bitmap_end, ext2fs_clear_inode_bitmap,
815                 ext2fs_clear_block_bitmap, ext2fs_free_inode_bitmap,
816                 ext2fs_free_block_bitmap): Add magic number checking for
817                 the inode and block bitmaps.
818
819         * bitmaps.c (ext2fs_allocate_block_bitmap): Fix to set the correct
820                 magic number for a block bitmap instead of an inode bitmap.
821
822         * inode.c (ext2fs_close_inode_scan, ext2fs_get_next_inode):  Add
823                 magic number checking for the inode_scan structure.
824
825         * badblocks.c (badblocks_list_free, badblocks_list_add, 
826                 badblocks_list_test, badblocks_list_iterate_begin,
827                 badblocks_list_iterate, badblocks_list_iterate_end): Add
828                 magic number checking for the badblocks_list and
829                 badblocks_iterate structures.
830
831         * ext2_err.et (EXT2_ET_MAGIC_UNIX_IO_CHANNEL): 
832         * unix_io.c (unix_open, unix_close, unix_set_blksize, unix_read_blk,
833                 unix_write_blk, unix_flush): Add magic number checking
834                 both for io_channel structure and unix_private_data
835                 structure.
836
837         * openfs.c (ext2fs_open): Add check for io_manager structure's
838                 magic number.
839
840         * rw_bitmaps.c (ext2fs_write_inode_bitmap, ext2fs_write_block_bitmap,
841                 ext2fs_read_inode_bitmap, ext2fs_read_block_bitmap,
842                 ext2fs_read_bitmaps, ext2fs_write_bitmaps): 
843         * read_bb.c (ext2fs_read_bb_inode): 
844         * read_bb_file.c (ext2fs_read_bb_FILE): 
845         * newdir.c (ext2fs_new_dir_block): 
846         * namei.c (ext2fs_dir_iterate, ext2fs_lookup, ext2fs_namei): 
847         * link.c (ext2fs_link, ext2fs_unlink): 
848         * inode.c (ext2fs_open_inode_scan, ext2fs_read_inode,
849                 ext2fs_write_inode, ext2fs_get_blocks, 
850                 ext2fs_check_directory): 
851         * get_pathname.c (ext2fs_get_pathname): 
852         * expanddir.c (ext2fs_expand_dir): 
853         * block.c (ext2fs_block_iterate): 
854         * bitmaps.c (ext2fs_allocate_inode_bitmap, 
855                 ext2fs_allocate_block_bitmap): 
856         * bb_inode.c (ext2fs_update_bb_inode): 
857         * alloc.c (ext2fs_new_inode,ext2fs_new_block,ext2fs_get_free_blocks): 
858         * check_desc.c (ext2fs_check_desc): 
859         * closefs.c (ext2fs_close, ext2fs_flush): 
860         * freefs.c (ext2fs_free): Add check for ext2_filsys magic number.
861
862         * Makefile:
863         * ext2fs.h:
864         * openfs.c:
865         * check_desc.c (ext2fs_check_desc): Move ext2fs_check_desc from
866         openfs.c into its own file.
867
868         * ext2fs.h (EXT2_CHECK_MAGIC): Added macro for checking for
869         structure magic numbers.
870
871         * closefs.c (ext2fs_flush): Folded in Remy Card's changes to clear
872         the EXT2_VALID_FS flag in the backup superblock blocks, so that if
873         someone uses the -b option to specify the use of the backup
874         superblock --- this usually means that the main superblock is
875         toast.  :-)
876
877         * ext2fs.h: 
878         * ext2_err.et (EXT2_ET_REV_TOO_HIGH): 
879         * openfs.c (ext2fs_open): Folded in Remy Card's changes to add a
880         revision level to the superblock.
881
882 Sun Aug 21 00:50:08 1994  Theodore Y. Ts'o  (tytso@rt-11)
883
884         * ext2fs.h:
885         * bitmaps.c:
886         * bitops.c
887         * bitops.h:
888         * openfs.c:
889         * initialize.c: Completely revamped the inode and block bitmap
890         structures, so that they can be better chance of being extensible
891         in a shared library.  They are now their own type, instead of
892         being a char *.  Also, the function signatures of
893         ext2fs_test_block_bitmap, ext2fs_mark_block_bitmap,
894         ext2fs_unmark_block_bitmap, ext2fs_test_inode_bitmap,
895         ext2fs_mark_inode_bitmap, and ext2fs_unmark_inode_bitmap were
896         changed to eliminate the ext2_filsys argument, since it is no
897         longer necessary.
898
899 Wed Aug 17 21:46:44 1994  Remy Card  (card@bbj)
900
901         * unix_io.c (unix_read_blk and unix_write_blk): use the llseek
902         system call if available.
903
904         * llseek.c: new file.  This is the stub calling the llseek system
905         call which allows supports for 2GB+ file systems.
906
907         * initialize.c (ext2fs_initialize): Ext2fs_initialize now stores
908         the creator operating system.
909
910 Wed Aug 17 10:03:24 1994  Theodore Y. Ts'o  (tytso@rt-11)
911
912         * initialize.c (ext2fs_initialize): Ext2fs_initialize now sets up
913         the group descriptor statistics in addition to everything else.
914         This relieves mke2fs of the responsibility of doing it.
915
916         * bitops.c, bitops.h: Add assembly inline functions for the 68000.
917         Added a new #define, _EXT2_HAVE_ASM_BITOPS_ to control whether or
918         not the generic C function equivalents should be included or not.
919
920         * openfs.c (ext2fs_open): If a superblock is specified, then use
921         the backup group descriptors that go along with this superblock,
922         instead of using the primary group descriptors.  This allows
923         e2fsck to recover filesystems where the primary group descriptors
924         have been trashed.
925
926