Whamcloud - gitweb
tune2fs.c (update_feature_set, remove_journal_inode): If
[tools/e2fsprogs.git] / misc / ChangeLog
1 2001-07-31  Theodore Tso  <tytso@valinux.com>
2
3         * tune2fs.c (update_feature_set, remove_journal_inode): If
4                 removing an in-filesystem journal, clear out the journal
5                 inode and update the filesystem accounting structures so
6                 we don't have to run e2fsck to clean up after ourselves
7
8 2001-07-30  Theodore Tso  <tytso@valinux.com>
9
10         * tune2fs.c (update_feature_set): Don't require a forced fsck if
11                 we're removing an external journal from a filesystem.
12
13 2001-07-27  Theodore Tso  <tytso@valinux.com>
14
15         * mke2fs.c (PRS): If the blocksize is not specified and the
16                 journal device is specified, use it to determine the
17                 blocksize of the new filesystem.
18
19 2001-07-20  Theodore Tso  <tytso@valinux.com>
20
21         * fsck.8.in: Add much more explicit language documenting how the
22                 fs_passno field in /etc/fstab is handled.  (Addresses
23                 Debian bug #30833).
24
25 2001-07-19  Theodore Tso  <tytso@valinux.com>
26
27         * fstype.c (identify_fs): New file which looks at the superblock
28                 of the filesystem to determines its type.
29
30         * fsck.c (fsck_device, ignore, interpret_type): Call identify_fs
31                 if the type specified in /etc/fstab is "auto".
32
33 2001-06-23  Theodore Tso  <tytso@valinux.com>
34
35         * Release of E2fsprogs 1.22
36
37 2001-06-15  Theodore Tso  <tytso@valinux.com>
38
39         * Release of E2fsprogs 1.21
40
41 2001-06-14  Theodore Tso  <tytso@valinux.com>
42
43         * mke2fs.c (PRS): Remove unneeded test in when creating a external
44                 filesystem journal.
45
46 2001-06-13  Theodore Tso  <tytso@valinux.com>
47
48         * tune2fs.c, mke2fs.c, util.c, util.h (print_check_message): Move
49                 the message which displays how often the filesystem will
50                 be checked from mke2fs into a utility subroutine.  Then
51                 cause tune2fs to call that function to display the message
52                 after adding a journal to a filesystem.
53
54         * mke2fs.8.in: Add manual page fixups and explanation for why it's
55                 good to check filesystems periodically from Andreas
56                 Dilger.
57
58         * Makefile.in: Don't build e2image if --disable-imager is
59                 specified to configure.
60
61 2001-06-12  Theodore Tso  <tytso@valinux.com>
62
63         * dumpe2fs.c: Use WORDS_BIGENDIAN to determine whether or not
64                 we're (not) using i386 byte order.
65
66         * dumpe2fs.c, mke2fs.c: Stop using the compatibility badblocks
67                 function, and use the ext2fs_badblocks_* functions
68                 instead.
69
70         * fsck.c (device_already_active): Fixed bug which can cause fsck
71                 to core dump if there are a mix of devices with standard
72                 and non-standard names.  (Addresses Debian bug #100559)
73
74 2001-06-07  Theodore Tso  <tytso@valinux.com>
75
76         * chattr.c, lsattr.c: Don't use _FILE_BITS_OFFSET method of using
77                 the 64-bit function, since this changes the expected size
78                 of struct dirent.  Instead use lseek64 explicitly.
79
80 2001-06-01  Theodore Tso  <tytso@valinux.com>
81
82         * Makefile.in: Move include/asm/types.h.in to
83                 lib/ext2fs/ext2_types.h.in.
84
85 2001-05-25  Theodore Tso  <tytso@valinux.com>
86
87         * Release of E2fsprogs 1.20
88
89 2001-05-25  Theodore Tso  <tytso@valinux.com>
90
91         * tune2fs.c (update_feature_set): Fix capitalization typo.
92
93 2001-05-23  Theodore Tso  <tytso@valinux.com>
94
95         * partinfo.c (main): Use unsigned long instead of long when
96                 querying the size of a device using the BLKGETSIZE ioctl,
97                 to remove the 1TB limit (and turn it into a 2TB limit :-)
98
99         * fsck.c (compile_fs_type): Fix I18N compilation bug: use N_()
100                 instead of _() to initialize static variables.
101
102 2001-05-20  Theodore Tso  <tytso@valinux.com>
103
104         * fsck.8.in, fsck.c (compile_fs_type, fs_type, ignore): Fix
105                 handling of -t option to be more intuitive.  Also add
106                 support for the Mandrake -t loop hack.  See man page
107                 for description of new -t semantics.
108
109         * fsck.c (device_already_active): Fix bug in
110                 device_already_active which could cause infinite loops if
111                 we don't know the base_device of the filesystem.
112
113         * fsck.c: Make sure all exit status codes returned by fsck are
114                 consistent with the error codes documented in the fsck man
115                 page.
116
117 2001-05-14  Theodore Tso  <tytso@valinux.com>
118
119         * badblocks.c, chattr.c, dumpe2fs.c, e2image.c, findsuper.c, 
120                 lsattr.c, mke2fs.c, mklost+found.c, tune2fs.c, util.c:
121                 Change location of ext2_fs.h to be ext2fs/ext2_fs.h
122
123         * tune2fs.8.in: Fix typo's and make other clarifications suggested
124                 by Andreas Dilger.
125
126 2001-05-11  Andreas Dilger  <adilger@turbolinux.com>
127
128         * mke2fs.c: don't zap the superblock if we are running with noaction!
129                 Zap the end of the device to remove stale RAID superblocks.
130
131 2001-05-14  Theodore Tso  <tytso@valinux.com>
132
133         * tune2fs.c (update_feature_set): Clean up some printf messages.
134
135         * fsck.8.in, mke2fs.8.in, tune2fs.8.in: Fix typo's and make other
136                 clarifications suggested by Andreas Dilger.
137
138 2001-05-13  Theodore Tso  <tytso@valinux.com>
139
140         * mke2fs.c (PRS): Integrated changes from Andreas Dilger which
141                 make the revision superblock field be set to the correct
142                 value depending on if superblock features are set.
143
144 2001-05-12  Theodore Tso  <tytso@valinux.com>
145
146         * fsck.c (PRS): fsck -? now prints the usage message.
147
148         * badblocks.8.in, dumpe2fs.8.in, e2label.8.in, mke2fs.8.in, 
149                 mklost+found.8.in, tune2fs.8.in: Fix typo; removed
150                 excess "anonymous" in the AVAILABILITY section.
151
152         * chattr.1.in, lsattr.1.in, uuidgen.1.in: Update URL location of
153                 e2fsprogs package.
154
155 2001-05-07  Theodore Tso  <tytso@valinux.com>
156
157         * util.c: Use specific check for HAVE_SYS_STAT_H.
158
159 2001-05-05  Theodore Tso  <tytso@valinux.com>
160
161         * fsck.8.in: Add explicit language to describe how options get
162                 passed to filesystem-specific checkers.
163
164         * badblocks.8.in: Fixed man page to describe the first optional
165                 parameter to badblocks as last_block, instead of
166                 num_blocks.  (Debian bug #87216)
167
168         * badblocks.c: Change the blocks_count variable to be last_count,
169                 which is a more accurate description of the variable.
170
171 2001-05-03  Theodore Tso  <tytso@valinux.com>
172
173         * e2image.8.in: New manual page
174
175         * badblocks.8.in, e2label.8.in, mke2fs.8.in mklost+found.8.in, 
176                 tune2fs.8.in: Update location of e2fsprogs to be
177                 http://e2fsprogs.sourceforge.net.
178
179         * dumpe2fs.c (main): Add new flag, -i, which will allow dumpe2fs
180                 to dump out the filesystem statistics from an ext2 image
181                 file.
182         
183         * e2image.c (main): Fix format of e2image to be easier to be parse
184                 by ext2fs_open().
185
186 2001-05-01  Theodore Tso  <tytso@valinux.com>
187
188         * fsck.c (device_already_active): If we're not able to determine
189                 the base device, we should assume that the device is
190                 already active in order to force serialization.
191
192 2001-04-26  Theodore Tso  <tytso@valinux.com>
193
194         * tune2fs.c (parse_tune2fs_options): Interpret -c 0 as -c -1 (for
195                 backwards compatibility with older kernels).  -c 0 makes
196                 more sense to users.
197
198 2001-04-22  Theodore Tso  <tytso@valinux.com>
199
200         * tune2fs.c (remove_journal_device): If the force flag is given,
201                 tune2fs will remove the journal device information from
202                 the superblock even if tune2fs failed to open the journal
203                 device or otherwise other failed to remove the filesystem
204                 from journal device.
205                 (parse_tune2fs_options): Fix -j option so that it works
206                 (it was missing the open_flag being set to EXT2_FLAG_RW).
207                 (main): Accept "-U clear" to set a null UID.
208         
209 2001-04-21  Theodore Tso  <tytso@valinux.com>
210
211         * mke2fs.8.in: Manual page cleanups.  Temporarily comment out the
212                 documentation for the extern journal device support.
213
214         * mke2fs.c (usage): Remove the deprecated -s option from the usage
215                 message.
216
217 2001-04-16  Theodore Tso  <tytso@valinux.com>
218
219         * mke2fs.c (main): Add better explanation about when the
220                 filesystem will be checked after it is created.
221
222         * util.c (parse_journal_opts): Remove code which allowed a bare
223                 number to be treated as a journal size.
224
225         * mke2fs.c, tune2fs.c: Add newlines to error messages so that they
226                 look nicer.
227
228         * mke2fs.c (create_journal_dev): Call
229                 ext2fs_create_journal_superblock() first, so if it's going
230                 to error out, the user finds out before waiting for the
231                 entire device to get zero'ed.
232
233 2001-03-26  Theodore Tso  <tytso@valinux.com>
234
235         * mke2fs.8.in, tune2fs.8.in: Change man paegs to document that the
236                 journal must be bewteen 1024 and 102,400 file system
237                 blocks.
238
239         * mke2fs.c, tune2fs.c: Change to use figure_journal_size()
240
241         * util.c, util.h (figure_journal_size): Change
242                 journal_default_size into routine which also converts the
243                 requested journal size into filesystem blocks and does
244                 bounds checking to make sure the journal is sized
245                 reasonably.  Renamed function to journal_default_size.
246                 (parse_journal_opts): Remove bounds check for the journal
247                 size, since this is now done in figure_journal_size, and
248                 based on the number of filesystem blocks, as opposed to
249                 using the absolute size of the journal.
250
251 2001-02-17  Theodore Tso  <tytso@valinux.com>
252
253         * mke2fs.c (main): Flush out the "creating journal" message.
254                 Also handle the case where the default journal size
255                 returns zero blocks == no journal.  Print out how often
256                 the filesystem will be checked.
257
258 2001-02-08  Theodore Tso  <tytso@valinux.com>
259
260         * e2image.c (main): Add code to write the e2image header.
261
262 2001-02-07  Theodore Tso  <tytso@valinux.com>
263
264         * tune2fs.8.in: Update man page to reflect that 2.0.39 supports
265                 sparse_super.
266
267         * dumpe2fs.c (list_desc): Fix fencepost error when calculating the
268                 range of inode table blocks.  Add '0x' to values printed
269                 in hex.
270
271         * chattr.c, lsattr.c: Define the _LARGEFILE64_SOURCE to force the
272                 use of the LFS so that lstat will work on large files.
273
274 2001-01-17  Theodore Ts'o  <tytso@valinux.com>
275
276         * tune2fs.c, mke2fs.c, tune2fs.8.in, mke2fs.8.in: Change user
277                 interface so that -J is used to specify journal options,
278                 and -j is used to request creation of a journal using
279                 default values.  (This is a UI change, but we haven't done
280                 a formal release, and it makes things much more consistent
281                 with the rest of the options out there.) 
282
283         * tune2fs.c: Add support for removing a filesystem from an
284                 external journal; we correctly remove the filesystem UUID
285                 from the external journal's filesystem list.
286
287         * util.h, util.c (journal_default_size): New function from Andreas
288                 Dilger to calculate an appropriate default journal size
289                 given a filesystem size.
290
291         * util.c (parse_journal_opts): Allow the creation of a journal as
292                 small as 1MB.
293
294         * dumpe2fs.c (print_journal_information): Use s_first_data_block
295                 to find the correct block to read the journal superblock.
296
297 2001-01-15  Theodore Ts'o  <tytso@valinux.com>
298
299         * tune2fs.c: Changed the external journal code so that it simply
300                 adds a filesystem to a journal; the journal must have bene
301                 created via "mke2fs -O journal_dev /dev/XXX".
302
303         * mke2fs.c: Add support for creating an external journal device by
304                 using the command "mke2fs -O journal_dev /dev/XXX".  Also
305                 changed the external journal code so -j device=/dev/XXX it
306                 simply adds a filesystem to that journal; the journal must
307                 have been created via separate step.
308
309         * dumpe2fs.c (print_journal_information): Add support for dumping
310                 information about an external journal device.
311
312 2001-01-14  Theodore Ts'o  <tytso@valinux.com>
313
314         * mke2fs.c: Add new filesystem types, largefile and largefile4,
315                 for those filesystems whose average inode size is 1MB and
316                 4MB, respectively.  Allow the inode ratio specified to be
317                 has high as 4MB.   Make the s_max_mount_count vary between
318                 20 and 40, to avoid needing to check all of the
319                 filesystems at the same time.  Add some random jitter to
320                 the s_max_mount_count value so that we avoid checking all
321                 of the filesystems at the same time when we reboot.
322
323         * tune2fs.8.in: Add description of the -j option.
324
325         * tune2fs.c (add_journal): Minor fixes from Andreas Dilger. Flush
326                 stdout after printing in-progress message.  
327                 (main): Exit with status code 1 if we failed to determine
328                 the mount status of the device.
329
330 2001-01-11    <tytso@snap.thunk.org>
331
332         * e2image.c, mke2fs.c, mklost+found.c, tune2fs.c, util.c,
333                 uuidgen.c: Fix gcc -Wall complaints, including one bug in
334                 tune2fs caused by a block automatic shadowing version of
335                 the variable we really wanted to use, which broke the
336                 logic testing to see if the filesystem was mounted.
337
338         * badblocks.c (flush_bufs): Use ext2fs_sync_device() to sync and
339                 flush the device.
340
341         * mke2fs.c: Change ino_t to ext2_ino_t.
342
343 2001-01-08    <tytso@snap.thunk.org>
344
345         * Makefile.in, tune2fs.c: Move e2label functionality into tune2fs,
346                 using argv[0] as a dispatch.  This allows e2label to be
347                 (more) safely used on mounted filesystems.
348
349 2001-01-05    <tytso@snap.thunk.org>
350
351         * get_device_by_label.h (get_volume_label_by_spec): Add function
352                 prototype.
353
354         * get_device_by_label.c: Use string_copy() instead of strdup() for
355                 portability's sake.  Fix a few other gcc -Wall
356                 complaints. 
357
358         * fsck.c (string_copy): Export string_copy() extern.
359
360         * badblocks.c: Fix various gcc -Wall complaints, including
361                 an incorrect reference to sync in flush_bufs().
362
363 2001-01-03    <tytso@snap.thunk.org>
364
365         * tune2fs.c (update_feature_set, add_journal): Moved to separate
366                 functions.  Added ability to add and remove the journal
367                 while the filesystem is live.  Added support for setting
368                 a time-based UUID.  Removed zero-initialized static variables.
369
370         * mke2fs.c, util.c, util.h (strcasecmp, proceed_question,
371                 check_plausibility, parse_journal_opts, check_mount):
372                 Moved functions to util.c so they can be used by tune2fs.
373
374         * mke2fs.c (main): Change ext2fs_add_journal_fs() to 
375                 ext2fs_add_journal_inode() to reflect function renaming.
376
377 2001-01-01    <tytso@snap.thunk.org>
378
379         * mke2fs.c, e2image.c: Removed references to struct ext2fs_sb to
380                 struct ext2_super_block.
381
382         * tune2fs.c (main): Add support to allow HAS_JOURNAL flag to be
383                 cleared, but only if the filesystem is unmounted or
384                 mounted read-only.  Changed struct ext2fs_sb to struct
385                 ext2_super_block, and cleaned up old code which was needed
386                 for old versions of ext2_fs.h (not needed since we're
387                 using our own version now).
388
389 2000-12-31    <tytso@snap.thunk.org>
390
391         * fsck.c (check_all): Call interpet_device to resolve LABEL= and
392                 UUID= right away so that the device_already_active() logic
393                 can do the right thing.  Also cleaned up the the root
394                 filesystem logic checking code; fixed up a logic bug with
395                 the parallel_root option.
396
397         * lsattr.1.in: Add pointer to chattr man page for definition of
398                 the file attributes.
399
400         * lsattr.c (list_attributes): Minor cleanup to smooth out logic
401                 flow.  Also removed static initialized variables to zero.
402
403         * chattr.c (decode_arg, get_flag): Use a table-driven method for
404                 decoding the ext2 file flags character options.  Add
405                 support for the journaled data flag.
406
407         * chattr.1.in: Document the -j/+j/=j flag.
408
409 2000-12-30    <tytso@snap.thunk.org>
410
411         * mke2fs.8.in: Minor clarity edit.
412
413         * mke2fs.c (usage): Document the -j option.
414                 (main): Print the number blocks used in the journal.
415
416 2000-12-28    <tytso@snap.thunk.org>
417
418         * base_device.c (base_device): Add support for DAC960 device
419                 names.
420
421         * fsck.c (device_already_active): Handle the case where
422                 base_device doesn't know how to interpret the device name,
423                 instead of core dumping.
424
425 2000-12-09    <tytso@snap.thunk.org>
426
427         * mke2fs.c (main, parse_journal_opts): Add support for creating V1
428                 superblocks.  We now pass in a journal_flags field to the
429                 journal creation routines for this purpose.
430
431         * mke2fs.c: Remove zero initializers to save a few bytes from the
432                 executable image.  (Are we excited yet?)
433
434         * findsuper.c: And non-subtle copyright licensing restriction to
435                 get Yann to remove this program from the Debian package.  :-) 
436
437 2000-12-03    <tytso@snap.thunk.org>
438
439         * fsck.c (device_already_active): Change to use new version of
440                 base_device() which now returns dynamically allocated
441                 memory.
442
443         * base_device.c (base_device): New version moved from fsck.c which
444                 now understands ugly devfs names.  (Debian bug #65181)
445
446         * base_device.tst: Test case for base_device.c
447
448 2000-12-02    <tytso@snap.thunk.org>
449
450         * fsck.8.in: Add clarification that filesystems with a fs_passno
451                 of 0 are skipped with the -A option.  (Debian wishlist/bug
452                 #63442)
453         
454         * fsck.c (wait_one): When we let a new fsck take control of the
455                 console to display the progress bar, set FLAG_PROGRESS to
456                 so that fsck knows not to start new processes during an
457                 fsck pass with the progress bar. (Should fix debian bug
458                 #65267)
459
460         * tune2fs.8.in: Add clarifying statement about converting user and
461                 group names to uid's before storing them in the
462                 superblock.  (Debian bug #67446)
463
464 2000-11-16  Theodore Ts'o  <tytso@valinux.com>
465
466         * mke2fs.c(main): Expand the -j option so that it parses
467                 option=argument style options, and add support for
468                 creating filesystems with external journals.
469
470         * mke2fs.8.in: Document new syntax for the -j option.
471
472 2000-11-05    <tytso@snap.thunk.org>
473
474         * e2image.c, Makefile.in: New program which saves ext2 metadata to
475                 a file for people who need a last-ditch saving throw.
476
477 2000-10-24    <tytso@snap.thunk.org>
478
479         * mke2fs.c (PRS): Applied Andreas Dilger's patch to make the -r -s
480                 handling a bit more sane.  (Even though -s is deprecated
481                 at this point.)
482
483         * get_device_by_label.c: Apply fix from Erik Troan to support 16
484                 character labels.
485
486         * fsck.c (device_already_active): Add a special case check for MD
487                 devices, so we don't try to check them in parallel with
488                 other devices.
489
490         * mke2fs.c (PRS, main), mke2fs.8.in: Add support for the -j
491                 option, which builds an ext2/3 filesystem with an ext3
492                 journal.
493
494 2000-10-24    <tytso@valinux.com>
495
496         * mke2fs.c (zap_sector): Fix really stupid typo which gcc 2.95
497                 didn't catch.
498
499 2000-09-12    <tytso@valinux.com>
500
501         * fsck.c: Add base device definitions for hd[e-h], for those
502                 systems with four IDE interfaces.
503
504 2000-09-11    <tytso@valinux.com>
505
506         * mke2fs.c (zap_sector): Fix error message printed when zap_sector
507                 fails. 
508
509         * dumpe2fs.c (list_desc): Fixed format string bug when printing
510                 the inode table location in non-hex format.
511
512 2000-08-20    <tytso@valinux.com>
513
514         * get_device_by_label.c: Add call to ext2fs_find_block_device if
515                 we can't find the device using the name given by
516                 /proc/partitions.  (This can happen if devfs is compiled
517                 into the kernel, but not mounted.)
518
519 2000-06-27  Andreas Dilger <adilger@turbolabs.com>
520
521         * dumpe2fs.c (usage): add fhx options to usage message, add -x option
522                 to print out the per-group block numbers in hex, add line for
523                 location of primary/backup superblock and group descriptors
524
525         * mke2fs.c: rename max to group_blk_max avoid potential macro conflict
526
527 2000-08-14    <tytso@valinux.com>
528
529         * mke2fs.c (zap_sector): Change zap_bootsect to more general
530                 zap_sect.
531                 (main): Clear the superblock when starting mke2fs, to
532                 avoid leaving the filesystem in an inconsistent state.
533
534 2000-07-26    <tytso@valinux.com>
535
536         * get_device_by_label.c: Improve /proc/partitions parsing in
537                 fsck, and speed up fsck -a.
538
539 2000-07-13    <tytso@valinux.com>
540
541         * Release of E2fsprogs 1.19
542
543 2000-07-13    <tytso@snap.thunk.org>
544
545         * badblocks.8.in: Added text explaining that the -n and -w options
546                 are mutually exclusive.
547
548         * badblocks.c (usage): Fix usage message to make it clear that the
549                 block count must be specified if the starting block is to
550                 be specified.  (The starting block should be a option, in
551                 the long run.)
552
553         * badblocks.c (test_nd): Save and restore the currently_testing
554                 variable before going into the write verification loop.
555                 This avoids a loop termination problem if the last block
556                 on the disk is bad.  Also, turn off the SIGALRM signal
557                 while restoring blocks after the user types ^C.  The
558                 num_saved variable is now static so that it won't get
559                 clobbered by a longjmp.  buf_used and bb_count are no
560                 longer static, since they aren't used by the cleanup
561                 routines anymore.
562
563         * badblocks.c (main): Removed an unsued varaible (buf_size).
564                 Fixed bad getopt argument that didn't allow the 'b' option
565                 to take an argument.  Added error checking when parsing
566                 the starting block number.  Fixed lint warning in fscanf
567                 format string.
568
569 2000-07-06  Theodore Ts'o  <tytso@valinux.com>
570
571         * fsck.c (execute, wait_one): Treat fsck.ext3 the same as
572                 fsck.ext2 (because they are the same) for the purposes of
573                 the progress bar display logic.
574
575         * tune2fs.8.in: Update manual page to document what happens if
576                 max_mount_count is negative.
577
578         * tune2fs.c (main): Allow setting the maximal count value to be
579                 negative, since the kernel interprets that as forcing a
580                 check. 
581
582         * fsck.c (lookup, load_fs_info, check_all): Use lazy evaluation
583                 for calling interpret_device(), since this requires root
584                 privileges if the partitions need to be scanned.
585                 Otherwise, it's not possible to do non-proot fsck's for
586                 removeable devices such as floppies if there are any
587                 LABEL= or UUID= entries in /etc/fstab.
588
589         * badblocks.c (check_mount, main): Check to see if the filesystem
590                 is mounted before doing a read/write or non-destructive
591                 test.  This can be overriden using the new -f option.
592
593         * badblocks.8.in: Update manual page to reflect that the
594                 blocks-count parameter is now optional.  Also properly
595                 document the start-block parameter.  Added documentation
596                 for the -f option.
597
598         * badblocks.c (main): Allow the blocks-count parameter to be
599                 optional.   If it's not specified, use the size of the
600                 device as a default.
601
602 2000-07-05  Theodore Ts'o  <tytso@valinux.com>
603
604         * badblocks.c (test_nd): Significantly simplify the logic so that
605                 it's more obviously what's going on.  Fixed a few
606                 potential cases which weren't handled correctly in the
607                 old, overly complicated logic.
608                 (flush_bufs): Now doesn't take a second argument, and
609                 always forces a sync; this is required before it's really
610                 safe to call BLKFLSBUF, at least for some kernels.
611
612 2000-05-29  Theodore Ts'o  <tytso@valinux.com>
613
614         * mke2fs.c (PRS): Add a much more specific error message if the
615                 filesystem size is defaulted and get_device_size returns a
616                 size of zero.  Otherwise, users get a confusing "invalid
617                 argument while passed to ext2 library" error message.
618
619 2000-05-08  Theodore Ts'o  <tytso@valinux.com>
620
621         * fsck.c (interpret_device): Add better error messages if a UUID=
622                 or LABEL= specification is given.
623
624         * mke2fs.c (main): We forcibly turn off the filetype feature if
625                 the OS is the hurd, since the hurd doesn't support it.
626                 (And since the hurd allows the transmogrification of files
627                 to special files and vice versa --- for no good reason
628                 that I can understand --- it can't support the filetype
629                 feature for the forseeable future, either.)
630
631         * mke2fs.c (proceed_question): Fix reversed sense of
632                 proceed_question that was busted due to the
633                 internationalization patch.  Fixed bug where if
634                 proceed_question was called twice, the input buffer wasn't
635                 cleared of the previous question's newline.
636         
637 Thu Apr  6 17:50:25 2000  Theodore Y. Ts'o  <tytso@signal.thunk.org>
638
639         * badblocks.c (flush_bufs): Use fsync() if the system doesn't
640                 support fdatasync().
641
642 2000-04-03  Theodore Ts'o  <tytso@valinux.com>
643
644         * badblocks.c, dumpe2fs.c, e2label.c, mke2fs.c, tune2fs.c,
645                 uuidgen.c: For platforms that don't define optarg.h,
646                 manually define optarg and optind.
647
648         * badblocks.8.in: Updated manual page with suggestions from David
649                 Beattie.
650
651         * badblocks.c (test_nd): Generalized cleanup and bug-fixes.   We
652                 now explicitly clear out the signal handlers to prevent a
653                 longjmp to a deactivated stack frame.  
654                 (test_rw): Fixed a signed vs. unsigned comparison error.
655
656         * badblocks.8.in, chattr.1.in, dumpe2fs.8.in, lsattr.1.in,
657                 mklost+found.8.in, tune2fs.8.in: Update Remy Card's e-mail
658                 address.  
659                 chattr.1.in: Update which attributes aren't supported.
660
661 2000-02-09  Theodore Ts'o  <tytso@valinux.com>
662
663         * chattr.1.in: 
664         * lsattr.1.in: Change "version" to "version/generation number".
665
666         * chattr.1.in: Fix stupid file vs filesystem typo.
667
668         * tune2fs.c Fix spelling error (spare vs sparse).
669
670         * mke2fs.c (PRS): Add safety check to make sure the number of
671                 blocks doesn't exceed 32 bits on a 64 bit machine.
672
673         * chattr.c: Random cleanup; file-only variables are now static.
674                 Options for setting/clearings flags put into order, and
675                 #ifdef's removed (since we now use a built-in header
676                 file).  Add error message if user tries to set and reset
677                 the same flag.
678
679         * lsattr.c: Random cleanup; file-only variables are now static.
680                 The -l "long" listing has been changed to look nicer.
681                 Options names have been renamed to be more descriptive.
682         
683 2000-02-06  Theodore Ts'o  <tytso@valinux.com>
684
685         * badblocks.c, chattr.c, dumpe2fs.c, e2label.c, findsuper.c,
686                 fsck.c, get_device_by_label.c, lsattr.c, mke2fs.c, 
687                 mklost+found.c, nls-enable.h, partinfo.c, tune2fs.c,
688                 uuidgen.c: Add Internationalization support as 
689                 suggested by Marco d'Itri <md@linux.it>.
690
691         * badblocks.c: Fix non-destructive read/write patches from David
692                 Beattie.  Non-standard variable-length automatic arrays
693                 removed.  Non-destrutive write test fixed so that logic is
694                 clearer and more provably correct.  (I believe the old
695                 code had a bug where the disk data wasn't restored if it
696                 was interrupted at the wrong time.)
697
698         * badblocks.8.in: Document new options in man page.
699
700 2000-02-02  Theodore Ts'o  <tytso@valinux.com>
701
702         * fsck.c (interpret_device): If there was an attempt to interpret
703                 a device specification of the type "UUID=" or "LABEL=",
704                 and it fails, check to see if /proc/partitions is
705                 readable.  If not, print a warning message about /proc
706                 perhaps not being mounted, and exit.
707
708         * mke2fs.c (check_plausibility): Remove unneeded #include of
709                 linux/fs.h.  Add #define of MAJOR if necessary.
710
711         * partinfo.c: Remove unneeded #include of linux/fs.h
712
713 2000-01-19  Theodore Ts'o  <tytso@valinux.com>
714
715         * tune2fs.c (usage): Update the usage message to correctly
716                 document the -s option.
717
718 2000-01-18  Theodore Ts'o  <tytso@valinux.com>
719
720         * badblocks.c: Folded in patches David Beattie <dbeattie@usa.net>.
721                 Need to do cleanup before release: use of GCC extensions
722                 (dynamic arrays); unclean coding tricks (use of || instead
723                 of if statements, etc.).  Comments from David Beattie:
724
725                 "I added non-destructive write-testing, and quite a few
726                 other features.  The non-destructive write testing,
727                 triggered by new "-n" command-line option, will write test
728                 patterns to the disk, but only after reading data off the
729                 disk into memory.  Then, comparing the test patterns gives
730                 a result as to whether or not those sectors are reliable.
731                 Finally, the original data is written back.
732
733                 To streamline this operation, I added another option, "-c
734                 blocks_at_once", which will give the number of disk blocks
735                 to process at one time (mnemonic--"count").  I made this
736                 default to 16 (as in the read-only testing mode), and also
737                 affect the read-only testing mode.  Of course, read-only
738                 mode needs (count * block_size) amount of memory, and
739                 non-destructive read-write needs 3 times that much, so it
740                 makes sense to do the calculations and not overrun
741                 available RAM...I would have liked to implement and
742                 auto-memory-usage heuristic, but I have no idea if it's
743                 even possible to determine the amount of free memory on a
744                 Unix system except by reading /proc entries, and that
745                 didn't seem portable.  I did NOT make this blocks_at_once
746                 affect the behavior of the test_rw routine, as it is
747                 processing the whole disk at once, anyway.
748
749                 I *think* that I got higher detection rates on my hard
750                 drive using random test data than patterned test data, so
751                 my non-destructive mode initializes its test data buffer
752                 randomly.
753
754                 I fixed a typo in flush_bufs that caused the ioctl
755                 BLKFLSBUF to never get compiled into the program.
756
757                 Also, I added an "undocumented" (I didn't put it into the
758                 usage message; you can if you think it's useful) "-h"
759                 option to specify the host device to flush--useful if you
760                 want to test out my "non-destructive" code on something
761                 other than a hard drive, such as a file on a hard drive,
762                 and want the host hard drive to flush.
763
764                 I provided support for an "input" file (via option "-i",
765                 similar to the "-o" option)...containing a list of
766                 already-known bad blocks; it will skip testing those
767                 blocks, thus adding speed to the bad block scan (on my
768                 computer, hitting a physically bad block causes a
769                 half-second-or-more freeze as the kernel waits for the
770                 hard drive to give up and reset itself; pretty annoying
771                 when you already know the block is bad from a previous
772                 scan).
773         
774                 Finally, the real killer, the persistent re-scan (option:
775                 "-p num_passes") that I created will, if desired,
776                 persistently re-scan the drive until it has completed a
777                 user-decidable number of passes in a row during which no 
778                 new bad blocks are found.  On my drive, I would see
779                 behavior that a certain percentage of bad blocks would be
780                 found with each pass (it was not reliable in the defective
781                 areas!), so I wanted it to check it over and over again
782                 until it didn't find any more, several times.  Perhaps
783                 this will be useful to others.  Defaults of course to
784                 zero, meaning it will stop after the first pass.  I used
785                 "-p 2" on my drive, and it ran for 2 1/2 days...then used
786                 "-p 3" a couple days later and it ran for a few more
787                 hours, and since then the rest of my drive has been
788                 completely reliable.
789
790                 Implementation of these last two features, "-i" and "-p",
791                 I did using a bb_list from libext2fs.  I debated whether
792                 bad blocks input through "-i" should be output into the
793                 "-o" file (or stdout, of course), and decided against it,
794                 but left the code to do so in place, commented out, just
795                 for your information.
796
797                 In order to maintain data integrity upon interruption of a
798                 non-destructive-write test, I created a signal handler
799                 which I install which will write back whatever original
800                 disk data is in the buffers upon any of the fatal signals
801                 (except SIGKILL, of course).
802
803                 Of course, ideally, the new options would be reflected in
804                 the badblocks manual page, but I am not experienced at
805                 manual page modification; if you decide my patch to
806                 badblocks should be incorporated into the distribution, I
807                 could learn how to update the manpage and other
808                 documentation, or you could do it for me after exercising
809                 your opinions, if you have any, on exactly what the
810                 command-line parameters should be called and which ones
811                 should be in the distribution."
812
813 2000-01-07  Theodore Ts'o  <tytso@valinux.com>
814
815         * Really fix the bug where "fsck -As" will actually allow
816                 interactive fsck's.  (For those people who like to do
817                 interactive fsck's in the /etc/rc scripts!?!)
818
819 1999-11-23    <tytso@valinux.com>
820
821         * tune2fs.8.in: Fix man page so that the sparse_super filesystem
822                 option is properly named.
823
824 1999-11-22    <tytso@valinux.com>
825
826         * mke2fs.c: Change log2() and log10() to int_log2() and
827                 int_log10() to avoid namespace collisions.  Change #ifdef
828                 sparc to #ifdef __sparc__.
829
830 1999-11-19    <tytso@valinux.com>
831
832         * Makefile.in (distclean): Remove TAGS and Makefile.in.old from
833                 the source directory.
834
835 1999-11-10    <tytso@valinux.com>
836
837         * Release of E2fsprogs 1.18
838
839 1999-11-10    <tytso@valinux.com>
840
841         * mke2fs.8.in: Update manual page so that the sparse_option
842                 filesystem option is properly named.
843
844 1999-11-04    <tytso@valinux.com>
845
846         * fsck.c (main): Move setting of the interactive flag to before
847                 the call to check_all(), so that people who try to use
848                 fsck -As can do so interactively.
849
850 1999-10-26    <tytso@valinux.com>
851
852         * Release of E2fsprogs 1.17
853
854 1999-10-26    <tytso@valinux.com>
855
856         * fsck.c (PRS, device_already_active): Add debugging hook; if the
857                 environment variable FSCK_FORCE_ALL_PARALLEL is set, then
858                 force all fsck runs to happen in parallel.
859
860         * get_device_by_label.c (has_right_label): Fixed bug where code
861                 used a strncmp to compare a binary UUID value which may
862                 contain a NULL.  Fixed GCC warnings; added const to char *
863                 typed variables.  Eliminated non-portable use of u_char.
864
865         * mke2fs.c (PRS): Fix gcc warnings; add const to some char *
866                 variables, including in struct mke2fs_defaults.  
867                 (set_fs_defaults): Changed parameter name to avoid
868                 gcc warnings.
869
870         * fsck.c (wait_one): Fix gcc warnings; add #include for ctype.h,
871                 add const to char * variables, and use NOARGS to declare
872                 functions that take no arguments.  Also fix a memory leak
873                 in execute() where we weren't freeing argv[] after forking
874                 the child process.
875
876         * chattr.c: Add hack to compile in a definition for S_ISLNK so we
877                 can successfully compile even with warnings turned on.
878
879 1999-10-25    <tytso@valinux.com>
880
881         * mke2fs.c (show_stats): Capitalized Hurd to make the GNU types
882                 happy. 
883                 (PRS): Use __u64 instead of long long for portability
884                 reasons.   Also moved #include of sys/stat.h inside #ifdef
885                 HAVE_LINUX_MAJOR_H for portability reasons.
886
887         * fsck.c (execute): Fix really stupid bug in the linked list
888                 management which caused fsck in parallel mode to go into
889                 an infinite loop.
890
891 1999-10-22    <tytso@valinux.com>
892
893         * Release of E2fsprogs 1.16
894
895 1999-10-22    <tytso@valinux.com>
896
897         * tune2fs.c (main): Add a new option -O which allows the user to
898                 set and clear certain "safe" filsystem feature flags.
899                 Currently, the only ones which are supported for
900                 modification are sparse_superblock and filetype.
901
902         * mke2fs.c (PRS): Add new option -O which allows the user to
903                 request filesystems with specific filesystem options.  By
904                 default on 2.2 and later systems, create filesystems that
905                 have both file type information and sparse superblocks.
906
907 1999-10-21    <tytso@valinux.com>
908
909         * badblocks.8.in, chattr.1.in, dumpe2fs.8.in, e2label.8.in,
910           fsck.8.in, lsattr.1.in, mke2fs.8.in, mklost+found.8.in,
911           tune2fs.8.in, uuidgen.1.in: Update man page to use a more standard
912                 format (bold option flags and italicized variables), as
913                 suggested by Andreas Dilger (adilger@enel.ucalgary.ca)
914
915 1999-10-14    <tytso@valinux.com>
916
917         * tune2fs.c (main): Fix typo (double spaces) in messages regarding
918                 changing the sparse superblock option
919
920         * fsck.c (wait_one): If the fsck process just started, wait a
921                 second before sending a SIGUSR1, to give it a chance
922                 to set the signal handler; otherwise, fsck will die on an
923                 unhandled SIGUSR1.
924
925 1999-09-15    <tytso@valinux.com>
926
927         * mke2fs.c (show_stats): Fix display bug when printing out the
928                 number of superblocks.  Suggested by Yann Dirson.
929
930 1999-09-08    <tytso@valinux.com>
931
932         * partinfo.c: Fix minor compilation bugs pointed out by Yann
933                 Dirson.
934
935         * mke2fs.c: Don't turn on sparse superblocks by default on pre-2.2
936                 kernels. 
937
938         * mke2fs.8.in: Add the possible valid block sizes for mke2fs.
939                 Document the -n flag, and the new defaults for the -s
940                 flag.
941
942         * dumpe2fs.c, dumpe2fs.8.in: Add new options -f (force) and -h
943                 (header-only).
944
945 1999-08-13    <tytso@valinux.com>
946
947         * mke2fs.c (PRS): Fix logic for turning on/off the sparse
948                 superblock option.
949
950 1999-07-18  Theodore Ts'o  <tytso@valinux.com>
951
952         * Release of E2fsprogs 1.15
953
954 1999-07-18    <tytso@rsts-11.mit.edu>
955
956         * mke2fs.c (PRS, set_fs_defaults): Add new option -T which allows
957                 the user to specify the how the filesystem is to be used.
958                 Mke2fs now chooses the filesystem parameters automatically
959                 based on the size of the filesystem and the intended use
960                 of the filesystem.  Add new option -n which simply goes
961                 through the calculations to determine the parameters of
962                 the filesystem the system would make.
963
964 1999-07-18    <tytso@valinux.com>
965
966         * fsck.c, fsck.h: Add support for new option -C.  This option will
967                 automatically manage e2fsck processes so that they will
968                 print completion/progress bars.  If multiple filesystems
969                 are being checked, arrange to make sure that only one
970                 e2fsck process is displaying a progress bar at a time.
971
972 1999-07-08    <tytso@valinux.com>
973
974         * badblocks.c (do_test): Don't complain if the write error occurs
975                 on a non-block boundary.  This is perfectly common when
976                 using blocksizes larger than 1k.
977
978 1999-07-03    <tytso@valinux.com>
979
980         * uuidgen.c: Add option parsing so that user can ask for either a
981                 time-based UUID or a random-based UUID.
982
983 1999-07-02    <tytso@valinux.com>
984
985         * fsck.c: Added support for LABEL= and UUID= specifications for
986                 the filesystem's device, to match what recent mount
987                 programs can support.  Also, close stdin when doing fsck
988                 -A or when checking more than one filesystem at a time, so
989                 that e2fsck doesn't try to ask interactive questions if
990                 the filesystem appears to be mounted.
991
992         * get_device_by_label.c: New file added to support LABEL=foo and
993                 UUID=bar type specifications.
994
995 1999-07-01    <tytso@valinux.com>
996
997         * badblocks.c:  Make the "done" string include enough spaces to
998                 clear out a large block number.
999
1000 1999-06-29    <tytso@valinux.com>
1001
1002         * mke2fs.c (check_mount): Allow a filesystem to be made even if it
1003                 appears mounted if the force option is given.
1004
1005 1999-06-24    <tytso@valinux.com>
1006
1007         * mke2fs.8.in: Fix typo in man page which caused the badblocks
1008                 command to not show up in the "SEE ALSO" section.
1009
1010 1999-05-02    <tytso@rsts-11.mit.edu>
1011
1012         * findsuper.c: Added documentation from aeb@cwi.nl; some minor
1013                 code cleanups.
1014
1015 1999-05-20    <tytso@rsts-11.mit.edu>
1016
1017         * dumpe2fs.c, dumpe2fs.8.in: Added new command-line options which
1018                 allow a filesystem expert to specify the superblock and
1019                 blocksize when opening a filesystem.  This is mainly
1020                 useful when examining the remains of a toasted filesystem.
1021
1022 1999-03-11  Andreas Dilger <adilger@enel.ucalgary.ca>
1023
1024         * uuidgen.c, uuidgen.1.in: Created command-line utility to
1025                 generate UUIDs.
1026
1027 1999-03-14  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1028
1029         * fsck.c (fsck_device, execute): Don't dereference a null pointer
1030                 when checking a filesystem not in /etc/fstab.
1031
1032 1999-02-09  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1033
1034         * fsck.c (fsck_device): Print an error message if the user passes
1035                 in a device or directory name which isn't found in /etc/fstab.
1036                 Allow the location of /etc/fstab to be overridden by
1037                 the FSTAB_FILE environment variable.
1038
1039 1999-01-30  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1040
1041         * mke2fs.c (write_inode_tables): Add kludge code so that when the
1042                 MKE2FS_SYNC environment variable is set, mke2fs will sync
1043                 every MKE2FS_SYNC block groups, while it is writing out
1044                 the inode tables.  This is to work around a VM bug in the
1045                 2.0 kernel.  I've heard a report that a RAID user was able
1046                 to trigger it even using a 2.2 kernel.
1047
1048 1999-01-16  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1049
1050         * fsck.c (execute, wait_one): Modified routines so that they
1051                 accurately create an fsck_instance even when the noexecute
1052                 flag is set.  This allows for accurate debugging of the
1053                 fsck pass structure.
1054                 (check_all): When the verbose flag is given twice, print
1055                 debugging information about when fsck is waiting for jobs
1056                 to finish.
1057
1058 1999-01-09  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1059
1060         * Release of E2fsprogs 1.14
1061
1062 1999-01-09  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1063
1064         * fsck.8.in: Clarified and expanded the documentation for the -A
1065                 switch.
1066
1067 1999-01-07  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1068
1069         * fsck.c (load_fs_info): If the pass number field is missing, it
1070                 needs to be treated as zero.
1071
1072 1999-01-05  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1073
1074         * mke2fs.c (PRS): Add -N option to allow the user to specify
1075                 exactly how many inodes he/she wishes.
1076
1077         * chattr.c, lsattr.c: Only print the version information for the
1078                 program if the -V option is given.
1079
1080         * chattr.c: Ignore symbolic links when doing a recursive descent
1081                 through a directory.
1082
1083 1999-01-01  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1084
1085         * fsck.c (load_fs_info, parse_fstab_line): Ignore fstab lines
1086                 are commented out.  Also allow blank lines in the
1087                 /etc/fstab file.
1088                 (execute): In verbose mode, print the mountpount of the
1089                 filesystem which we are checking (user request).
1090
1091 1998-12-30  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1092
1093         * mke2fs.c: Add definition of SCSI_BLK_MAJOR if not defined, for
1094                 compatibility with Linux 1.2.13 header files.
1095
1096 1998-12-15  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1097
1098         * Release of E2fsprogs 1.13
1099
1100 1998-12-07  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1101
1102         * mke2fs.8.in: Fixed stupid typo ("Raid options are _comma_
1103                 seperated", instead of common separated)
1104
1105 1998-12-03  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1106
1107         * Makefile.in: Updated dependencies.
1108
1109 1998-11-27  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1110
1111         * fsck.c (load_fs_info): Parse /etc/fstab ourselves, instead of
1112                 relying on getmntent().  This has the advantage of
1113                 allowing us to properly handle missing pass numbers correctly.
1114
1115 1998-11-13  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1116
1117         * tune2fs.8.in: Fix minor display bug in the nroff.
1118
1119         * mke2fs.c (show_stats, write_inode_tables): Use the log10
1120                 function to calculate the display of block numbers so that
1121                 things look nice on an 80 character display.
1122
1123 1998-10-12  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1124
1125         * mke2fs.c (usage): Add the sparse-super-flag to the usage
1126                 message. 
1127
1128 1998-07-09  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1129
1130         * Release of E2fsprogs 1.12
1131
1132 1998-07-04  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1133
1134         * findsuper.c (main): Print the block group number which is now
1135                 being written by e2fsprogs.
1136
1137 1998-06-25  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1138
1139         * fsck.c (ignore): Remove unused variable cp.
1140
1141         * chattr.c (fatal_error): 
1142         * tune2fs.c (usage): 
1143         * lsattr.c (usage): 
1144         * dumpe2fs.c (usage): 
1145         * badblocks.c (usage): Remove volatile from declaration.
1146
1147         * fsck.c: Change use of strdup to be string_copy, since we don't
1148                 trust what glibc is doing with strdup.  (Whatever it is,
1149                 it isn't pretty.)
1150
1151 1998-06-19  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1152
1153         * mke2fs.c (PRS): Add a -V option which prints the version number
1154                 and exit.
1155
1156 1998-05-14  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1157
1158         * fsck.c (ignore): Remove check for filesystems with the noauto 
1159                 option.
1160
1161 1998-03-30  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1162
1163         * Makefile.in: Change to use new installation directory variables
1164                 convention.  Fix uninstall rules to take $(DESTDIR) into
1165                 account.  Remove cat8dir and cat1dir from the installdirs
1166                 target, since modern man package don't necessarily put the
1167                 cat directory in /usr/man/cat?.
1168
1169 1998-03-29  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1170
1171         * e2label.8.in: New man page to document the e2label function.
1172
1173         * e2label.c: Fix -Wall warning by making functions static.
1174
1175 1998-03-28  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1176
1177         * chattr.1.in: Document that the append-only attribute may
1178                 only be set or cleared by the superuser.
1179
1180         * Update all manual pages to that the availability section is
1181                 up-to-date. 
1182
1183         * e2label.8.in, tune2fs.8.in: Update manual page to state that
1184                 labels must be no longer than 16 characters, or they will
1185                 be truncated.
1186
1187         * e2label.c (change_label), tune2fs.c (main): If the label is
1188                 longer than 16 characters, print a warning message stating
1189                 that the label will be truncated.
1190
1191         * mke2fs.c (PRS): If the user specifies a filesystem size, and
1192                 it's larger than the apparent size of the device, print a
1193                 warning message and ask if the user wants to proceed.
1194
1195 1998-03-21  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1196
1197         * mke2fs.c (check_plausibility): Fixed spelling typo in warning
1198                 message.  Fixed up -Wall warnings in file.
1199
1200 Sun Mar  8 22:21:48 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1201
1202         * partinfo.c (main): The ioctl BLKGETSIZE requires a long, not an
1203                 int. 
1204
1205 Sun Feb  1 16:53:36 1998  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1206
1207         * badblocks.8: Update documentation to note that output format
1208                 of badblocks is suitable for use with e2fsck -l or
1209                 mke2fs -l.
1210
1211         * mke2fs.c (handle_bad_blocks): Fix bug so that all groups with
1212                 bad superblock backup blocks are printed (not just the
1213                 first one).
1214
1215 Mon Dec  1 17:01:04 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1216
1217         * badblocks.8.in: Add documentation for the -s option.
1218
1219 Fri Oct 24 23:37:52 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1220
1221         * fsck.c: 
1222         * chattr.c: Remove #include of getopt.h, since it's not needed.
1223
1224         * tune2fs.c (main): 
1225         * lsattr.c (main): 
1226         * badblocks.c (main): 
1227         * dumpe2fs.c (main): 
1228         * mke2fs.c (PRS): Make the variable which getopt returns into be
1229                 an int, so that it won't lose on platforms where char is
1230                 unsigned. 
1231
1232 Fri Oct  3 13:38:45 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1233
1234         * mke2fs.c (parse_raid_opts): Make parse_raid_opts return a void,
1235                 to fix a -Wall warning.
1236
1237 Mon Sep 15 22:07:12 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1238
1239         * tune2fs.c (main): 
1240         * mklost+found.c (main): 
1241         * lsattr.c (main): 
1242         * dumpe2fs.c (main): 
1243         * chattr.c (main): 
1244         * badblocks.c (main): Declare main to return an int, as required.
1245                 Make sure main always ends with an exit(0).  (Some
1246                 programs weren't doing this, and thus were returning a
1247                 random exit value.)
1248
1249 Mon Jul 14 15:27:29 1997  Theodore Y. Ts'o  <tytso@mit.edu>
1250
1251         * e2label.c: New file contributed by Andries Brouwer which
1252                 provides an easy-to-use interface to modify the filesystem
1253                 label.
1254         
1255         * Makefile.in (SPROGS): Add Makefile support to build e2label
1256
1257 Tue Jun 17 01:33:20 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1258
1259         * Release of E2fsprogs 1.11
1260
1261 Mon Jun 16 23:37:54 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1262
1263         * mke2fs.c (show_stats): Adjust the number of columns printed when
1264                 displaying the superblock backups to avoid running over 
1265                 80 columns when making a really big disk.
1266
1267 Thu May  8 22:22:08 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1268
1269         * badblocks.8.in, chattr.1.in, dumpe2fs.8.in, fsck.8.in, 
1270                 mke2fs.8.in, tune2fs.8.in: Fix minor typos and grammer
1271                 oops found by Bill Hawes (whawes@star.net).
1272
1273         * mke2fs.c (test_disk): Pass the blocksize to the bad blocks
1274                 command so that all of the filesystem gets tested in the
1275                 case where the blocksize 2048 or 4096.
1276
1277 Thu Apr 24 12:16:42 1997  Theodre Ts'o  <tytso@localhost.mit.edu>
1278
1279         * Release of E2fsprogs version 1.10
1280
1281 Thu Apr 24 09:52:47 1997  Theodre Ts'o  <tytso@localhost.mit.edu>
1282
1283         * mke2fs.c: Added new option -R, which specifies RAID options.
1284                 Currently the only supported RAID option is "stride" which
1285                 specifies the stripe width in RAID filesystem.  This is
1286                 used to aid in the placement of the inode and block
1287                 bitmaps.
1288
1289         * mke2fs.8.in, tune2fs.8.in: Added warnings that the sparse
1290                 superblock option isn't yet supported by most kernels.
1291
1292 Wed Apr 23 22:42:51 1997  Theodre Ts'o  <tytso@localhost.mit.edu>
1293
1294         * mke2fs.c (PRS): Make the default filesystem revision be 0, not
1295                 1.  (Since some people are still worried about 1.2.13
1296                 compatibility).
1297
1298 Thu Apr 17 12:23:38 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1299
1300         * Release of E2fsprogs version 1.09
1301
1302 Fri Apr 11 18:57:24 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1303
1304         * chattr.1.in: Updated man page so that the 'A' attribute is
1305                 specified everywhere.
1306
1307         * chattr.c (usage): Added usage message for the 'A' attribute.
1308
1309 Fri Apr 11 18:56:26 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1310
1311         * Release of E2fsprogs version 1.08
1312
1313 Thu Apr 10 07:08:03 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1314
1315         * dumpe2fs.c (list_desc): List the offsets of the inode and block
1316                 bitmaps, and the inode table.  List the block boundaries
1317                 for the groups.
1318
1319 Sat Apr  5 11:55:52 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1320
1321         * tune2fs.c (main): Implement the -s flag allows the user to
1322                 set and reset the sparse superblock flag.
1323
1324         * mke2fs.c (PRS): By default generate DYNAMIC revision
1325                 filesystems.  The -s flag controls whether or not the
1326                 sparse superblock flag is set.
1327                 (PRS): Change to allow the user to specify the true
1328                 maximum number of blocks per group to reflect the
1329                 blocksize. 
1330
1331 Wed Mar 12 13:32:05 1997  Theodore Y. Ts'o  <tytso@mit.edu>
1332
1333         * Release of E2fsprogs version 1.07
1334
1335 Thu Mar  6 17:15:05 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1336
1337         * mke2fs.c (create_root_dir): Set the root directory's i_uid and
1338                 i_gid to be the real user and group id.
1339
1340 Tue Mar  4 10:14:33 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1341
1342         * mke2fs.c (check_plausibility): Add more intelligent error
1343                 messages when the device doesn't exist.
1344
1345 Sat Mar  1 10:43:32 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1346
1347         * fsck.c (main): Fix bug where the PATH environment variable isn't
1348                 set when it is unset.
1349
1350 Tue Jan 14 12:30:45 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1351
1352         * mke2fs.c (write_inode_tables): Fixed bug in write_inode_tables
1353                 where a loop variable was getting reused in a nested loop.
1354                 This caused the inode table to not be correctly
1355                 initialized.
1356
1357 Thu Jan  2 00:00:37 1997  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1358
1359         * lsattr.c, chattr.c: Include string.h, since we use memcpy().
1360
1361         * findsuper.c: Use time_t for ctime(), not __u32.
1362
1363 Sat Dec 28 23:39:18 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1364
1365         * badblocks.c: Adapted -vv modifications from Rik Faith so that
1366                 they frequently update the block number field.
1367
1368         * badblocks.8.in: Document the optional start-block parameter
1369
1370 Mon Oct 14 11:52:58 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1371
1372         * mke2fs.c: Updated to use new ext2fs_allocate_tables() function.
1373
1374 Tue Oct  8 02:02:03 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1375
1376         * Release of E2fsprogs version 1.06
1377
1378 Mon Oct  7 00:56:24 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1379
1380         * chattr.1.in: Documented the 'A' (noatime) attribute.
1381
1382         * dumpe2fs.c (main): Change EXT2_SWAP to EXT2_FLAG_SWAP for
1383                 consistency's sake.
1384
1385 Sun Sep 22 16:18:47 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1386
1387         * chattr.c (decode_arg): Add support for the 'A' (noatime) flag.
1388
1389 Thu Sep 12 15:23:07 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1390
1391         * Release of E2fsprogs version 1.05
1392
1393 Sat Sep  7 07:34:11 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1394
1395         * tune2fs.c (main): Add support for new option -C, which sets the 
1396                 current number of mounts.
1397                 (main): Allow the interval to be specified in seconds,
1398                 mostly for debugging.
1399
1400 Tue Aug 27 17:27:43 1996  Miles Bader  <miles@gnu.ai.mit.edu>
1401
1402         * Makefile.in (SMANPAGES): Use @FSCK_MAN@ instead of fsck.8.
1403         (SPROGS): Use @FSCK_PROG@ instead of fsck.
1404
1405 Thu Aug 22 00:51:44 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1406
1407         * mke2fs.c (zap_bootblock): Don't do zap_bootblock on a
1408                 sparc.
1409
1410 Tue Aug 20 00:15:46 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1411
1412         * chattr.c (main): Fixed bug so that chattr -v works.  (Bug report
1413                 and fix sent by Charles Howes, chowes@eznet.ca)
1414
1415 Fri Aug  9 11:52:42 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1416
1417         * tune2fs.8.in:
1418         * tune2fs.c: Added support for the -L option which sets the volume
1419                 label, the -M option which sets the last mounted
1420                 directory, and the -U option which sets the filesystem UUID.
1421
1422         * mke2fs.8.in:
1423         * mke2fs.c: Added support for the -o option, which overrides the
1424                 creator OS.  Generate a UUID for the filesystem, if
1425                 applicable.  Added support for the -L option which sets
1426                 the volume label, and the -M option which sets the last
1427                 mounted directory.
1428
1429 Sat Jun 22 17:43:17 1996  Remy Card  <card@bbj.linux.eu.org>
1430
1431         * chattr.c (decode_arg): Integrated Michael Nonweiler's fix to
1432                 avoid a segmentation fault when the "-v" option is used
1433                 and no version number is specified.
1434         
1435 Thu May 16 11:12:30 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1436
1437         * Release of E2fsprogs version 1.04
1438
1439 Wed May 15 21:15:43 1996  Theodore Ts'o  <tytso@rsts-11.mit.edu>
1440
1441         * Makefile.in (fsck): fsck doesn't need to be linked with the ext2
1442                 libraries.
1443
1444 Wed Mar 27 00:33:40 1996    <tytso@rsts-11.mit.edu>
1445
1446         * Release of E2fsprogs version 1.03
1447
1448 Thu Mar  7 03:43:20 1996    <tytso@rsts-11.mit.edu>
1449
1450         * mke2fs.c (PRS): Add (for development only) support to
1451                 specify revision and inode size of the new filesystem.
1452
1453 Tue Mar  5 03:51:35 1996    <tytso@rsts-11.mit.edu>
1454
1455         * mke2fs.8.in: Fix a few minor typo's in the man page.
1456
1457         * mke2fs.c (reserve_inodes): Add support for dynamic first inode
1458                 revision.
1459
1460 Mon Feb  5 22:19:49 1996    <tytso@rsts-11.mit.edu>
1461
1462         * fsck.c (check_all, PRS): Added new flag -P, which turns on the
1463                 parallel root option.  This allows you to check the root
1464                 filesystem in parallel with the other filesystems.  Note
1465                 that this is not the safest thing in the world to do,
1466                 since if the root filesystem is in doubt things like
1467                 the e2fsck executable might be corrupted!  But some
1468                 sysadmins, who don't want to repartition the root
1469                 filesystem to be small and compact, may really want this
1470                 option turned on.
1471
1472 Wed Jan 31 11:06:08 1996    <tytso@rsts-11.mit.edu>
1473
1474         * Release of E2fsprogs version 1.02
1475
1476 Tue Oct 30 21:14:12 1995    <tytso@rsts-11.mit.edu>
1477
1478         * mke2fs.c (check_plausibility): Add check to warn user if they
1479                 are trying to mke2fs the whole disk.  (/dev/hda
1480                 vs. /dev/hda1)
1481
1482 Fri Dec 15 19:09:56 1995    <tytso@rsts-11.mit.edu>
1483
1484         * fsck.c (check_all): If we break out of the loop because we are
1485                 serializing and have just started at fsck we haven't
1486                 finished the pass. We need to go round again in case there
1487                 are more filesystems to be done in this pass.  (Patch
1488                 submitted by Mike Jagdis)
1489
1490 Sat Dec  9 10:07:16 1995    <tytso@rsts-11.mit.edu>
1491
1492         * dumpe2fs.c (in_use): test_bit() was renamed to
1493                 ext2fs_test_bit().
1494
1495 Mon Oct 30 20:21:18 1995    <tytso@rsts-11.mit.edu>
1496
1497         * fsck.c (fsck_device): Check fstype instead of type; this was a
1498                 stupid typo which caused coredumps in some cases.
1499
1500 Thu Oct 26 12:05:18 1995    <tytso@rsts-11.mit.edu>
1501
1502         * Makefile.in (install): Strip programs when they are installed.
1503
1504 Fri Aug 18 15:10:40 1995  Theodore Y. Ts'o  <tytso@dcl>
1505
1506         * mke2fs.c (PRS): Move call of check_mount() from main() to PRS(),
1507                 so we do the check to see if the filesystem is mounted
1508                 *before* we try to determine the size of the device.
1509
1510 Wed Sep  6 23:34:07 1995  Remy Card  <card@bbj>
1511
1512         * fsck.c (load_fs_info): Load the informations from /etc/fstab in
1513                 the same order.
1514
1515 Thu Aug 17 22:33:09 1995    <tytso@rsts-11.mit.edu>
1516
1517         * mke2fs.c (check_mount): Use the new ext2fs_check_if_mounted()
1518                 function to determine if the device is mounted.
1519
1520         * mke2fs.c (PRS): Change call to use the new
1521                 ext2fs_get_device_size() function in order to determine
1522                 the size of the filesystem.  Remove get_size() and
1523                 is_valid_offset(), which are no longer called.
1524
1525 Fri Aug 11 08:26:24 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
1526
1527         * fsck.c (fsck_device): Make sure fstype has been set by the user
1528                 and that it does not begin with "no" and the user has
1529                 specified exactly one type before using it as the type to
1530                 check.
1531
1532 Fri Aug 11 14:17:18 1995  Remy Card  <card@bbj>
1533
1534         * badblocks.8:
1535         * chattr.1:
1536         * dumpe2fs.8:
1537         * fsck.8:
1538         * lsattr.1:
1539         * mke2fs.8:
1540         * mklost+found.8:
1541         * tune2fs.8: Updated date and version number.
1542
1543 Thu Aug 10 14:18:36 1995  Remy Card  <card@bbj>
1544
1545         * tune2fs.c: Fixed a bug which prevented the use of user and group
1546                 names with the -g and -u options.  Thanks to Jean Christophe
1547                 ANDRE <progfou@mycrob.cafard.freenix.fr>.
1548
1549         * mke2fs.8:
1550         * tune2fs.8: Fixed a spelling error in Ted's name :-)
1551
1552 Wed Aug  9 20:41:54 1995  Theodore Y. Ts'o  <tytso@dcl>
1553
1554         * mke2fs.c (count_blocks): Divide the size by
1555                 EXT2_BLOCK_SIZE(&param), instead of assuming that the
1556                 blocksize is always 1024 bytes.
1557
1558 Sat Aug  5 12:00:51 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
1559
1560         * mke2fs.c (PRS): Use malloc() instead of alloca() --- alloca() is
1561                 not portable!!  In any case putenv() in some systems must
1562                 take a static character array or malloc()'ed memory;
1563                 passing memory allocated using alloca() to putenv() is not
1564                 advisable.
1565
1566         * chattr.c (chattr_dir_proc): 
1567         * lsattr.c (lsattr_dir_proc): Use malloc() instead of alloca() ---
1568                 alloca is not portable!
1569
1570         * fsck.c (fsck_device): If the filesystem type is specified by the
1571                 user using the -t option, let it override the type in
1572                 /etc/fstab.
1573
1574         * fsck.c (strdup): Don't build strdup() if the system defines it.
1575
1576 Mon Jun 12 19:15:10 1995  Theodore Y. Ts'o  (tytso@dcl)
1577
1578         * chattr.c, lsattr.c: Include <sys/types.h> for <dirent.h>'s
1579                 benefit.
1580
1581         * The $(UPROGS) go in bin, not sbin.
1582
1583         * badblocks.c, chattr.c, dumpe2fs.c, fsck.c, lsattr.c, mke2fs.c,
1584                 tune2fs.c:  Don't include <getopt.h> if it doesn't exist.
1585
1586 Mon Jun 12 16:36:04 1995  Theodore Y. Ts'o  <tytso@dcl>
1587
1588         * badblocks.c, chattr.c, dumpe2fs.c, fsck.c, lsattr.c, mke2fs.c,
1589                 tune2fs.c: Only include getopt.h if HAVE_GETOPT_H is defined.
1590
1591 Sat Jun 10 23:37:09 1995  Theodore Y. Ts'o  <tytso@lurch.mit.edu>
1592
1593         * chattr.c: Include errno.h, since we use errno
1594
1595         * fsck.c (load_fs_info): If HAVE_MNTENT_H is not defined,
1596                 explicitly initialize filesys_info to be NULL.
1597
1598         * mke2fs.c: Include the stdio.h and errno.h header files
1599
1600 Thu Jun  8 13:25:23 1995  Miles Bader  <miles@churchy.gnu.ai.mit.edu>
1601
1602         * mke2fs.c: Only include <linux/fs.h> if we can.
1603         (get_size): Don't try to use the BLKGETSIZE ioctl unless it's defined.
1604         (check_mount): Only check to see if the device is mounted if
1605         HAVE_MNTENT_H is defined (by configure).
1606
1607         * fsck.c (load_fs_info): Only try to get info about filesystems if
1608         HAVE_MNTENT_H is defined (by configure).
1609         (main): Allocate space for a new fsck_path instead of append to a
1610         statically sized buffer.
1611         (PRS): Use alloca to allocate the new path string, instead of
1612         having a fixed size buffer (which was the wrong size anyway).
1613
1614         * chattr.c (chattr_dir_proc): Use alloca to allocate space for a
1615         filename instead of using a fixed-size buffer.
1616         * lsattr.c (lsattr_dir_proc): Ditto.
1617         * mklost+fond.c (main): Calculate the actual needed size for the
1618         path buffer instead of using MAXPATHLEN (which not all systems have).
1619
1620         * badblocks.c: Only include linux include files if we have them.
1621         (flush_bufs): New function to flush a block device, optionally
1622         syncing it first.  This replaces other copies of this code.
1623         (test_ro): Replace calls to ioctl with flush_bufs().
1624         (test_rw): Ditto.
1625
1626         * Makefile.in: Rewritten to conform to GNU coding standards and
1627         support separate compilation directories.
1628
1629 Sat Mar 11 10:59:58 1995  Theodore Y. Ts'o  <tytso@localhost>
1630
1631         * mke2fs.c (main, zap_bootblock): Added new function
1632                 zap_bootblock() which clears the first 512 bytes of the
1633                 filesystem.  This protects the filesystem from being
1634                 misidentified as a MS-DOS FAT filesystem.
1635
1636         * badblocks.c (alarm_intr, test_ro, test_rw): Increase the space
1637                 allocated for printing the block numbers, so that the
1638                 display doesn't get corrupted when running badblocks on a
1639                 very large partition.
1640
1641         * badblocks.c (do_test, test_ro, test_rw): Added missing cast to
1642                 ext2_loff_t, so that when checking a large device,
1643                 spurious seek errors aren't reported.
1644
1645         * mke2fs.c (count_blocks): Declare mid to be of type ext2_loff_t
1646                 instead of type int, so that it works for filesystems
1647                 greater than 2 GB.  (Fortunately count_blocks is only
1648                 called if the device does not support the BLKGETSIZE
1649                 ioctl, which most do.)
1650
1651         * fsck.c (ignore): Add check to ignore filesystems with a pass
1652                 number of zero.  (This check was accidentally deleted at
1653                 during 0.5b development.)
1654
1655 Sat Dec 31 00:47:16 1994    <tytso@rsx-11.mit.edu>
1656
1657         * mke2fs.c (new_table_block, alloc_tables, PRS, main): Add a new
1658                 option, -S, which only writes the superblock and group
1659                 descriptors.  Useful for recovering when all of the
1660                 superblocks are corrupted somehow (as a last ditch
1661                 measure).
1662
1663                 Also, don't bother initializing the bitmap blocks in
1664                 alloc_tables(), since they will be overwritten at the end
1665                 anyway.  (Should speed up mke2fs by a little.)
1666
1667 Tue Dec  6 02:20:55 1994    <tytso@rsx-11.mit.edu>
1668
1669         * fsck.c (main): Fix stupid typo where a null inst would be freed. 
1670
1671         * fsck.c (wait_one): Check WIFEXITED on status before trying to
1672                 extract the exit status.  In other cases, return
1673                 FSCK_ERROR if the back end processor exited with a signal.
1674
1675 Tue Nov 15 10:20:00 1994  Remy Card  <card@bbj>
1676
1677         * tune2fs.c (main): Fixed a bug which prevented the use of the
1678                 new options.
1679         Added the `w' (week) suffix recognition in the check interval.
1680
1681 Sun Nov 13 15:58:48 1994    (tytso@rsx-11)
1682
1683         * fsck.c (load_fs_info): If the user has an obviously old
1684                 /etc/fstab file, issue a warning message and assume that
1685                 all partitions should be checked.
1686
1687 Sat Nov 12 00:33:18 1994    (tytso@rsx-11)
1688
1689         * dumpe2fs.c (list_desc): Update to new inode and block bitmap
1690                 structures. 
1691
1692         * mke2fs.c (create_root_dir): Create the root directory owned by
1693                 the effective uid.
1694
1695 Mon Nov  7 22:04:37 1994  Remy Card  <card@bbj>
1696
1697         * tune2fs.c (main.c): Added support for new options:
1698         -r reserved_blocks_count, -g reserved_gid, -u reserved_uid.
1699
1700 Sun Aug 21 00:57:33 1994  Theodore Y. Ts'o  (tytso@rt-11)
1701
1702         * fsck.c (ignore): If the pass number is 0, ignore the filesystem.
1703
1704 Wed Aug 17 21:55:03 1994  Remy Card  (card@bbj)
1705
1706         * badblocks.c (test_rw): Added verbose output like in the
1707         read-only test.
1708
1709         (do_test and test_rw): Use the llseek system call if available.
1710
1711         * chattr.c: Added support for new attributes.
1712
1713         * lsattr.c: Added support for long format.
1714
1715         * mke2fs.c (usage): Fixed bogus usage message.
1716
1717         (valid_offset): Use the llseek system call if available.
1718
1719 Wed Aug 17 10:50:57 1994  Theodore Y. Ts'o  (tytso@rt-11)
1720
1721         * mke2fs.c (handle_bad_blocks): Check to see if a bad block is
1722         where a backup superblock/group descriptor is stored.  If so,
1723         print a warning message and adjust the superblock counts so that
1724         they are correct.  (Otherwise, the bad block will get counted
1725         twice and the # of free blocks count will be wrong.)
1726
1727         (alloc_tables): Removed code which calcualated the free block
1728         statistics, which was moved to lib/ext2fs/initialize.c.  This
1729         allows the bad block code to adjust the group descriptor
1730         statistics if necessary.