blob: 7a5e03735858cd72c275a0efd32f42e130fb7151 [file] [log] [blame]
Theodore Ts'o03603942001-04-17 00:53:25 +000012001-04-16 Theodore Tso <tytso@valinux.com>
2
Theodore Ts'o52db0b42001-04-17 02:22:05 +00003 * ismounted.c (check_mntent): Check /proc/mounts on Linux systems
4 before checking /etc/mtab. The EXT2_MF_READONLY flag is
5 now set from the /etc/mtab options field for all
6 filesystems, not just the root filesystem. Add debugging
7 code to make it easier to test ext2fs_check_if_mounted().
8
Theodore Ts'o03603942001-04-17 00:53:25 +00009 * mkjournal.c (ext2fs_create_journal_superblock): Add safety
10 check; return an error if there's an attempt to create a
11 journal less than 1024 filesystem blocks.
12
13 * ext2_err.et.in, mkjournal.c: Change EXT2_JOURNAL_NOT_BLOCK and
14 EXT2_NO_JOURNAL_SB to be EXT2_ET_*.
15
Theodore Ts'o9ec53cf2001-02-20 16:28:40 +0000162001-02-20 Theodore Tso <tytso@valinux.com>
17
18 * bitops.h (ext2fs_swab16, ext2fs_swab32): Add i386 assembly
19 inline functions.
20
21 * tst_byteswap.c: New function to test the byteswap functions.
22 Add to regression test suite.
23
Theodore Ts'oc5423c52001-02-08 05:45:17 +0000242001-02-08 Theodore Tso <tytso@valinux.com>
25
26 * e2image.h (struct ext2_image_hdr): Fix type for fs_hostname
27
Theodore Ts'od23042a2001-02-08 03:37:16 +0000282001-02-07 Theodore Tso <tytso@valinux.com>
29
30 * mkjournal.c (ext2fs_create_journal_superblock): Fix the setting
31 of s_first for external devices to always be 1, since
32 jsb->s_first is always relative to the start of the
33 journal superblock. Use htonl(1) when setting s_nr_users.
34
Theodore Ts'o02088862001-01-18 01:44:19 +0000352001-01-17 Theodore Ts'o <tytso@valinux.com>
36
37 * mkjournal.c (ext2fs_add_journal_device): Fix bug where the
38 device number of the filesystem (instead of the journal)
39 was being dropped into s_journal_dev.
40
Theodore Ts'oa1128472001-01-16 06:56:14 +0000412001-01-15 Theodore Ts'o <tytso@valinux.com>
42
43 * initialize.c (ext2fs_initialize): Add support for initializing
44 the ext2 superblock for external journal devices. This
45 basically means we don't bother to allocate any block
46 group descriptors.
47
48 * openfs.c (ext2fs_open): Only open external journal devices if
49 the new flag EXT2_FLAG_JOURNAL_DEV_OK is passed to
50 ext2fs_open. When opening such devices, don't try to read
51 the block group descriptors, since they're not there.
52
53 * ext2_err.et.in (EXT2_NO_JOURNAL_SB): Add new error code
54
55 * mkjournal.c: Export a new function,
56 ext2fs_create_journal_superblock(), which allocates and
57 returns a buffer containing a journal superblock. This is
58 needed by mke2fs to create an external journal. Rewrote
59 ext2fs_add_journal_device() so that it no longer creates
60 the external journal, but rather adds a filesystem to an
61 existing external journal. It handles all of the UUID
62 manipulation.
63
64 * ext2fs.h: List the EXT3_FEATURE_JOURNAL_DEV as a flag supported
65 by the library. Define the EXT2_FLAG_JOURNAL_DEV_OK.
66 Changed function prototype for ext2fs_add_journal_device().
67
Theodore Ts'o80779942001-01-14 18:03:43 +0000682001-01-14 Theodore Ts'o <tytso@valinux.com>
69
70 * closefs.c (ext2fs_flush): Don't write out anything beyond the
71 primary superblock if EXT2_INCOMPAT_JOURNAL_DEV is
72 listed.
73
Theodore Ts'ob94bd812001-01-12 17:26:05 +0000742001-01-12 Theodore Ts'o <tytso@valinux.com>
75
76 * imager.c: Fix gcc -Wall complaints and a series of bugs where
77 retval wasn't set correctly. (Thanks to Andreas Dilger
78 for pointing this out.)
79
Theodore Ts'o4d0f3e12001-01-11 15:48:50 +0000802001-01-11 <tytso@snap.thunk.org>
81
82 * flushb.c (ext2fs_sync_device): New function which centralizes
83 all of the places which might try to use the BLKFLSBUF
84 or FDFLUSH ioctls (and usually failing to define them
85 since the system header files don't usually do this for
86 us, and we're trying to avoid usage of kernel include
87 files now).
88
Theodore Ts'o31dbecd2001-01-11 04:54:39 +0000892001-01-10 <tytso@snap.thunk.org>
90
91 * alloc.c, bb_inode.c, bitmaps.c, bitops.h, block.c, bmap.c,
92 bmove.c, brel.h, cmp_bitmaps.c, dblist.c, dblist_dir.c,
93 dir_iterate.c, expanddir.c, ext2fs.h, ext2fsP.h, fileio.c,
94 finddev.c, get_pathname.c, icount.c, inode.c, irel.h,
95 irel_ma.c, ismounted.c, link.c, lookup.c, mkdir.c,
96 mkjournal.c, namei.c, newdir.c, read_bb_file.c, test_io.c,
97 tst_iscan.c, unix_io.c, unlink.c: Change use of ino_t to
98 ext2_ino_t, to protect applications that attempt to
99 compile -D_FILE_OFFSET_BITS=64, since this inexplicably
100 changes ino_t(!?). So we use ext2_ino_t to avoid an
101 unexpected ABI change.
102
Theodore Ts'ocdaf1fa2001-01-05 22:23:22 +00001032001-01-05 <tytso@snap.thunk.org>
104
Theodore Ts'oe446d712001-01-05 22:27:06 +0000105 * dirblock.c (ext2fs_read_dir_block): Fix a potential case where
106 we may overrun allocated memory in case of a corrupted
107 filesystem (or an e2fsck test case :-) when byte-swapping
108 the directory block.
109
Theodore Ts'ocdaf1fa2001-01-05 22:23:22 +0000110 * ext2fs.h: Indent the #warning to fix gcc -Wall complaint.
111
112 * mkjournal.c (ext2fs_add_journal_device): Fix various gcc -Wall
113 complaints including a missing return 0 at the end of
114 ext2fs_add_journal_device.
115
Theodore Ts'o43ec8732001-01-03 14:56:46 +00001162001-01-03 <tytso@snap.thunk.org>
117
Theodore Ts'o4becab62001-01-03 19:22:42 +0000118 * Makefile.in: Link in libe2p when creating libext2fs as a shared
119 library, since mkjournal.c now references fsetflags().
120
121 * mkjournal.c (ext2fs_add_journal_inode): Folded in Andreas
122 Dilger's changes (with fixups) to allow on-line creation
123 of a journal file.
124
Theodore Ts'o43ec8732001-01-03 14:56:46 +0000125 * ext2fs.h, closefs.c (ext2fs_flush): Add new flag,
126 EXT2_FLAG_SUPER_ONLY, which the close routines to only
127 update the superblock, and not the group descriptors.
128
1292000-12-30 Andreas Dilger <adilger@turbolinux.com>
130
131 * ismounted.c: add ext2fs_check_mount_point() function, which will
132 optionally return the mount point of a device if mounted
133
Theodore Ts'o31a17b32001-01-03 13:04:12 +00001342000-12-14 Andreas Dilger <adilger@turbolinux.com>
135
136 * mkjournal.c: rename ext2fs_add_journal_fs() to the more descriptive
137 ext2fs_add_journal_inode()
138
Theodore Ts'oe5b38a52001-01-01 16:17:12 +00001392001-01-01 <tytso@snap.thunk.org>
140
141 * ext2fs.h: Remove definition of ext2fs_sb. Note: this may break
142 source (but not binary) compatibility of some users of the
143 ext2 library. They should just simply do a global search
144 and replace of struct ext2fs_sb with struct
145 ext2_super_block, and use their own private copy of
146 ext2_fs.h if they aren't already.
147
148 * closefs.c, initialize.c, link.c, newdir.c, openfs.c, swapfs.c:
149 Replace use of ext2fs_sb with ext2_super_block.
150
Theodore Ts'o2fe1efe2000-12-31 13:39:17 +00001512000-12-31 <tytso@snap.thunk.org>
152
153 * ext2fs.h: Cleaned up header file by removing definitions of
154 feature flags that might not have been defined in older
155 ext2 header files. Now that we're using our own
156 include/linux/ext2fs.h header file, this can never happen.
157
158 * jfs_dat.h: Removed old header file which is no longer needed.
159
Theodore Ts'o7dcfa6e2000-12-13 17:50:14 +00001602000-12-13 Theodore Ts'o <tytso@valinux.com>
161
Theodore Ts'oa917d1c2000-12-13 18:36:23 +0000162 * closefs.c (ext2fs_update_dynamic_rev): New function suggested
Theodore Ts'o3fe973b2000-12-13 17:55:49 +0000163 by Andreas Dilger to update the filesystem revision to
164 EXT2_DYNAMIC_REV.
165
Theodore Ts'o7dcfa6e2000-12-13 17:50:14 +0000166 * swapfs.c (ext2fs_swap_super): Add byte swapping for the journal
167 fields.
168
Theodore Ts'o58618732000-12-09 05:47:45 +00001692000-12-09 <tytso@snap.thunk.org>
170
Theodore Ts'o31a17b32001-01-03 13:04:12 +0000171 * ext2fs.h, mkjournal.c (ext2fs_add_journal_inode,
Theodore Ts'o4e246702000-12-09 14:39:16 +0000172 ext2fs_add_journal_device): Add a new argument to the APIs
173 of these function, which is a flags word. This is used to
174 allow the creation of a V1 superblock for those folks who
175 are using ext3 0.3b in production. Note, the user-land
176 interface for getting at this flag won't be documented, as
177 the V1 superblock is deprecated.
178
Theodore Ts'o58618732000-12-09 05:47:45 +0000179 * mkjournal.c (init_journal_superblock): Sync Stephen's changes
180 which creates a V2 superblock instead of a V1 superblock.
181
Theodore Ts'of20d0d52000-12-05 03:53:41 +00001822000-11-21 <tytso@snap.thunk.org>
183
184 * test_io.c (test_write_blk, test_write_byte): Fix typos pointed
185 out by Andreas Dilger.
186
Theodore Ts'o72ed1262000-11-12 19:32:20 +00001872000-11-05 <tytso@snap.thunk.org>
188
189 * imager.c (ext2fs_image_{inode,super,bitmap}_{read,write},
190 ext2_fs.h, Makefile.in: New file that has routines that
191 save ext2fs metadata to a file.
192
193 * ext2_err.et.in (EXT2_ET_MAGIC_E2IMAGE): New error code assigned.
194
195 * e2image.h: New file which defines the file format for the ext2
196 image file. (Saved copy of ext2 metadata to a file as a
197 saving throw against worst-case damage.)
198
Theodore Ts'o6a7f4552000-11-12 19:07:06 +00001992000-11-01 <tytso@snap.thunk.org>
200
201 * inode.c (ext2fs_flush_icache): Add new function
202 ext2fs_flush_icache() which flushes the internal inode
203 cache. Applications which modify the inode table blocks
204 directly must call this function.
205
Theodore Ts'oc180ac82000-10-26 20:24:43 +00002062000-10-26 <tytso@snap.thunk.org>
207
Theodore Ts'o17ee8b12000-10-26 20:45:58 +0000208 * mkjournal.c: Add #include of netinet/in.h, since Solaris
209 requires it for ntohl().
210
Theodore Ts'oc180ac82000-10-26 20:24:43 +0000211 * ext2_io.h (io_channel_write_byte): Add new interface to allow
212 callers to write specific byte ranges. This is an
213 optional interface, which not all IO channels may
214 implement.
215
216 * unix_io.c (unix_write_byte):
217 * test_io.c (test_write_byte): Add implementation of the
218 write_byte function.
219
220 * closefs.c (write_primary_superblock, ext2fs_flush): Add a new
221 function which writes the primary superblock. If the IO
222 channel supports writing raw bytes directly, only fields
223 which were modified are written to the disk. This makes
224 it safe(r) to use utilities like tune2fs on a mounted
225 filesystem.
226
227 * freefs.c (ext2fs_free): Free the original superblock if it is
228 available.
229
230 * openfs.c (ext2fs_open): Store a copy of the original superblock
231 when opening it.
232
233 * ext2fs.h: Add a field to store the original superblock in the
234 ext2 context structure.
235
Theodore Ts'o43819662000-10-25 02:06:09 +00002362000-10-24 <tytso@snap.thunk.org>
237
238 * llseek.c: Add #ifdef's for IA64 (it's a 64-bit platform, so we
239 don't need to use llseek).
240
Theodore Ts'od3cd93c2000-10-24 18:33:16 +00002412000-10-24 <tytso@valinux.com>
242
243 * Makefile.in, ext2fs.h, jfs_dat.h, mkjournal.c: Add functions for
244 creating an ext3 journal on a filesystem.
245
2462000-08-21 <tytso@valinux.com>
247
248 * ext2_err.et.in (EXT2_JOURNAL_NOT_BLOCK): Add new error code.
249
Theodore Ts'oadfc8c62000-10-18 19:22:24 +00002502000-08-22 <tytso@valinux.com>
251
252 * unix_io.c: Make massive changes to support a multiple block
253 writethrough cacheing.
254
255 * ext2_io.h: Added flags field to the io_channel structure.
256
Theodore Ts'ode23aa12000-08-19 17:00:47 +00002572000-08-19 <tytso@valinux.com>
258
259 * finddev.c, ext2fs.h, Makefile.in: Add new file, finddev.c, which
260 provides the function ext2fs_find_block_device(). This
261 function returns the pathname to a block device, given its
262 device number.
263
Theodore Ts'of9e67062000-07-13 23:25:54 +00002642000-07-13 <tytso@valinux.com>
265
266 * Release of E2fsprogs 1.19
267
Theodore Ts'oab146762000-07-07 04:37:35 +00002682000-07-07 Theodore Ts'o <tytso@valinux.com>
269
270 * ext2fs.h (EXT2_LIB_FEATURE_INCOMPAT_SUPP): Add
271 EXT3_FEATURE_INCOMPAT_RECOVER (aka needs_recovery) to the
272 list of filesystem flags supported by the library.
273
Theodore Ts'o57dca852000-07-04 19:20:25 +00002742000-07-04 Theodore Ts'o <tytso@valinux.com>
275
Theodore Ts'o8f13d8c2000-07-04 19:41:29 +0000276 * ext2fs.h: Update to include latest journalling additions to the
277 superblock.
278
Theodore Ts'o57dca852000-07-04 19:20:25 +0000279 * dll/jump.funcs: Add new jumptable entries for
280 ext2fs_write_bb_FILE, ext2fs_read_bb_FILE2, and
281 ext2fs_badblocks_equal.
282
283 * tst_badblocks.c: Update test program to test
284 ext2fs_read_bb_FILE2 and ext2fs_write_FILE.
285
286 * write_bb_file.c (ext2fs_write_bb_FILE): New function which
287 writes out bad blocks list to a file.
288
289 * read_bb_file.c (ext2fs_read_bb_FILE2): Add new function which
290 changes the callback function to take two additional
291 arguments; a private blind pointer supplied by the caller,
292 and pointer to a char * containing a pointer to the
293 invalid string.
294
295 * badblocks.c (ext2fs_badblocks_equal): Add new function which
296 returns true if two badblocks list are equal.
297
298 * Makefile.in: Remove explicit link of -lc in the shared library.
299 (It shouldn't be necessary, and is harmful in some cases).
300
Theodore Ts'oabf7d382000-06-10 19:27:17 +00003012000-06-10 Theodore Ts'o <tytso@valinux.com>
302
303 * getsize.c (main): Add debugging code under #ifdef DEBUG
304
Theodore Ts'o2e8d40d2000-05-27 15:15:40 +00003052000-05-27 Theodore Ts'o <tytso@valinux.com>
306
307 * mkdir.c (ext2fs_mkdir): Read the parent directory's inode
308 earlier, so that if there's an error reading it, we can
309 more cleanly back out of the operation.
310
Theodore Ts'of0f4acb2000-05-25 23:22:11 +00003112000-05-25 <tytso@snap.thunk.org>
312
Theodore Ts'odc5f68c2000-05-25 23:31:54 +0000313 * getsize.c (ext2fs_get_device_size): Use open64() instead of
Theodore Ts'o7fd86d32000-05-25 23:42:22 +0000314 open() if it exists. Under linux, manually define the
315 ioctl for BLKGETSIZE if it isn't already defined and it's
316 safe to do so.
Theodore Ts'odc5f68c2000-05-25 23:31:54 +0000317
318 * unix_io.c (unix_open): Use open64() instead of open() if it
319 exists.
320
321 * llseek.c: Simplify header includes of unistd.h. If lseek64 is
322 available (and prototypes are defined) use it in
323 preference to llseek.
324
Theodore Ts'of0f4acb2000-05-25 23:22:11 +0000325 * Makefile: Add hack dependency rule so that parallel makes work
326 correctly.
327
Theodore Ts'ofa7ef712000-05-19 02:11:41 +00003282000-05-18 Theodore Ts'o <tytso@valinux.com>
329
330 * ext2fs.h: Add appropriate ifdef's to support C++ compilation.
331
Theodore Ts'oe589f672000-04-03 13:45:40 +00003322000-04-03 Theodore Ts'o <tytso@valinux.com>
333
Theodore Ts'o06af47f2000-04-03 13:51:00 +0000334 * block.c: Readibility tweak in conditionals involving
335 ctx->fs->flags.
336
Theodore Ts'oe589f672000-04-03 13:45:40 +0000337 * ext2fs.h: Use AUTOCONF SIZEOF_* macros if available to determine
338 how to define __s64 and __u64. Turn off "compression is
339 experimental" warning if the cpp macro
340 I_KNOW_THAT_COMPRESSION_IS_EXPERIMENTAL is defined.
341
Theodore Ts'o2c1a0ce2000-02-11 15:39:19 +00003422000-02-11 <tytso@snap.thunk.org>
343
Theodore Ts'o5a63dd22000-02-11 15:44:08 +0000344 * ext2fs.h: Define EXT2FS_COMPRESSED_BLKADDR and HOLE_BLKADDR.
345 Conditionally include Compression as a supported type if
346 ENABLE_COMPRESSION (via --enable-compression) is turned on.
347
Theodore Ts'o2c1a0ce2000-02-11 15:39:19 +0000348 * swapfs.c (ext2fs_swap_super): Swap the compression usage bitmap.
349
Theodore Ts'o28ffafb2000-02-08 19:14:02 +00003502000-02-08 <tytso@snap.thunk.org>
351
352 * bitops.h (ext2fs_mark_generic_bitmap, ext2fs_unmark_generic_bitmap,
353 ext2fs_mark_block_bitmap, ext2fs_unmark_block_bitmap,
354 ext2fs_mark_inode_bitmap, ext2fs_unmark_inode_bitmap):
355 Change to return the previous state of the bit that is
356 being marked or unmarked. For speed optimization.
357
Theodore Ts'o80e808f2000-02-02 16:19:59 +00003582000-02-02 Theodore Ts'o <tytso@valinux.com>
359
360 * getsize.c, ismounted.c: Remove unneeded include of linux/fs.h
361
362 * swapfs.c: Remove #ifdef HAVE_EXT2_INODE_VERSION since it's not
363 needed any more; we know it will always be i_generation.
364 Add support for swapping the high bits of the uid and gid.
365
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +00003661999-11-19 <tytso@valinux.com>
367
Theodore Ts'odab278a1999-11-19 18:49:27 +0000368 * mkdir.c (ext2fs_mkdir): Only update the parent's inode link
369 counts if the link was successful. Patch suggested by
370 jeremy@goop.org.
371
Theodore Ts'o5c36a2f1999-11-19 18:42:30 +0000372 * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
373 the source directory.
374
Theodore Ts'ocd086361999-11-10 16:00:39 +00003751999-11-10 <tytso@valinux.com>
376
377 * Release of E2fsprogs 1.18
378
Theodore Ts'o9b9fe8a1999-11-08 22:05:04 +00003791999-11-08 <tytso@valinux.com>
380
381 * Makefile.in (tst_badblocks): Add freefs.o to the object list,
382 since ext2fs_badblocks_list_free was moved to freefs.c.
383
384 * tst_badblocks.c: Use the newer badblocks API names. Add
385 duplicate blocks to the test inputs to test dealing with
386 adding blocks which are already in the badblocks list.
387
388 * badblocks.c (ext2fs_badblocks_list_add): If appending to the end
389 of the list, use a shortcut O(1) operations instead of an
390 O(n) operation. (Idea suggested by David Beattie.)
391
392 * freefs.c (ext2fs_free): Use ext2fs_badblocks_list_free() instead
393 of badblocks_list_free(), to save a procedure call.
394
Theodore Ts'o416c93d1999-10-26 04:49:54 +00003951999-10-26 <tytso@valinux.com>
396
Theodore Ts'o28e11941999-10-26 18:17:20 +0000397 * Release of E2fsprogs 1.17
398
3991999-10-26 <tytso@valinux.com>
400
Theodore Ts'o416c93d1999-10-26 04:49:54 +0000401 * ext2fs.h: Add kludge to deal with the fact that egcs cpp doesn't
402 seem to handle ~0UL the same way as they used to.
403
Theodore Ts'o601002b1999-10-26 02:06:39 +00004041999-10-25 <tytso@valinux.com>
405
Theodore Ts'ofe70fd31999-10-26 02:34:47 +0000406 * nt_io.c (_OpenNtName): Open the device using
407 FILE_SYNCHRONOUS_IO_NONALERT instead of
408 FILE_SYNCHRONOUS_IO_ALERT
409 (nt_open): At the end of the device open routine, unlock
410 the drive but do not dismount it.
411
Theodore Ts'o601002b1999-10-26 02:06:39 +0000412 * initialize.c (CREATOR_OS): Use __GNU__ instead of __gnu__ to
413 detect the Hurd OS.
414
Theodore Ts'oe6198e51999-10-23 00:58:54 +00004151999-10-22 <tytso@valinux.com>
416
Theodore Ts'o614fdfd1999-10-23 03:19:51 +0000417 * Release of E2fsprogs 1.16
418
4191999-10-22 <tytso@valinux.com>
420
Theodore Ts'oe6198e51999-10-23 00:58:54 +0000421 * mkdir.c (ext2fs_mkdir): Pass EXT2_FT_DIR flag to ext2fs_link().
422
423 * link.c (ext2fs_link): This call now uses the low three bits of
424 the flags parameter to pass the directory filetype
425 information; it will set the directory entry FILETYPE
426 information if the filesystem supports it.
427
428 * newdir.c (ext2fs_new_dir_block): If the FILETYPE superblock
429 option is set, then create the '.' and '..' entries with
430 the filetype set to EXT2_FT_DIR.
431
Theodore Ts'oaa4115a1999-10-21 19:33:18 +00004321999-09-24 <tytso@valinux.com>
433
434 * nt_io.c: New file which supports I/O under Windows NT.
435
Theodore Ts'o3a5f8ea1999-09-14 20:21:26 +00004361999-09-07 <tytso@valinux.com>
437
438 * ext2fs.h: Add new fields for journalling and define new
439 feature bits used by newer filesystems: IMAGIC_INODES,
440 HAS_JOURNAL, RECOVER.
441
442 * expanddir.c (ext2fs_expand_dir, expand_dir_proc): Change where
443 we update the inode block count and size files so that the
444 block count field is updated correctly when we create an
445 indirect block.
446
4471999-07-18 Theodore Ts'o <tytso@valinux.com>
Theodore Ts'o657cb971999-07-30 23:19:10 +0000448
449 * Release of E2fsprogs 1.15
450
Theodore Ts'oe72a9ba1999-06-25 15:40:18 +00004511999-06-23 <tytso@valinux.com>
452
453 * swapfs.c (ext2fs_swap_inode): Add compatibility for Linux 2.3
454 kernels that use i_generation instead of i_version. Patch
455 supplied by Jon Bright <sircus@sircus.demon.co.uk>.
456
4571999-06-21 <tytso@valinux.com>
Theodore Ts'o813bbb21999-06-22 03:17:45 +0000458
459 * dir_iterate.c (ext2fs_process_dir_block): Check for corrupted
460 directory entry before calling the callback function.
461 This should prevent some core dumps of insufficiently
462 paranoid callback functions.
463
Theodore Ts'oa4bf69d1999-05-29 21:53:30 +00004641999-05-29 <tytso@rsts-11.mit.edu>
465
466 * ext2fs.h: Add feature definition for AFS IMAGIC inodes.
467
468 * fileio.c (ext2fs_file_open): Remove obsolete comment stating
469 that we don't handle writing yet (we do). Fixed bug where
470 we weren't allocating a big enough buffer for ext2_bmap.
471
Theodore Ts'of0687a51999-05-29 21:48:03 +00004721999-05-03 <tytso@rsts-11.mit.edu>
473
474 * openfs.c (ext2fs_open): Check to make sure that the number of
475 blocks per group is not zero --- if so, it must be a bad
476 superblock!
477
Theodore Ts'o9e51eca1999-01-09 16:32:31 +00004781999-01-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
479
480 * Release of E2fsprogs 1.14
481
Theodore Ts'o665f7101999-01-08 13:33:39 +00004821999-01-07 Theodore Ts'o <tytso@rsts-11.mit.edu>
483
484 * inode.c (ext2fs_read_inode, ext2fs_write_inode): Check to see if
485 the inode number is zero; if it's zero, return
486 EXT2_ET_BAD_INODE_NUM.
487
Theodore Ts'o7a469521999-01-04 08:50:59 +00004881998-12-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
489
490 * initialize.c (ext2fs_initialize): Use EXT2_FIRST_INODE instead
491 of EXT2_FIRST_INO to ensure compatibility with Linux 1.2
492 header files.
493
Theodore Ts'o73f17cf1999-01-04 07:35:45 +0000494Mon Jan 4 02:32:09 1999 Theodore Y. Ts'o <tytso@mit.edu>
495
496 * llseek.c (ext2fs_llseek): Change ext2fs_llseek() in the
497 non-Linux case to use EINVAL by default, unless it isn't
498 defined, in which case we use EXT2_ET_INVALID_ARGUMENT
499 instead.
500
Theodore Ts'o556ad131998-12-19 08:10:58 +00005011998-12-15 Theodore Ts'o <tytso@rsts-11.mit.edu>
502
503 * Release of E2fsprogs 1.13
504
Theodore Ts'o5a679c81998-12-03 16:40:38 +00005051998-12-03 Theodore Ts'o <tytso@rsts-11.mit.edu>
506
507 * Makefile.in: Updated dependencies.
508
Theodore Ts'o8d7e83b1998-09-23 00:27:26 +00005091998-09-22 Theodore Ts'o <tytso@rsts-11.mit.edu>
510
511 * initialize.c (ext2fs_initialize): Make sure that we allocate
512 enough inodes so that we can make a valid filesystem.
513
Theodore Ts'o2eb374c1998-09-03 01:22:57 +00005141998-09-02 Theodore Ts'o <tytso@rsts-11.mit.edu>
515
516 * rw_bitmaps.c: Fixed signed/unsigned warnings.
517
518 * fileio.c (ext2fs_file_set_size): Remove unneeded extern from the
519 function declaration.
520
521 * dblist.c (make_dblist): Add safety check in case the dblist
522 pointer passed in is null (in which case, assign it to
523 fs->dblist). Fixed some signed/unsigned warnings.
524
525 * bmap.c: Make addr_per_block be of type blk_t to avoid
526 signed/unsigned warnings.
527
528 * namei.c (ext2fs_follow_link): Remove uneeded extern from the
529 function declaration.
530
531 * get_pathname.c (get_pathname_proc): Use return value from
532 ext2fs_get_mem, instead of checking if &gp->name is
533 NULL.
534
535 * dir_iterate.c (ext2fs_process_dir_block):
536 * dblist_dir.c (ext2fs_dblist_dir_iterate): Remove uneeded extern
537 from the function declaration.
538
539 * block.c (ext2fs_block_iterate2): If the read_inode call fails,
540 return the error directly instead of jumping to the
541 cleanup routine, since we don't need to do any cleanup.
542
543 * alloc_table.c (ext2fs_allocate_group_table): Make this
544 function take a dgrp_t for its group argument.
545
546 * ext2fs.h: Make dgrp_t an __u32 type, and make
547 fs->desc_group_count be of type dgrp_t.
548
Theodore Ts'of75c28d1998-08-01 04:18:06 +00005491998-07-27 Theodore Ts'o <tytso@rsts-11.mit.edu>
550
551 * badblocks.c (ext2fs_badblocks_list_add): Use a bigger increment
552 than 10 blocks when we need to expand the size of the
553 badblocks list.
554
Theodore Ts'o4a5fa191998-07-09 05:42:45 +00005551998-07-09 Theodore Ts'o <tytso@rsts-11.mit.edu>
556
557 * Release of E2fsprogs 1.12
558
Theodore Ts'o30c42611998-06-30 05:33:11 +00005591998-06-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
560
561 * closefs.c (ext2fs_flush): Update the s_block_group_nr field as
562 appropriate for all of the block group copies, so that
563 it's clear where the beginning of the filesystem is on the
564 disk. (For when the partition table gets scrod.)
565
566 * ext2fs.h: Change the name of the feature from
567 EXT2_FEATURE_INCOMPAT_DIRNAME_SIZE to
568 EXT2_FEATURE_INCOMPAT_FILESIZE (to match with the kernel).
569
Theodore Ts'o818180c1998-06-27 05:11:14 +00005701998-06-18 Theodore Ts'o <tytso@rsts-11.mit.edu>
571
572 * inode.c (get_next_blockgroup): Fix bug where if
573 get_next_blockgroup() is called early because of a missing
574 inode table in a block group, the current_inode counter
575 wasn't incremented correctly.
576
Theodore Ts'o4faba5b1998-06-16 05:23:41 +00005771998-06-16 Theodore Ts'o <tytso@rsts-11.mit.edu>
578
579 * read_bb.c (ext2fs_read_bb_inode): Make function more robust
580 against a completely trashed bad block inode.
581
Theodore Ts'o03673db1998-06-10 20:39:43 +00005821998-06-10 Theodore Ts'o <tytso@rsts-11.mit.edu>
583
584 * alloc_tables.c (ext2fs_allocate_group_table): Fix bug so that if
585 the stride length hits a bad value, we retry the block
586 allocation starting at the beginning of the block group.
587
588 * ext2fs.h, bb_inode.c, block.c, bmove.c, dir_iterate.c,
589 expanddir.c, ext2fsP.h, read_bb.c: Change blkcnt_t to be
590 e2_blkcnt_t to avoid collision with LFS API.
591
Theodore Ts'o353952d1998-05-01 05:32:18 +00005921998-05-01 Theodore Ts'o <tytso@rsts-11.mit.edu>
593
594 * initialize.c (ext2fs_initialize): Initialize s_inodes_count in a
595 way that avoids overflows on disk sizes greater than 4GB.
596
Theodore Ts'o4c77fe51998-04-30 17:35:59 +00005971998-04-28 Theodore Ts'o <tytso@rsts-11.mit.edu>
598
599 * ext2fs.h: Define EXT2_QSORT_TYPE appropriately for the
600 return type for comparison functions for qsort.
601
602 * dblist.c (dir_block_cmp): Use EXT2_QSORT_TYPE in function
603 declaration.
604
Theodore Ts'o76f875d1998-04-27 01:41:13 +00006051998-04-26 Theodore Ts'o <tytso@rsts-11.mit.edu>
606
607 * ext2fs.h, bitops.h: Add support for the Watcom C compiler to do
608 inline functions.
609
610 * ext2fs.h, dosio.c: Use asm/types.h instead of linux/types.h to
611 evade a potential problem with glibc's header files trying
612 to spike out linux/types.h.
613
614 * ext2fs.h (ext2fs_resize_mem): Change the function prototype to
615 include the old size of the memory, which is needed for
616 some braindamaged memory allocation systems that don't
617 support realloc().
618
619 * badblocks.c (ext2fs_badblocks_list_add):
620 bb_inode.c (clear_bad_block_proc):
621 dblist.c (ext2fs_add_dir_block):
622 icount.c (insert_icount_el):
623 irel_ma.c (ima_put):
624 rs_bitmap.c (ext2fs_resize_generic_bitmap): Update functions to
625 pass the old size of the memory to be resized to
626 ext2fs_resize_mem().
627
Theodore Ts'o469bec81998-04-01 02:46:43 +00006281998-03-30 Theodore Ts'o <tytso@rsts-11.mit.edu>
629
630 * Makefile.in: Change to use new installation directory variables
631 convention. Fix uninstall rules to take $(DESTDIR) into
632 account.
633
Theodore Ts'o4a31c481998-03-30 01:27:25 +00006341998-03-29 Theodore Ts'o <tytso@rsts-11.mit.edu>
635
636 * ext2fs.h: If __STRICT_ANSI__ is defined and we're on a platform
637 with 32 bit longs, then we need to manually define __s64
638 and __u64, since the current kernel header files don't
639 define these if __STRICT_ANSI__ is defined. This is a
640 problem if we are compiling with full GCC warnings, since
641 we do need 64 bit support.
642
643 * Makefile.in (OBJS): Remove bmove.o from files to be built,
644 since we're not using ext2fs_move_blocks() and there
645 is some question as to its usefulness in its current
646 form.
647
648 * bmap.c (block_bmap): Remove unused function.
649
650 * bmove.c (process_block): Fix -Wall warning.
651
Theodore Ts'o36a43d61998-03-24 16:17:51 +00006521998-03-23 Theodore Ts'o <tytso@rsts-11.mit.edu>
653
654 * block.c (ext2fs_block_iterate3): Make the ref_offset field
655 contain the offset into the inode.i_blocks array when
656 ref_block is zero. Since we haven't done a formal
657 release of e2fsprogs since block_iterate2 was first
658 introduced, I removed block_iterate2, and renamed
659 block_iterate3 to be block_iterate2.
660
661 * bb_inode.c, bmove.c, dblist_dir.c, dir_iterate.c,
662 expanddir.c, ext2fs.h, ext2fsP.h, read_bb.c: Change
663 use of block_iterate and block_iterate2 to
664 block_iterate2 with the new prototype for the
665 interator function. (using blkcnt_t forr blockcount)
666
Theodore Ts'o674a4ee1998-03-23 02:06:52 +00006671998-03-21 Theodore Ts'o <tytso@rsts-11.mit.edu>
668
669 * ext2fs.h: Add new superblock fields (s_algorithm_usage_bitmap,
670 s_prealloc_blocks, s_prealloc_dir_blocks). Added
671 conditional defines of new features COMPAT_DIR_PREALLOC,
672 RO_COMPAT_LARGE_FILE RO_COMPAT_BTREE_DIR,
673 INCOMPAT_COMPRESSION, INCOMPAT_DIRNAME_SIZE. Changed
674 the library to declare that we support COMPAT_DIR_PREALLOC,
675 INCOMPAT_DIRNAME_SIZE, RO_COMPAT_LARGE_FILE.
676
677 * fileio.c: Rename function ext2fs_file_llseek to be
678 ext2fs_file_lseek, which is more accurate.
679
680 * block.c: Add new function ext2fs_block_iterate3 which calls
681 the iterator function with the blockcount argument of
682 type blkcnt_t. This version of the function is
683 allowed to handle large files; the other fucntions are
684 not.
685
686 * ext2fs.h: Add new type blkcnt_t
687
688 * ext2_err.et.in: Add error code EXT2_ET_FILE_TOO_BIG
689
690 * block.c (ext2fs_block_iterate2): Fix bug where the block count
691 field wasn't getting correctly incremented for sparse
692 files when the indirect or doubly-indirect block
693 specified in the inode was zero.
694
695Sun Mar 8 22:42:47 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
696
697 * unlink.c (unlink_proc):
698 * lookup.c (lookup_proc):
699 * link.c (link_proc):
700 * get_pathname.c (get_pathname_proc):
701 * dir_iterate.c (ext2fs_process_dir_block): Mask off high 8 bits
702 from dirent->name_len, so it can be used for other
703 purposes.
704
705 * ext2fs.h: Add definition of EXT2_FEATURE_INCOMPAT_DIRNAME_SIZE,
706 and indicate that we have support for this incompatible
707 option.
708
Theodore Ts'oc7752561998-02-24 04:25:52 +0000709Mon Feb 23 08:46:33 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
710
711 * ext2_err.et.in: Added new error code, EXT2_ET_CANCEL_REQUESTED.
712
Theodore Ts'o79b05db1998-02-21 05:01:19 +0000713Fri Feb 20 23:58:01 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
714
715 * dblist.c (ext2fs_get_num_dirs): Improve the estimation of the
716 number of directories when the block group information is
717 unreliable.
718
Theodore Ts'oc4e749a1998-02-20 05:33:14 +00007191998-02-20 Theodore Y. Ts'o <tytso@edt.mit.edu>
720
Theodore Ts'o218a4861998-02-21 01:41:39 +0000721 * inode.c (ext2fs_get_next_inode): Always do the check to see if the
722 inode table is missing so that we catch the case where the
723 first block group is missing.
724
Theodore Ts'oc4e749a1998-02-20 05:33:14 +0000725 * getsize.c, ismounted.c, unix_io.c: #include errno.h since it's
726 needed.
727
Theodore Ts'o9abd2ce1998-02-16 22:00:37 +0000728Mon Feb 16 16:16:00 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
729
730 * ext2_io.h, ext2fs.h: Protect against being included multiple times.
731
732 * bmove.c: #include ext2fsP.h instead of "ext2fs/ext2fs.h"
733
734 * test_io.c (test_flush): Add a debugging printf when the flush
735 method is called.
736
737 * rw_bitmaps.c (ext2fs_read_bitmaps): If the bitmaps are already
738 read in, return right away.
739
Theodore Ts'o5953b9d1998-02-01 13:23:02 +0000740Sun Feb 1 08:20:24 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
741
742 * bitops.h: Don't try to do i386 inline asm functions if the
743 compiler isn't GCC.
744
745 * ext2fs.h: If EXT2_FLAT_INCLUDES is defined, #include e2_types.h,
746 instead of linux/types.h, and e2_bitops.h instead of
747 ext2fs/bitops.h.
748
749 * icount.c, version.c: Don't #include <et/com_err.h>, as it isn't
750 necessary.
751
Theodore Ts'ob5abe6f1998-01-19 14:47:53 +0000752Sat Jan 17 13:13:31 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
753
754 * inode.c (ext2fs_open_inode_scan): Initialize the group variables
755 so that we don't need to call get_next_blockgroup() the
756 first time around. Saves a bit of time, and prevents us
757 from needing to assign -1 to current_group (which is an
758 unsigned value).
759
760 * icount.c (insert_icount_el): Cast the estimated number of inodes
761 from a float to an ino_t.
762
763 * alloc.c, alloc_tables.c, badlbocks.c, bb_compat.c, bb_inode.c,
764 bitmaps.c, bitops.c, block.c, bmap.c, bmove.c, brel_ma.c,
765 check_desc.c, closefs.c, cmp_bitmaps.c, dblist.c,
766 dblist_dir.c, dir_iterate.c, dirblock.c, dupfs.c,
767 expanddir.c, ext2fs.h, fileio.c, freefs.c,
768 get_pathname.c, getsize.c, icount.c, initialize.c,
769 inline.c, inode.c, irel_ma.c, ismounted.c, link.c,
770 lookup.c, mkdir.c, namei.c, native.c, newdir.c,
771 openfs.c, read_bb.c, read_bb_file.c, rs_bitmap.c,
772 rw_bitmaps.c, swapfs.c, test_io.c, tst_badblocks.c,
773 tst_getsize.c, tst_iscan.c, unix_io.c, unlink.c,
774 valid_blk.c, version.c: If EXT2_FLAT_INCLUDES is
775 defined, then assume all of the
776 ext2-specific header files are in a flat directory.
777
778 * block.c, bmove.c, dirblock.c, fileio.c: Explicitly cast
779 all assignments from void * to be compatible with C++.
780
781Tue Jan 6 11:28:15 1998 Theodore Ts'o <tytso@rsts-11.mit.edu>
782
783 * closefs.c (ext2fs_flush): Add a call to io_channel_flush() to
784 make sure the contents of the disk are flushed to disk.
785
786Mon Dec 29 14:39:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
787
788 * dblist.c (ext2fs_add_dir_block): Change new to be new_entry to
789 avoid C++ namespace clash.
790
791 * bitmaps.c (ext2fs_copy_bitmap): Change new to be new_map to
792 avoid C++ namespace clash.
793
794 * ext2fs.h, bb_inode.c, block.c, bmove.c, brel.h, brel_ma.c,
795 irel.h, irel_ma.c, dblist.c, dblist_dir.c, dir_iterate.c,
796 ext2fsP.h, expanddir.c, get_pathname.c, inode.c, link.c,
797 unlink.c: Change private to be priv_data (to avoid C++
798 namespace clash)
799
Theodore Ts'o5be8dc21997-12-01 18:24:10 +0000800Fri Nov 28 09:26:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
801
802 * dblist.c (ext2fs_get_num_dirs): Make ext2fs_get_num_dirs more
803 paranoid about validating the directory counts from the
804 block group information.
805
806 * all files: Don't include stdlib.h anymore; include it in
807 ext2_fs.h, since that file requires stdlib.h
808
Theodore Ts'o89270b51997-11-24 11:44:25 +0000809Thu Nov 20 16:07:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
810
811 * expanddir.c (ext2fs_expand_dir): Check to make sure the block
812 bitmap is loaded, and return an error if it is not.
813 (expand_dir_proc): Only use ext2fs_write_dir_block when
814 writing a directory block, not when writing out a fresh
815 indirect block.
816
Theodore Ts'od36d8351997-11-12 03:48:07 +0000817Tue Nov 11 22:46:45 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
818
819 * Makefile.in, tst_getsize.c: Added new file which is used to test
820 the ext2fs_get_device_size function.
821
822 * ext2_err.et.in (EXT2_ET_UNIMPLEMENTED): Added new error code.
823
Theodore Ts'o79a90bd1997-11-03 19:16:55 +0000824Sun Nov 2 20:36:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
825
826 * ext2fs.h: Make ext2fs_get_mem take an unsigned argument.
827
828 * fileio.c (ext2fs_file_get_size, ext2fs_file_set_size,
829 ext2fs_file_get_fs): New functions added.
830
831
832Fri Oct 31 12:16:52 1997 <tytso@EDT.MIT.EDU>
833
834 * bitops.c (ext2fs_warn_bitmap, ext2fs_warn_bitmap2): Don't call
835 com_err if OMIT_COM_ERR is defined.
836
Theodore Ts'o1f0b6c11997-10-31 06:07:47 +0000837Thu Oct 30 11:33:57 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
838
839 * Rename new error codes to _ET_ in them for consistency.
840
Theodore Ts'oc555aeb1997-10-25 04:16:53 +0000841Sat Oct 25 00:06:58 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
842
Theodore Ts'o7b4e4531997-10-26 03:41:24 +0000843 * [all files, basically]: Added definition of ext2fs_get_mem,
844 ext2fs_free_mem, and ext2fs_resize_mem in ext2fs.h, and
845 changed all library routines to use these wrapper functions.
846
Theodore Ts'o78d8f901997-10-26 01:53:39 +0000847 * dblist.c, mkdir.c: use EXT2_DIR_EXISTS and EXT2_DB_NOT_FOUND
848 instead of the system error messages.
849
850 * ext2_err.et.in: Added new error messages EXT2_DIR_EXISTS and
851 EXT2_DB_NOT_FOUND
852
Theodore Ts'o30fab291997-10-25 22:37:42 +0000853 * ext2fs.h: Added function declarations and constants for bmap.c
854 and fileio.c.
855
856 * ext2_err.et.in: Added new error messages EXT2_FILE_RO and
857 EXT2_ET_MAGIC_EXT2_FILE
858
859 * Makefile.in: Added files bmap.c and fileio.c, and temporarily
860 commented out brel_ma.c and irel_ma.c
861
862 * bmap.c: New file which maps a file's logical block number to its
863 physical block number.
864
865 * fileio.c: New file which implements simple file reading and
866 writing primitives.
867
Theodore Ts'oc555aeb1997-10-25 04:16:53 +0000868 * alloc.c (ext2fs_alloc_block): New function which allocates a
Theodore Ts'o30fab291997-10-25 22:37:42 +0000869 block, zeros it, and updates the filesystem accounting
870 records appropriately.
Theodore Ts'oc555aeb1997-10-25 04:16:53 +0000871
872Wed Oct 22 16:47:27 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
873
874 * ext2_err.et.in: Added new error codes: EXT2_NO_MEMORY,
875 EXT2_INVALID_ARGUMENT, EXT2_BLOCK_ALLOC_FAIL,
876 EXT2_INODE_ALLOC_FAIL, EXT2_NOT_DIRECTORY
877
878 * Change various library files to use these functions instead of
879 EINVAL, ENOENT, etc.
880
Theodore Ts'ob0b9c4d1997-10-20 23:36:30 +0000881Mon Oct 20 19:32:40 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
882
883 * llseek.c: Check HAVE_LLSEEK_PROTOTYPE to see whether or not we
884 need to declare llseek().
885
Theodore Ts'o1d2ff461997-10-19 23:00:21 +0000886Sun Oct 19 18:56:22 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
887
Theodore Ts'od40259f1997-10-20 00:44:26 +0000888 * Rename io.h to be ext2_io.h (avoid namespace collisions)
889
Theodore Ts'o1d2ff461997-10-19 23:00:21 +0000890 * Add #ifdef's for HAVE_SYS_STAT_H and HAVE_SYS_TYPES_H
891
Theodore Ts'od163b091997-10-03 17:42:28 +0000892Fri Oct 3 13:35:59 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
893
894 * llseek.c (ext2fs_llseek): Fix type error for ext2fs_llseek()
895
896 * icount.c (ext2fs_icount_validate):
897 * bmove.c (process_block): Fix lint error in type for fprintf().
898
899Mon Sep 15 11:45:09 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
900
901 * inode.c (ext2fs_check_directory): Add support for the callback
902 to return the error code EXT2_ET_CALLBACK_NOTHANDLED.
903
Theodore Ts'offf876b1997-09-13 00:32:29 +0000904Thu Sep 4 12:28:22 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
905
906 * bitmaps.c (ext2fs_set_bitmap_padding): New function which sets the
907 padding of the bitmap to be all one's.
908
Theodore Ts'obc75f2a1997-09-04 00:43:10 +0000909Wed Sep 3 14:27:30 1997 Theodore Y. Ts'o <tytso@edt.mit.edu>
910
911 * llseek.c: Added missing semicolon to glibc fixup declaration of
912 llseek().
913
914 * bmove.c: Add #include of errno.h
915
Theodore Ts'oe9affb71997-08-24 02:57:55 +0000916Sat Aug 23 22:47:46 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
917
918 * Makefile.in (ELF_SO_VERSION): Bump version to be 2.4 since we've
919 added a new field to the io_channel (app_data).
920
921 * io.h: Add a new element to the io_channel structure, app_data.
922
923 * initialize.c, openfs.c: Set io->app_data to point at the
924 filesystem handle.
925
Theodore Ts'o1c27cac1997-08-14 17:20:42 +0000926Thu Aug 14 08:14:17 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
927
928 * io.h: Change the prototype of ext2fs_llseek() to use int's
929 instead of unsigned int's.
930
931 * llseek.c: Change to allow PIC and !HAVE_LLSEEK. Add a prototype
932 to make life easer for GNU Libc 2.
933
934 * rw_bitmaps.c: On the PowerPC, the big-endian variant of the ext2
935 filesystem has its bitmaps stored as 32-bit words with bit
936 0 as the LSB of each word. Thus a bitmap with only bit 0
937 set would be, as a string of bytes, 00 00 00 01 00 ... To
938 cope with this, we byte-reverse each word of a bitmap if
939 we have a big-endian filesystem, that is, if we are *not*
940 byte-swapping other word-sized numbers.
941
Theodore Ts'o3cb6c501997-08-11 20:29:22 +0000942Mon Aug 11 03:30:48 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
943
944 * dosio.c: New file to do DOS/BIOS disk accesses.
945
946 * namei.c (open_namei): Make pathlen be of type size_t.
947
948 * llseek.c: Always #include stdlib.h since it's need to define
949 size_t.
950
951 * io.h: Use errcode_t for magic numbers.
952
953 * icount.c (get_icount_el): Use size_t where appropriate
954
955 * dupfs.c (ext2fs_dup_handle):
956 * dblist.c (dir_block_cmp): Use size_t where appropriate.
957
958 * read_bb.c (ext2fs_read_bb_inode):
959 * cmp_bitmaps.c (ext2fs_compare_inode_bitmap): Use blk_t, ino_t
960 and size_t where appropriate.
961
962 * closefs.c (ext2fs_flush): Use dgrp_t instead of int where
963 appropriate.
964
965 * openfs.c (ext2fs_open):
966 * check_desc.c (ext2fs_check_desc): Use blk_t instead of int where
967 appropriate.
968
969 * rw_bitmaps.c (read_bitmaps):
970 * irel_ma.c:
971 * inode.c (ext2fs_write_inode):
972 * initialize.c (ext2fs_initialize):
973 * brel_ma.c: Fix to make be 16-bit safe.
974
975 * link.c (ext2fs_link):
976 * unlink.c (ext2fs_unlink):
977 * lookup.c (lookup_proc):
978 * ismounted.c (ext2fs_check_if_mounted):
979 * block.c (xlate_func): Add #pragma argsused for Turbo C.
980
Theodore Ts'o4cbe8af1997-08-10 23:07:40 +0000981Sun Aug 10 10:05:22 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
982
983 * block.c (ext2fs_block_iterate2): Use retval which is a errcode_t
984 type.
985
986 * bitmaps.c (make_bitmap): Use size_t instead of int where
987 appropriate.
988
989 * bb_inode.c (set_bad_block_proc): Add #pragma argsused for Turbo C.
990
991 * alloc.c (ext2fs_new_inode): Use ino_t instead of int for the
992 group number.
993
994 * get_pathname.c: Use ino_t instead of int where appropriate.
995
996 * ext2fs.h: Make the magic structure element be errcode_t instead
997 of int.
998
999 * alloc.c alloc_tables.c badblocks.c bb_compat.c bb_inode.c
1000 bitmaps.c block.c bmove.c brel_ma.c check_desc.c closefs.c
1001 cmp_bitmaps.c dblist.c dblist_dir.c dir_iterate.c
1002 dirblock.c dupfs.c expanddir.c freefs.c get_pathname.c
1003 icount.c initialize.c inline.c inode.c irel_ma.c link.c
1004 llseek.c lookup.c mkdir.c namei.c newdir.c read_bb.c
1005 read_bb_file.c rs_bitmap.c rw_bitmaps.c swapfs.c
1006 test_io.c tst_badblocks.c tst_iscan.c unix_io.c unlink.c
1007 valid_blk.c version.c: Add an #ifdef for HAVE_UNISTD_H
1008
Theodore Ts'o024996c1997-06-17 05:38:35 +00001009Tue Jun 17 01:33:20 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1010
Theodore Ts'oa1230b11997-07-02 02:41:59 +00001011 * unix_io.c (unix_read_blk): If ext2fs_llseek() fails, but errno
1012 is zero, then return EXT2_IO_LLSEEK_FAILED.
1013
1014 * ext2_err.et.in: Add a new error code, EXT2_IO_LLSEEK_FAILED.
1015
Theodore Ts'o024996c1997-06-17 05:38:35 +00001016 * Release of E2fsprogs 1.11
1017
Theodore Ts'o549860c1997-06-17 03:55:00 +00001018Mon Jun 16 23:53:06 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1019
1020 * dblist.c (ext2fs_dblist_count): Added new function which returns
1021 the number of directory blocks in dblist.
1022
Theodore Ts'o36f21431997-06-14 07:25:40 +00001023Sat Jun 14 01:39:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1024
1025 * unix_io.c (unix_flush): Make the io_channel flush function do a
1026 fsync to flush the kernel buffers to disk.
1027
Theodore Ts'o9941fb71997-06-11 22:27:41 +00001028Wed Jun 11 18:25:31 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1029
1030 * inode.c (ext2fs_inode_scan_goto_blockgroup): Fix bug; the
1031 current inode number wasn't being set by the
1032 goto_blockgroup function.
1033
Theodore Ts'o1e1da291997-06-09 14:51:29 +00001034Mon Jun 9 10:45:48 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1035
1036 * bmove.c (ext2fs_move_blocks): New function which takes a bitmap
1037 of blocks which need to be moved, and moves those blocks
1038 to another location in the filesystem.
1039
1040 * rs_bitmap.c (ext2fs_resize_generic_bitmap): When expanding a
1041 bitmap, make sure all of the new parts of the bitmap are
1042 zero.
1043
1044Sun Jun 8 16:24:39 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1045
1046 * bitmaps.c (ext2fs_copy_bitmap): Fix bug; the destination bitmap
1047 wasn't being returned to the caller.
1048
1049 * alloc_tables.c (ext2fs_allocate_group_table): Add new function
1050 ext2fs_allocate_group_table() which sets the group tables
1051 for a particular block group. The relevant code was
1052 factored out of ext2fs_allocate_tables().
1053
1054 * dblist.c (make_dblist): Adjust the initial size of the directory
Theodore Ts'o024996c1997-06-17 05:38:35 +00001055 block list to be a bit more realistic (ten plus twice the
Theodore Ts'o1e1da291997-06-09 14:51:29 +00001056 number of directories in the filesystem).
1057
Theodore Ts'of635d7f1997-05-09 02:50:16 +00001058Thu May 8 22:19:09 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1059
1060 * badblocks.c (ext2fs_badblocks_list_test): Fix bug where
1061 ext2fs_badblocks_list_test would test the list (and exceed
1062 array boundaries) if there were no bad blocks on the bad
1063 blocks list. (Showed up when user tried: mke2fs -c -b 4096).
1064
Theodore Ts'oa29f4d31997-04-29 21:26:48 +00001065Thu Apr 24 12:16:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
1066
1067 * Release of E2fsprogs version 1.10
1068
1069Thu Apr 24 10:13:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
1070
1071 * alloc_tables.c (ext2fs_allocate_tables): Correctly place the
1072 inode and block bitmaps based on the RAID 0 stride
1073 parameter (which is passed by mke2fs).
1074
1075 * ext2fs.h: Add "stride" parameter to ext2_filsys, to be used by
1076 mke2fs to communicate the stride length to
1077 ext2fs_allocate_tables()
1078
1079Wed Apr 23 21:50:42 1997 Theodre Ts'o <tytso@localhost.mit.edu>
1080
1081 * initialize.c (ext2fs_initialize): Fix to compile under Linux 1.2
1082 systems. (We can't assume that the new filesystem types
1083 are supported.)
1084
1085Wed Apr 23 18:40:53 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1086
1087 * alloc_tables.c (ext2fs_allocate_tables): Make sure that we
1088 allocate the inode and block bitmaps inside block group at
1089 all times.
1090
1091Mon Apr 21 00:06:28 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1092
1093 * alloc.c (ext2fs_new_block): Fix bug where if goal==0 and the
1094 filesystem has no free blocks, ext2fs_new_block would loop
1095 forever.
1096
1097 * dupfs.c (ext2fs_dup_handle): Duplicate an ext2 filesystem handle
1098
1099 * freefs.c (ext2fs_free_inode_cache): Decrement refcount and only
1100 free if refcount goes to zero.
1101
1102 * inode.c (create_icache): Initialize refcount to 1.
1103
1104 * ext2fsP.h: Added refcount to ext2_inode_cache
1105
1106 * dblist.c (ext2fs_copy_dblist): New function to copy a directory
1107 block list.
1108
1109 * badblocks.c (ext2fs_badblocks_copy): New function to copy a
1110 badblocks structure.
1111
1112Sun Apr 20 23:19:51 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1113
1114 * bitmaps.c (ext2fs_copy_bitmap): New function to copy a bitmap.
1115
1116 * unix_io.c, test_io.c (unix_open, test_open): Initialize the
1117 refcount to 1.
1118 (unix_close, test_close): Decrement the refcount and only
1119 close the io_channel if the refcount goes to 0.
1120
1121 * io.h: Add refcount to the io_channel structure. Add new macro
1122 interface io_channel_bumpcount() to bump the refcount.
1123
1124Thu Apr 17 20:25:03 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1125
1126 * inode.c (ext2fs_read_inode, ext2fs_write_inode): Use the inode
1127 cache in the filesystem handle, instead of the inode cache
1128 in a static variable.
1129
1130 * freefs.c: Added static function to free the inode cache (called by
1131 ext2fs_free).
1132
1133 * ext2fsP.h: Added definition of the ext2_inode_cache structures.
1134
1135 * ext2fs.h: Added pointer to the inode_cache structure.
1136
1137 * block.c (block_iterate_ind, block_iterate_dind,
1138 block_iterate_tind): If there are holes in the indirect,
1139 doubly indirect, or triply indirect blocks, increment the
1140 block count field automatically.
1141
1142Thu Apr 17 12:23:38 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1143
1144 * Release of E2fsprogs version 1.09
1145
Theodore Ts'o2ecc6fe1997-04-29 17:57:00 +00001146Mon Apr 14 20:38:56 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1147
1148 * version.c (ext2fs_parse_version_string): Check the passed in
1149 version string (instead of the hard-coded one).
1150
1151 * alloc_tables.c (ext2fs_allocate_tables): If the last block is
1152 greater filesystem size, clamp it to prevent allocating a
1153 block or inode bitmap beyond the filesystem.
1154
1155 * initialize.c (ext2fs_initialize): Fix bug where the metatdata
1156 overhead calculation was accidentally removed.
1157
1158Fri Apr 11 18:56:26 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1159
1160 * Release of E2fsprogs version 1.08
1161
Theodore Ts'o521e3681997-04-29 17:48:10 +00001162Thu Apr 10 13:15:15 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1163
1164 * dblist.c (ext2fs_set_dir_block): New function which sets the
1165 block of a dblist entry, given the directory inode and
1166 blockcnt.
1167
1168Sat Apr 5 12:42:42 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1169
1170 * alloc_tables.c (ext2fs_allocate_tables): Allocate the bitmap and
1171 inode bitmaps at staggered locations across the block
1172 groups, to avoid concentrating the bitmaps on a small
1173 number of disks when using striped RAID arrays.
1174
1175 * initialize.c (ext2fs_initialize): By default, choose the maximum
1176 possible number of blocks per group (based on the size of
1177 the bitmaps in the blocksize).
1178
1179Fri Apr 4 11:28:16 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1180
1181 * initialize.c (ext2fs_initialize): Add support for
1182 EXT2_COMPAT_SPARSE_SUPER feature.
1183
1184 * closefs.c (ext2fs_bg_has_super): New function to determine
1185 whether or a particular block group should have a
1186 superblock and block group descriptor. Used for the
1187 EXT2_COMPAT_SPARSE_SUPER feature is turned on.
1188 (ext2fs_flush): Check ext2fs_bg_has_super to see whether
1189 or not the superblock should be written out for the block
1190 group.
1191
1192 * ext2fs.h (EXT2_COMPAT_SPARSE_SUPER): Define compatibility flag
1193 for sparse duplicate superblocks.
1194
1195 * version.c (ext2fs_get_library_version): New function which
1196 returns the library version.
1197
1198 * version.c (ext2fs_parse_version_string): New function which
1199 parses a version string and returns a version number,
1200 so application programs can compare version numbers as
1201 integers.
1202
1203Wed Mar 26 00:43:52 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1204
1205 * icount.c (ext2fs_create_icount): Change function so that it also
1206 takes a new argument which contains a "hint" icount
1207 structure. This "hint" icount allows the create function
1208 to set up the sorted list in advance. This reduces
1209 significantly the amount of data moving needed to insert
1210 these inodes into the list later.
1211
1212 * icount.c (ext2fs_icount_validate): New function which validates
1213 that the icount structure's rep invariant.
1214
1215 * icount.c (get_icount_el): Completely revamped implementation
1216 to subsume put_icount_el(). Put_icount_el() used to
1217 use an O(N) implementation to insert in the middle
1218 of the icount list. It now uses a O(ln N) to search
1219 for where the icount should be inserted, and then uses
1220 a memcpy to move the list down (instead of a for loop).
1221
1222 * icount.c (ext2fs_icount_fetch, ext2fs_icount_store,
1223 ext2fs_icount_increment, ext2fs_icount_decrement): Check
1224 to see if the inode is within bounds; if it isn't, return
1225 EINVAL.
1226
1227 * bitops.h (ext2fs_test_generic_bitmap): Fix error message given
1228 when a bad inode number is passed to test_generic_bitmap
1229 to be EXT2FS_TEST_ERROR instead of the wrong
1230 EXT2FS_UNMARK_ERROR.
1231
Theodore Ts'o21c84b71997-04-29 16:15:03 +00001232Wed Mar 12 13:32:05 1997 Theodore Y. Ts'o <tytso@mit.edu>
1233
1234 * Release of E2fsprogs version 1.07
1235
1236Sun Mar 2 16:46:18 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1237
1238 * Makefile.in (ELF_VERSION): Change version to be 2.2
1239
1240Tue Feb 11 14:54:02 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1241
1242 * alloc.c (ext2fs_get_free_blocks): Change routine to use
1243 ext2fs_fast_test_block_bitmap_range().
1244
1245 * bitops.h (ext2fs_fast_test_block_bitmap_range,
1246 ext2fs_test_block_bitmap_range: New inline functions which
1247 test to see whether a contiguous range of blocks is
1248 available.
1249
1250Thu Feb 6 10:00:13 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1251
1252 * badblocks.c (ext2fs_badblocks_list_create): Rename sybmols to use
1253 use ext2fs_badblocks_* instead of badblocks_*
1254
1255 * bb_compat.c: New file which translates between old badblocks_*()
1256 names to ext2fs_badblocks_*()
1257
1258 * unlink.c (ext2fs_unlink): New file, moved ext2fs_unlink() from
1259 link.c (since e2fsck doesn't use ext2fs_unlink()).
1260
1261 * rs_bitmap.c (ext2fs_resize_generic_bitmap): New file, contains
1262 bitmap resizing routine moved from bitmaps.c, since e2fsck
1263 doesn't need to use this function.
1264
1265 * lookup.c (ext2fs_lookup): Moved ext2fs_lookup to its own file,
1266 since e2fsck only needs ext2fs_lookup.
1267
1268Mon Feb 3 10:11:40 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1269
1270 * inode.c (ext2fs_open_inode_scan): Set fs->badblocks if it is not
1271 already set; this is needed so that programs like dump
1272 which use the inode scan functions will deal with
1273 filesystems that have bad blocks in the inode table.
1274
1275Sun Feb 2 00:17:36 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1276
1277 * ext2fs.h (struct_badblocks_list, struct_badblocks_iterate):
1278 Moved to ext2fsP.h, since it doesn't need to be part of
1279 the public interface.
1280
1281 * dir_iterate.c: Move ext2_dir_iterate out of namei.c.
1282
1283Sat Feb 1 10:14:55 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1284
1285 * dblist.c (ext2fs_get_num_dirs): New file, which implements a
1286 directory block list abstraction. (Code moved from
1287 e2fsck).
1288
1289 * ext2fs.h, inode.c: Moved definition of ext2_struct_inode_scan to
1290 to inode.c (since no one else should be peeking inside it!)
1291
1292 * valid_blk.c (ext2_inode_has_valid_blocks): New function.
1293
1294 * openfs.c (ext2fs_open): Check the feature set in the ext2
1295 superblock, and refuse to open filesystems if they contain
1296 incompatible features. (Can be overriden with the
1297 EXT2_FLAG_FORCE
1298
1299Sun Jan 12 11:31:46 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1300
1301 * block.c (ext2fs_block_iterate2): Added new function
1302 ext2fs_block_iterate2 which changes the function
1303 signature of the callback function to include the
1304 referencing block and offset.
1305
1306 * inode.c (ext2fs_inode_scan_goto_blockgroup): Added new function
1307 ext2fs_inode_scan_goto_blockgroup which allows an
1308 application to jump to a particular block group while
1309 doing an inode scan.
1310
1311Wed Jan 1 23:50:12 1997 Theodore Ts'o <tytso@rsts-11.mit.edu>
1312
1313 * dirblock.c: Include string.h, since we use memcpy().
1314
1315Tue Dec 3 12:27:29 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1316
1317 * getsize.c (ext2fs_get_device_size): The ioctl BLKGETSIZE returns
1318 a long not an int; this doesn't matter on i386 machines,
1319 but it does on Alpha's.
1320
1321Fri Nov 29 20:57:37 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1322
1323 * inode.c (ext2fs_write_inode, ext2fs_read_inode): If the inode
1324 table pointer is NULL, then return an error indicating
1325 that the inode table is missing.
1326 (get_next_blockgroup, get_next_blocks,
1327 ext2fs_get_next_inode): Don't treat a missing inode table
1328 as permanent error. Return MISSING_INODE_TABLE, but as an
1329 advisory error code, much like BAD_BLOCK_IN_INODE_TABLE.
1330
1331 * rw_bitmaps.c (ext2fs_write_block_bitmap,
1332 ext2fs_write_inode_bitmap): If the inode or block bitmap
1333 block is zero, then don't write out the inode or block
1334 bitmap. The idea here is to avoid stomping on the
1335 superblock.
1336 (read_bitmaps): If the inode or block bitmap block is
1337 zero, then fill in that portion of the inode or block
1338 bitmap with all zeros.
1339
1340 * inode.c (ext2fs_get_next_inode): Fix bug in handling of bad
1341 blocks in inode table when the inode table size is
1342 non-standard (and can therefore span blocks).
1343
1344Tue Oct 29 20:13:14 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1345
1346 * alloc.c (ext2fs_new_block): Fix fencepost error in
1347 ext2fs_new_block; make sure we don't try to allocate the
1348 first block beyond the end of the filesystem.
1349
1350Mon Oct 14 11:00:48 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1351
1352 * inode.c (check_for_inode_bad_blocks): New function called by
1353 get_next_blocks() to avoid reading in bad blocks marked in
1354 fs->badblocks. Inodes located in bad blocks are returned
1355 by ext2fs_get_next_inode() returns the error code
1356 EXT2_ET_BAD_BLOCK_IN_INODE_TABLE.
1357
1358 * alloc_tables.c (ext2fs_allocate_tables): New function which
1359 performs the part of mke2fs's job of allocating the
1360 filesystem tables.
1361
1362 * test_io.c (test_close): IO manager which is used for testing
1363 purposes.
1364
1365Sun Oct 13 04:31:57 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1366
1367 * inode.c (ext2fs_get_next_inode): Separate out the function of
1368 setting up for a new block group to get_next_blockgroup().
1369 Separate out the function of reading in blocks of the
1370 inode table to get_next_blocks().
1371
1372 * ext2fs.h: Add the badblocks list to the ext2_filsys entry
1373
1374 * badblocks.c (badblocks_list_add, badblocks_list_test): Add
1375 blocks to the badblock list in sorted order. This allows
1376 badblocks_list_test to be coded using a binary search for
1377 speed.
1378
1379Tue Oct 8 02:02:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1380
1381 * Release of E2fsprogs version 1.06
1382
Theodore Ts'o5c576471997-04-29 15:29:49 +00001383Mon Oct 7 00:44:17 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1384
1385 * ext2fs.h, block.c, closefs.c, dirblock.c, inode.c, native.c,
1386 open.c: Change EXT2_SWAP to EXT2_FLAG_SWAP for
1387 consistency's sake.
1388
1389 * closefs.c (ext2fs_flush): If the flag EXT2_MASTER_SB_ONLY is
1390 set, then only write out the master superblock.
1391
1392Sun Oct 6 21:45:26 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1393
1394 * block.c (ext2fs_block_iterate): Fixed bug which caused
1395 block_iterate to fail to handle HURD created filesystems;
1396 it tested the inode translator field before the inode was
1397 loaded.
1398
1399Tue Sep 17 14:08:24 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1400
1401 * initialize.c (ext2fs_initialize): Make sure the description for
1402 the inode bitmap is set correctly.
1403
1404 * bitmaps.c (ext2fs_allocate_generic_bitmap): Fix minor type typo.
1405
1406Thu Sep 12 15:23:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1407
1408 * Release of E2fsprogs version 1.05
1409
Theodore Ts'o1e3472c1997-04-29 14:53:37 +00001410Sat Sep 7 07:36:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1411
1412 * initialize.c: Override the kernel's idea of default
1413 checkinterval from 0 (never) to 180 days.
1414
1415Wed Aug 28 03:20:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1416
1417 * namei.c (ext2fs_namei_follow): New function which follows
1418 symbolic link (if any) at the target.
1419
1420Tue Aug 27 01:48:43 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1421
1422 * inode.c (ext2fs_read_inode, ext2fs_write_inode): Add support
1423 for shortcut function fs->read_inode() and fs->write_inode().
1424 Added inode_cache to reduce CPU time spent in doing
1425 byte swapping.
1426
1427 * swapfs.c (ext2fs_swap_super): Swap the new fields in a V2
1428 superblock.
1429
1430 * namei.c (ext2fs_follow_link): New function.
1431 (ext2fs_namei): Extended to have support for chasing
1432 symbolic links. ext2fs_namei() still returns an inode
1433 which is a symbolic link. Symbolic links are only chased
1434 while resolving the containing directory. To chase
1435 symbolic links of the final result, use
1436 ext2fs_follow_link().
1437
1438Mon Aug 26 23:46:07 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1439
1440 * ext2_err.et.in: Added new error code EXT2_ET_SYMLINK_LOOP.
1441
1442 * bitops.h (ext2fs_set_bit, ext2fs_celar_bit): Use asm inlines
1443 provided by Pete A. Zaitcev (zaitcev@lab.sun.mcst.ru).
1444
1445Thu Aug 22 00:40:18 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1446
1447 * initialize.c (ext2fs_initialize): On systems where the byte
1448 order is not i386 compatible, set the swap_byte flag.
1449
1450 * inode.c (inocpy_with_swap): Check to see if inode contains a
1451 fast symlink before swapping the inode block fields. This
1452 required adding a new argument to inocpy_with_swap to
1453 determine whether the mode field is in host order or not.
1454
1455Wed Aug 21 00:45:42 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1456
1457 * bitops.h (ext2fs_set_bit, ext2fs_clear_bit, ext2fs_test_bit): On
1458 the sparc, if EXT2_STD_BITOPS set, use the standard
1459 i386-compatible bitmask operations, instead on the
1460 non-standard native bitmask operators.
1461
1462Fri Aug 9 11:11:35 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1463
1464 * block.c (ext2fs_block_iterate): Cause block iterator to return
1465 the HURD translator block (along with everything else).
1466 If the flag BLOCK_FLAG_DATA_ONLY is passed to the block
1467 iterator, then don't return any meta data blocks
1468 (including the HURD translator).
1469
1470Wed Jul 17 17:13:34 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1471
1472 * gen_uuid.c: New file, which generates DCE-compatible UUIDs.
1473
1474 * uuid.c: New file, containing UUID utility functions.
1475
1476Tue Jul 16 10:19:16 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1477
1478 * ext2fs.h: Add a definition of the "real" ext2 superblock.
1479
1480Fri May 24 14:54:55 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1481
1482 * ext2fs.h: Fix erroneous ino_t type used in block_bitmap type.
1483
1484Sun May 19 15:39:03 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1485
1486 * openfs.c (ext2fs_open): If the blocksize in the superblock is
1487 zero, return the error EXT2_ET_CORRUPT_SUPERBLOCK, since
1488 that's a basic value that must be correct for the rest of
1489 the library to work.
1490
1491 * ext2_err.et.in (EXT2_ET_CORRUPT_SUPERBLOCK): Added new error
1492 code.
1493
Theodore Ts'o62c06f71997-04-29 14:34:47 +00001494Thu May 16 11:12:30 1996 Theodore Ts'o <tytso@rsts-11.mit.edu>
1495
1496 * Release of E2fsprogs version 1.04
1497
Theodore Ts'o7f88b041997-04-26 14:48:50 +00001498Wed Mar 27 00:33:40 1996 <tytso@rsts-11.mit.edu>
1499
1500 * Release of E2fsprogs version 1.03
1501
1502Tue Mar 26 12:06:32 1996 <tytso@rsts-11.mit.edu>
1503
1504 * bitops.h (ext2fs_set_bit, ext2fs_clear_bit, ext2fs_test_bit):
1505 Change the m68k bit numbering for bitmasks to match with
1506 the bit numbering used by all other ext2 implementations.
1507
1508Thu Mar 7 03:37:00 1996 <tytso@rsts-11.mit.edu>
1509
1510 * inode.c (ext2fs_get_next_inode, ext2fs_close_inode_scan,
1511 ext2fs_open_inode_scan): Support dynamically-sized inodes.
1512
1513Wed Mar 6 12:26:29 1996 <tytso@rsts-11.mit.edu>
1514
1515 * inode.c (ext2fs_read_inode, ext2fs_write_inode): Support
1516 dynamically-sized inodes.
1517
1518 * openfs.c (ext2fs_open): Allow dynamic revision filesystem to be
1519 loaded.
1520
1521Tue Mar 5 03:49:37 1996 <tytso@rsts-11.mit.edu>
1522
1523 * initialize.c (ext2fs_initialize): Catch an error condition where
1524 the passed in size is *really* too small.
1525
1526 * alloc.c (ext2fs_new_inode):
1527 * ext2fs.h (EXT2_FIRST_INODE): Add support for dynamic revision to
1528 get first inode.
1529
1530Wed Feb 21 15:56:17 1996 <tytso@rsts-11.mit.edu>
1531
1532 * getsize.c (ext2fs_get_device_size): Open the device read-only
1533 when trying to determine its size.
1534
Theodore Ts'o74becf31997-04-26 14:37:06 +00001535Wed Jan 31 11:06:08 1996 <tytso@rsts-11.mit.edu>
1536
1537 * Release of E2fsprogs version 1.02
1538
1539Sat Dec 9 09:57:50 1995 <tytso@rsts-11.mit.edu>
1540
1541 * rw_bitops.c (ext2fs_write_block_bitmap):
1542 * bitops.c (ext2fs_test_bit, ext2fs_clear_bit, ext2fs_set_bit):
1543 * bitops.h (ext2fs_test_bit, ext2fs_clear_bit, ext2fs_set_bit):
1544 Rename {test,set,clear}_bit to ext2fs_{test,set,clear}_bit,
1545 to avoid conflicts with with kernel include files. Also
1546 rename ADDR and CONST_ADDR to EXT2FS_ADDR and
1547 EXT2FS_CONST_ADDR.
1548
Theodore Ts'o50e1e101997-04-26 13:58:21 +00001549Thu Oct 26 12:09:16 1995 <tytso@rsts-11.mit.edu>
1550
1551 * ext2_err.et: Updated message in EXT2_ET_BASE to say version 0.5c
1552
1553 * swapfs.c (ext2fs_swap_super): Put an #ifdef check around
1554 s_def_resuid and s_def_resgid for backwards compatibility.
1555
1556Fri Oct 20 23:33:31 1995 <tytso@rsts-11.mit.edu>
1557
1558 * bitops.h: Added #ifdef's for Sparc.
1559
1560Wed Sep 6 22:14:46 1995 <tytso@rsts-11.mit.edu>
1561
1562 * getsize.c: #include <sys/ioctl.h> under Linux to pick up ioctl()
1563 declaration
1564
1565 * closefs.c: #include <string.h> to pick up memset() declaration
1566
1567Mon Sep 4 21:45:29 1995 Remy Card <card@bbj>
1568
1569 * Makefile.in: Added support for BSD shared libraries.
1570
1571 * initialize.c (ext2fs_initialize): Correctly set the s_creator_os
1572 flag.
1573
1574Mon Sep 4 09:55:30 1995 <tytso@rsts-11.mit.edu>
1575
1576 * unix_io.c (unix_open): Add a double check; if the passed in name
1577 is NULL, return EXT2_ET_BAD_DEVICE_NAME.
1578
1579 * ext2_err.et (EXT2_ET_BAD_DEVICE_NAME): Added new error code
1580
1581Wed Aug 16 15:44:10 1995 <tytso@rsts-11.mit.edu>
1582
1583 * inode.c (ext2fs_check_directory): Use LINUX_S_ISDIR instead of
1584 S_ISDIR.
1585
1586Tue Aug 15 13:08:36 1995 <tytso@rsts-11.mit.edu>
1587
1588 * getsize.c (ext2fs_get_device_size): Add support for reading the
1589 partition size from a BSD disk label.
1590
1591Thu Aug 10 09:33:26 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1592
1593 * getsize.c (ext2fs_get_device_size): New function that determins
1594 the size of a device. Used by mke2fs and e2fsck.
1595
1596Sat Aug 12 03:09:54 1995 Remy Card <card@bbj>
1597
1598 * Makefile.in (install): Install static libraries in $(ulibdir)
1599 (/usr/lib on Linux) instead of $(libdir) (/lib on Linux).
1600
1601Wed Aug 9 17:04:23 1995 Theodore Y. Ts'o <tytso@dcl>
1602
1603 * bitmaps.c (ext2fs_free_inode_bitmap, ext2fs_free_block_bitmap):
1604 Move these functions to freefs.c.
1605
1606 * closefs.c (ext2fs_flush): If swapping blocks, clear the group
1607 descriptors shadow memory to keep purify quiet. (This
1608 also has the nice benefit that the unused portion of the
1609 shadow descriptors are zeroed out.)
1610
1611 * dirblock.c (ext2fs_write_dir_block): We need to use
1612 dirent->rec_len *before* it's byteswapped to find the
1613 location of the next directory structure!
1614
1615 * alloc.c (ext2fs_new_inode): Fix bug which could potentially
1616 cause ext2fs_new_inode to loop infinitely if we're trying
1617 to allocate an inode in group #0 and there are no free
1618 inodes at all in the system.
1619
1620 * closefs.c: #include <errno.h> if it exists.
1621
1622Sun Aug 6 13:27:50 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1623
1624 * ext2fs.h (BLOCK_FLAG_HOLE): Added new definition for
1625 BLOCK_FLAG_APPEND. Added documentation for the block
1626 interator flags.
1627
1628Sat Aug 5 11:44:05 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1629
1630 * Makefile.in (DLL_INSTALL_DIR, ELF_INSTALL_DIR): Set the
1631 installation directories correctly.
1632
1633Tue Jul 18 09:27:38 1995 <tytso@rsx-11.mit.edu>
1634
1635 * namei.c (process_dir_block):
1636 * mkdir.c (ext2fs_mkdir):
1637 * expanddir.c (expand_dir_proc): Use ext2fs_{read,write}_dir_block
1638 to read/write the directory block.
1639
1640 * dirblock.c (ext2fs_read_dir_block), ext2fs_write_dir_block): New
1641 file containing functions for reading and writing
1642 directory blocks (byte swapping if necesssary)
1643
1644 * block.c (block_iterate_ind, block_iterate_dind,
1645 block_iterate_tind): Byte swap the block addresses if
1646 EXT2_SWAP_BYTES is set (and swap them back before writing
1647 them out.)
1648
1649 * inode.c (inocpy_with_swap): New function.
1650 (ext2fs_get_next_inode, ext2fs_read_inode, ext2fs_write_inode):
1651 Call inocpy_with_swap if EXT2_SWAP_BYTES if set.
1652
1653 * closefs.c (ext2fs_flush): If EXT2_SWAP_BYTES is set, then swap
1654 the superblock and group descriptors before writing it out.
1655
1656 * openfs.c (ext2fs_open): If the magic number is byte-swapped,
1657 then set the EXT2_SWAP_BYTES and byte-swap the superblock
1658 and group descriptors.
1659
1660 * swapfs.c (ext2fs_swap_super, ext2fs_swap_group_desc): New functions
1661 to desp ext2 filesystem structures.
1662
1663 * bitops.c (set_bit, clear_bit, test_bit): Use modifications
1664 supplied by Pete A. Zaitcev so that the C language
1665 versions of these functions are more portable. They will
1666 now work on both little and big endian systems, and the
1667 assumption that 32-bit integers are used is gone.
1668
1669 * bitops.h (ext2_swab16, ext2_swab32): Added new functions for
1670 doing byte swapping.
1671
1672 * ext2fs.h (EXT2_SWAP_BYTES): Add new flag which indicates that
1673 byte swapping should take place.
1674
1675Sun Jul 16 06:21:43 1995 <tytso@rsx-11.mit.edu>
1676
1677 * Makefile.in, cmp_bitmaps.c (ext2fs_compare_block_bitmap_end,
1678 ext2fs_compare_inode_bitmap_end): Added new file
1679 containing routines to compare bitmaps.
1680
1681 * ext2_err.et (EXT2_ET_NEQ_BLOCK_BITMAP, EXT2_ET_NEQ_INODE_BITMAP):
1682 Added new error codes.
1683
1684Sat Jul 15 04:23:37 1995 <tytso@rsx-11.mit.edu>
1685
1686 * inode.c (ext2fs_get_next_inode): Don't check scan->inode_buffer;
1687 if the magic number is correct, it will be allocated.
1688
1689Fri Jul 14 19:02:59 1995 <tytso@rsx-11.mit.edu>
1690
1691 * block.c (block_iterate_ind, block_iterate_dind,
1692 block_iterate_tind): Don't recompute block_nr each loop;
1693 just increment it! Factor check of BLOCK_FLAG_APPEND out
1694 of the loop. Factor mask of BLOCK_CHANGED into changed
1695 variable out of the loop. (block_iterate_ind, in
1696 particular, gets called a lot, so every little
1697 optimization helps.)
1698
1699Thu Jul 13 08:02:45 1995 <tytso@rsx-11.mit.edu>
1700
1701 * block.c (block_iterate_ind, block_iterate_dind,
1702 block_iterate_tind): Precompute limit of loop to speed up
1703 block_iterate_ind and company.
1704
1705 * bitops.h (ext2fs_fast_mark_block_bitmap,
1706 ext2fs_fast_unmark_block_bitmap, ext2fs_fast_test_block_bitmap,
1707 ext2fs_fast_mark_inode_bitmap, ext2fs_fast_unmark_inode_bitmap,
1708 ext2fs_fast_test_inode_bitmap): Add fast version of these
1709 functions, which don't do range checking.
1710
1711 * bitops.h (ext2fs_get_block_bitmap_start,
1712 ext2fs_get_inode_bitmap_start, ext2fs_get_block_bitmap_end,
1713 ext2fs_get_inode_bitmap_end): Add new accessor functions
1714 which return the start and end points of the bitmaps.
1715
1716Tue Jul 11 18:59:41 1995 <tytso@rsx-11.mit.edu>
1717
1718 * llseek.c (ext2_llseek): If the offset is small enough, use lseek
1719 instead of llseek. The errno if the offset is too large
1720 and lseek is not supported should be EINVAL, not -EINVAL.
1721
1722Thu Jun 15 23:43:02 1995 Remy Card <card@bbj>
1723
1724 * Makefile.in: Added support for ELF shared libraries.
1725 Fixed typos in the compilation rules.
1726 (distclean): Added Makefile.
1727
1728 * llseek.c (llseek): New function, if llseek() does not exist in the
1729 C library.
1730 (ext2_llseek): Changed to call llseek().
1731
1732Mon Jun 12 08:29:07 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1733
1734 * ext2fs.h: Use __u32 to define blk_t, instead of unsigned long.
1735
1736Sun Jun 11 15:02:54 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1737
1738 * mkdir.c (ext2fs_mkdir): Use LINUX_S_IFDIR instead of S_IFDIR.
1739
1740 * ext2fs.h (LINUX_S_IFDIR): Define a linux specific versions of
1741 the S_*, which are normally defined in <sys/stat.h>. This
1742 allows us to compile e2fsprogs on a non-Linux system,
1743 which may have a different value for S_IFDIR.
1744
1745Sat Jun 10 23:47:05 1995 Theodore Y. Ts'o <tytso@lurch.mit.edu>
1746
1747 * bitops.c (clear_bit, set_bit): Remove calls to cli() and sti();
1748 this is a user-mode application!
1749
1750Thu Jun 8 13:13:22 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu>
1751
1752 * llseek.c: Put the include of <linux/unistd.h> inside the #ifdef
1753 __linux__ so that non-linux systems won't see it.
1754
1755 * alloc.c: Include <errno.h> if possible.
1756 * badblocks.c: Ditto.
1757 * bb_inode.c: Ditto.
1758 * bitmaps.c: Ditto.
1759 * block.c: Ditto.
1760 * expanddir.c: Ditto.
1761 * get_pathname.c: Ditto.
1762 * initialize.c: Ditto.
1763 * inode.c: Ditto.
1764 * llseek.c: Ditto.
1765 * mkdir.c: Ditto.
1766 * namei.c: Ditto.
1767 * newdir.c: Ditto.
1768 * openfs.c: Ditto.
1769 * rw_bitmaps.c: Ditto.
1770 * unix_io.c: Ditto.
1771
1772 * Makefile.in: Rewritten to conform to GNU coding standards and
1773 support separate compilation directories.
1774
1775Thu May 11 04:13:12 1995 <tytso@rsx-11.mit.edu>
1776
1777 * initialize.c (ext2fs_initialize): Don't allow more than one
1778 bitmaps's worth of inodes in a group.
1779
Theodore Ts'of3db3561997-04-26 13:34:30 +00001780Sat Mar 11 14:07:11 1995 Theodore Y. Ts'o <tytso@localhost>
1781
1782 * llseek.c (ext2_llseek): Added error checking to the llseek()
1783 compat code to protect against overflow. This only
1784 applies to 1.0 and early 1.1 kernels, which don't support
1785 the llseek() system call.
1786
1787Thu Nov 24 16:29:00 1994 Theodore Y. Ts'o (tytso@rt-11)
1788
1789 * unix_io.c (unix_open): Initialize the read_error and write_error
1790 io_channel pointers to be null.
1791
1792 * bb_inode.c (clear_bad_block_proc): If an illegal block number is
1793 found, clear it but don't try to update the filesystem
1794 accounting information, since that's hopeless anyway.
1795
1796 * block.c (bloblock_iterate_ind, bloblock_iterate_dind,
1797 bloblock_iterate_tind): Check to see if the indirect blocks are
1798 valid before trying to read them.
1799
1800 * ext2_err.et (EXT2_ET_BAD_IND_BLOCK, EX2_ET_BAD_DIND_BLOCK,
1801 EXT2_ET_BAD_TIND_BLOCK): Add new error codes.
1802
1803 * bitops.h (ext2fs_mark_block_bitmap, ext2fs_unmark_block_bitmap,
1804 ext2fs_test_block_bitmap, ext2fs_mark_inode_bitmap,
1805 ext2fs_unmark_inode_bitmap, ext2fs_test_inode_bitmap): If an
1806 illegal block or inode number is passed in, return instead
1807 of trying to test, set, or clear the bit.
1808
1809Mon Nov 7 21:32:33 1994 Remy Card <card@bbj>
1810
1811 * Makefile: Added a dummy install target in case shared libraries
1812 are not built.
1813
1814Mon Oct 24 14:11:44 1994 (tytso@rsx-11)
1815
1816 * bitmaps.c (ext2fs_allocate_block_bitmap): Fix calculation of how
1817 the real last block of the bitmap should be calculated.
1818
1819Wed Sep 7 10:05:36 1994 (tytso@rsx-11)
1820
1821 * bitmaps.c (ext2fs_fudge_inode_bitmap_end,
1822 ext2fs_fudge_block_bitmap_end, ext2fs_clear_inode_bitmap,
1823 ext2fs_clear_block_bitmap, ext2fs_free_inode_bitmap,
1824 ext2fs_free_block_bitmap): Add magic number checking for
1825 the inode and block bitmaps.
1826
1827 * bitmaps.c (ext2fs_allocate_block_bitmap): Fix to set the correct
1828 magic number for a block bitmap instead of an inode bitmap.
1829
1830 * inode.c (ext2fs_close_inode_scan, ext2fs_get_next_inode): Add
1831 magic number checking for the inode_scan structure.
1832
1833 * badblocks.c (badblocks_list_free, badblocks_list_add,
1834 badblocks_list_test, badblocks_list_iterate_begin,
1835 badblocks_list_iterate, badblocks_list_iterate_end): Add
1836 magic number checking for the badblocks_list and
1837 badblocks_iterate structures.
1838
1839 * ext2_err.et (EXT2_ET_MAGIC_UNIX_IO_CHANNEL):
1840 * unix_io.c (unix_open, unix_close, unix_set_blksize, unix_read_blk,
1841 unix_write_blk, unix_flush): Add magic number checking
1842 both for io_channel structure and unix_private_data
1843 structure.
1844
1845 * openfs.c (ext2fs_open): Add check for io_manager structure's
1846 magic number.
1847
1848 * rw_bitmaps.c (ext2fs_write_inode_bitmap, ext2fs_write_block_bitmap,
1849 ext2fs_read_inode_bitmap, ext2fs_read_block_bitmap,
1850 ext2fs_read_bitmaps, ext2fs_write_bitmaps):
1851 * read_bb.c (ext2fs_read_bb_inode):
1852 * read_bb_file.c (ext2fs_read_bb_FILE):
1853 * newdir.c (ext2fs_new_dir_block):
1854 * namei.c (ext2fs_dir_iterate, ext2fs_lookup, ext2fs_namei):
1855 * link.c (ext2fs_link, ext2fs_unlink):
1856 * inode.c (ext2fs_open_inode_scan, ext2fs_read_inode,
1857 ext2fs_write_inode, ext2fs_get_blocks,
1858 ext2fs_check_directory):
1859 * get_pathname.c (ext2fs_get_pathname):
1860 * expanddir.c (ext2fs_expand_dir):
1861 * block.c (ext2fs_block_iterate):
1862 * bitmaps.c (ext2fs_allocate_inode_bitmap,
1863 ext2fs_allocate_block_bitmap):
1864 * bb_inode.c (ext2fs_update_bb_inode):
1865 * alloc.c (ext2fs_new_inode,ext2fs_new_block,ext2fs_get_free_blocks):
1866 * check_desc.c (ext2fs_check_desc):
1867 * closefs.c (ext2fs_close, ext2fs_flush):
1868 * freefs.c (ext2fs_free): Add check for ext2_filsys magic number.
1869
1870 * Makefile:
1871 * ext2fs.h:
1872 * openfs.c:
1873 * check_desc.c (ext2fs_check_desc): Move ext2fs_check_desc from
1874 openfs.c into its own file.
1875
1876 * ext2fs.h (EXT2_CHECK_MAGIC): Added macro for checking for
1877 structure magic numbers.
1878
1879 * closefs.c (ext2fs_flush): Folded in Remy Card's changes to clear
1880 the EXT2_VALID_FS flag in the backup superblock blocks, so that if
1881 someone uses the -b option to specify the use of the backup
1882 superblock --- this usually means that the main superblock is
1883 toast. :-)
1884
1885 * ext2fs.h:
1886 * ext2_err.et (EXT2_ET_REV_TOO_HIGH):
1887 * openfs.c (ext2fs_open): Folded in Remy Card's changes to add a
1888 revision level to the superblock.
1889
1890Sun Aug 21 00:50:08 1994 Theodore Y. Ts'o (tytso@rt-11)
1891
1892 * ext2fs.h:
1893 * bitmaps.c:
1894 * bitops.c
1895 * bitops.h:
1896 * openfs.c:
1897 * initialize.c: Completely revamped the inode and block bitmap
1898 structures, so that they can be better chance of being extensible
1899 in a shared library. They are now their own type, instead of
1900 being a char *. Also, the function signatures of
1901 ext2fs_test_block_bitmap, ext2fs_mark_block_bitmap,
1902 ext2fs_unmark_block_bitmap, ext2fs_test_inode_bitmap,
1903 ext2fs_mark_inode_bitmap, and ext2fs_unmark_inode_bitmap were
1904 changed to eliminate the ext2_filsys argument, since it is no
1905 longer necessary.
1906
1907Wed Aug 17 21:46:44 1994 Remy Card (card@bbj)
1908
1909 * unix_io.c (unix_read_blk and unix_write_blk): use the llseek
1910 system call if available.
1911
1912 * llseek.c: new file. This is the stub calling the llseek system
1913 call which allows supports for 2GB+ file systems.
1914
1915 * initialize.c (ext2fs_initialize): Ext2fs_initialize now stores
1916 the creator operating system.
1917
1918Wed Aug 17 10:03:24 1994 Theodore Y. Ts'o (tytso@rt-11)
1919
1920 * initialize.c (ext2fs_initialize): Ext2fs_initialize now sets up
1921 the group descriptor statistics in addition to everything else.
1922 This relieves mke2fs of the responsibility of doing it.
1923
1924 * bitops.c, bitops.h: Add assembly inline functions for the 68000.
1925 Added a new #define, _EXT2_HAVE_ASM_BITOPS_ to control whether or
1926 not the generic C function equivalents should be included or not.
1927
1928 * openfs.c (ext2fs_open): If a superblock is specified, then use
1929 the backup group descriptors that go along with this superblock,
1930 instead of using the primary group descriptors. This allows
1931 e2fsck to recover filesystems where the primary group descriptors
1932 have been trashed.
1933
1934