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