Release: captive1 -> captive2cvs
[ntfsprogs.git] / ChangeLog
1 xx/xx/2003 - 1.7.2-WIP - Work in progress.
2         - Further work on attribute resizing.
3         - Fix two logic inversion bugs in dir.c. Thanks to Russ Christensen for
4           finding the first one.
5         - Fix attempt to release I30 internal constant. (Russ Christensen)
6         - Fix off-by-one error in disk_io.c::ntfs_cluster_{read,write}(). (Ian
7           Jackson)
8         - Add -fms-extensions when compiling with gcc-3.2+.
9         - Update for newer autoconf/automake.
10         - Abstract low level device operations (include/device,h and
11           libntfs/device.c) and adapt utilities to changes.
12         - Fix bugs in dir.c::ntfs_readdir() where we try to close ia_na when
13           it is NULL.
14         - Return errno ENOTDIR from dir.c::ntfs_readdir() when called with a
15           file inode.
16
17 13/02/2003 - 1.7.1 - Urgent bug fixes.
18         - Urgent bug fixes in ntfsresize (Szabolcs Szakacsits):
19           - compare_bitmaps(): fix another bug reporting the correct cluster
20             mismatch
21           - walk_inodes(): fix leaking ntfs_inode in certain cases
22           - delete redundant and unused MFT_RECORD *mrec from ntfs_resize_t
23         - Urgent bug fixes in libntfs (thanks to Szaka for bug reports):
24           - attrib.c::ntfs_external_attr_find(): broken error detection
25           - mft.c::ntfs_mft_records_write(): stupid buffer overflow bug (ouch!)
26
27 12/02/2003 - 1.7.0 - Small bug fixes and updates.
28         - Bug fixes in mapping pairs array generation in libntfs.
29         - Bug fixes and updates in ntfsresize. (Szabolcs Szakacsits)
30         - Tidyups and standardisations. (Richard Russon)
31
32 18/01/2003 - 1.7.0beta - Library rewrite and many new tools.
33         - Highlights of this release are the now hopefully stable API sported
34           by an almost completely rewritten library and the new utilities;
35                 ntfsresize, ntfsundelete, and ntfslabel.
36           Note this is a beta release so it may not be free of bugs.
37         - New tool ntfslabel written by Matthew Fanto with a few cleanups from
38           me to make it fit in with e2label better.
39         - Add man page for ntfslabel.
40         - New tool, ntfsundelete, written by Richard Russon.
41         - New tool, ntfsresize, written by Szakacsits Szabolcs.
42         - Extend ntfs_mount() to also read in the volume label.
43         - Silence verbosity of output from ntfs_mount(). It is now only output
44           if ./configure was run with --enable-debug.
45         - Remove a LOT of dead code. Massive cleanup.
46         - Add full attribute search context and allocation/init/deallocation
47           functions (see attrib.c).
48         - Remove find_first_attr(). Just use ntfs_attr_get_search_ctx() +
49           ntfs_attr_find() which has the same effect.
50         - Rewrite disk_io.[ch] and mft.[ch] defining new access API:
51                 disk_io.[ch] provide:   ntfs_p{read,write}(),
52                                         ntfs_mst_p{read,write}(), and
53                                         ntfs_cluster_{read,write}().
54                 mft.[ch] provide:       ntfs_mft_record_{read,write}(),
55                                         ntfs_mft_records_{read,write}(), and
56                                         ntfs_mft_record_get_data_size().
57         - When writing mft records using the mft.c::ntfs_mft_record{s,}_write()
58           interface, the mft mirror is now updated automatically.
59         - Add -Wall to compiler options.
60         - Fix minor error code path bugs in mkntfs.c that showed up with -Wall.
61         - Fix all compiler warnings that showed up with -Wall.
62         - Add new API function, provided by mft.[ch]: ntfs_file_record_read().
63         - Add new API calls provided by unistr.[ch]:
64                 ntfs_ucstombs() and ntfs_mbstoucs().
65         - Define API for mst.[ch] providing:
66                 ntfs_mst_post_read_fixup(),
67                 ntfs_mst_pre_write_fixup(), and
68                 ntfs_mst_post_write_fixup().
69         - Define API for bootsect.[ch] providing:
70                 ntfs_boot_sector_is_ntfs().
71         - Add beginning of new API with new files inode.[ch] providing:
72                 ntfs_inode_{open,close)(), and
73                 ntfs_extent_inode_open().
74                 - Note the inode related API is subject to change.
75         - Start defining API provided by attrib.[ch]:
76                 ntfs_attr_search_ctx typedef,
77                 ntfs_attr_{get,put,reinit}_search_ctx(), and
78                 ntfs_attr_lookup().
79         - Add a TODO.libntfs laying down my personal roadmap for the library.
80         - Remove ntfs_attr_find() from API, everyone must use ntfs_attr_lookup()
81           instead.
82         - Rename all attribute name constants from $blah to AT_blah.
83         - Rename all system file constants from FILE_$blah to FILE_blah.
84         - Port ntfs_attr_lookup() stuff from ntfs tng driver.
85         - Implement loading of extent inodes. They are attached on open to the
86           base inode and are cached there until the base inode is closed.
87         - Cleanup/streamline include file dependencies.
88         - Port attribute list merging code from ntfs tng driver. API to follow.
89         - Allocate a ntfs_volume in mkntfs and start initializing it instead
90           of using the opt global structure. Necessary so can call the
91           modified ntfs_mapping_pairs_decompress() from mkntfs.c.
92         - Add libntfs/debug.c providing:
93                 ntfs_debug_runlist_dump().
94         - Add new API call ntfs_check_if_mounted() to volume.[ch]. (Matthew
95           Fanto, me)
96         - Do folding assisting cleanups. (Richard Russon, me)
97         - Add new API call ntfs_boot_sector_is_ntfs() provided by bootsect.[hc].
98         - Define and write more API calls provided by attrib.[ch]:
99                 ntfs_attr_map_runlist(),
100                 ntfs_attr_vcn_to_lcn(),
101                 ntfs_attr_find_vcn(),
102                 ntfs_attr_init(),
103                 ntfs_attr_{open,close}(),
104                 ntfs_attr_size_bounds_check(),
105                 ntfs_attr_can_be_non_resident().
106         - Add new field mftmirr_size to ntfs_volume structure and initialize
107           it to the number of mft records stored in the mft mirror in
108           ntfs_mount().
109         - Add new fields mftmirr_ni and mftmirr_na to ntfs_volume structure and
110           initialize them in ntfs_mount to the $MFTMirr inode and $DATA
111           attribute. Ditto for mft_ni ($MFT inode), mft_na ($MFT/$DATA),
112           mftbmp_na ($MFT/$BITMAP), lcnbmp_ni ($Bitmap inode), and
113           lcnbmp_na ($Bitmap/$DATA). Remove previous fields replaced by these.
114         - Rename a few fields in ntfs_volume structure to make them shorter,
115           e.g. now have nr_mft_records and nr_clusters.
116         - Add new API for doing I/O on both normal and multi sector transfer
117           protected ntfs attributes described by the ntfs_attr structure,
118           provided by attrib.[hc] (note writing is still restricted to
119           overwrite only):
120                 ntfs_attr_p{read,write}(), and
121                 ntfs_attr_mst_p{read,write}().
122         - Fix detection of read-only mounts in volume.c::ntfs_mntent_check().
123         - Start modularising ntfs_mount():
124                 - Split off the boot sector parsing code and move it to
125                   bootsect.c::ntfs_boot_sector_parse().
126                 - Move $MFT loading and parsing code to separate function
127                   volume.c::ntfs_mft_load().
128                 - Move $MFTMirr loading and parsing code to
129                   volume.c::ntfs_mftmirr_load().
130                 - Move all startup code (loading and parsing of bootsector,
131                   $MFT, and $MFTMirr) to volume.c::ntfs_volume_startup().
132         - Update ntfsfix to above modularisation.
133         - Add detection of read-write mounted devices to ntfsfix and refuse to
134           operate on them.
135         - POSIXify libntfs/disk_io.c. All functions now return partial reads
136           and writes and deal with end of file properly. Affected functions:
137                 ntfs_p{read,write}(),
138                 ntfs_mst_p{read,write}(), and
139                 ntfs_cluster_{read,write}().
140         - Change ntfsfix to take into account the automatic mft mirror updates.
141         - Add new API provided by new files dir.[ch]:
142                 ntfs_inode_lookup_by_name(), and
143                 ntfs_readdir().
144         - We now use u8, u16, u32, u64, s8, s16, s32, and s64 types and we
145           typedef them ourselves from the C99 standard uint8_t, etc types which
146           IMO are braindamaged.
147         - Better gcc detection in 'configure.in'. (Szakacsits Szabolcs)
148           Tested with:  egcs-1.0.3 (egcs-2.90.29), egcs-1.1.2 (egcs-2.91.66),
149                         gcc 2.95.3, 2.96 (from RH 7.1 and 7.3), and 3.0.4.
150         - Enable enumeration of attributes using ntfs_attr_lookup() which is
151           requested by passing a type of AT_UNUSED (or simply zero) to
152           ntfs_attr_lookup(). (Based on initial patch by Szakacsits Szabolcs.)
153         - Fix two minor buglets in ntfs_external_attr_find() where we would
154           continue the search when we detect a mismatched type and/or name
155           instead of aborting and returning error EIO to flag the corruption.
156         - Add new syntactic sugar API provided by attrib.h:
157                 ntfs_attrs_walk(). (Szakacsits Szabolcs)
158         - Add new API for compressing runlists into mapping pairs arrays
159           provided by runlist.[hc] (some adapted from mkntfs.c):
160                 ntfs_rl_vcn_to_lcn(),
161                 ntfs_rl_pwrite(),
162                 ntfs_runlists_merge(),
163                 ntfs_mapping_pairs_decompress(),
164                 ntfs_get_nr_significant_bytes(),
165                 ntfs_get_size_for_mapping_pairs(),
166                 ntfs_write_significant_bytes(),
167                 ntfs_mapping_pairs_build(), and
168                 ntfs_rl_truncate(). -- WIP
169         - Convert mkntfs.c to the above API.
170         - Implement attrib.[hc]::ntfs_rl_pwrite() as a low level scatter write
171           function analogous in functionality to mkntfs.c::ntfs_rlwrite() but
172           with arguments more like ntfs_attr_pwrite() to allow for more
173           flexible use.
174         - Don't use string concatenation with __FUNCTION__ as gcc-3.x don't
175           like it.
176         - Move runlist functions to runlist.[hc]. (Richard Russon)
177         - Add new API to volume.[hc] and use it (Szakacsits Szabolcs):
178                 ntfs_version_is_supported(),
179                 NTFS_V{1_[12],2_x,3_[01]}() macros,
180                 ntfs_logfile_reset(), and
181                 ntfs_volume_set_flags().
182         - Change size autodetection of non-block device files in mkntfs to use
183           the stat returned file size rather than the block allocation count to
184           cope with pre-created sparse files.
185         - Remove GPL message text from usage information in mkntfs.
186         - The word is "runlist", not "run_list", "run list", or "run-list".
187         - Prefix all functions with "ntfs_" and make the names of the form
188           "ntfs_object_action()". Keep this for all future functions!
189         - Change unistr.c::ntfs_names_are_equal() to return TRUE when both
190           names have zero length. Thanks to Leonard Norrgard for spotting this.
191         - Fix bug in ntfs_external_attr_find(). (Szakacsits Szabolcs)
192         - Fix stupid logic inversion bug in ntfs_extent_inode_open(). Same bug
193           was fixed in the NTFS kernel driver over six months ago but the fix
194           was never taken over to libntfs. (Szakacsits Szabolcs)
195         - Fix stupid bug in ntfs_ucsncmp(). Spotted by Leonard Norrgard.
196         - Fix bug where the call to ntfs_attr_{put,reinit}_search_ctx() would
197           free the extent inode attached to the search context but leave it
198           attached to the base inode, so this would lead to memory corruption
199           and worse problems. Thanks to Szakacsits Szabolcs for spotting this.
200           We now don't close extent inodes any more at all and just leave it
201           to the closing of the base inode to dispose of all the extent inodes.
202         - Add sanity check to ntfs_inode_close() to detect attempts at closing
203           extent inodes.
204         - Don't free extent inodes in attrib.c! (Szakacsits Szabolcs)
205         - Return the attribute list attribute when enumerating attributes, too.
206           Thanks to Szakacsits Szabolcs for pointing this problem out.
207         - New API function provided by unistr.[hc] and use it in mkntfs:
208                 ntfs_ucsnlen().
209         - New API function provided by attrib.[hc] and use it in mkntfs:
210                 ntfs_resident_attr_value_resize(),
211                 ntfs_attr_truncate(). -- WIP
212         - New API functions provided by inode.[hc]:
213                 ntfs_inode_mark_dirty(),
214                 ntfs_inode_sync().
215         - Change ntfs_inode_close() to write out dirty inodes and inode extents.
216         - New API functions provided by lcnalloc.[hc]:
217                 ntfs_cluster_{alloc,free}(). -- WIP
218         - New API function provided by bitmap.[hc]:
219                 ntfs_bitmap_{set,clear}_run(). -- WIP
220         - Extend the volume.h::ntfs_volume structure with variables required by
221           the cluster and mft allocators and set them up in
222           volume.c::ntfs_volume_startup().
223         - ntfs_umount() now also does an fdatasync() on the device before
224           closing it.
225         - Added new utility ntfstruncate, primarily to be able to test the
226           new ntfs_attr_truncate() function, it is not compiled by default.
227           Note, the library can currently only make attributes smaller and it
228           only works on uncompressed, unencrypted inodes which do not contain
229           attribute lists, i.e. on simple files, but that was quite a lot of
230           new code in itself which needs a lot of testing!
231         - Fix library to never issue writes on volumes that have been mounted
232           read-only.
233         - New API provided by mft.[hc]:
234                 ntfs_mft_record_{alloc,free}(). -- WIP
235
236 12/03/2002 - 1.6.0 - More mkntfs options and cleanups.
237         Fix typo in usage information of mkntfs. Thanks to Richard Russon for
238         spotting it.
239         Change version number in mkntfs and ntfsfix to match the linux-ntfs
240         release version number.
241         Added two new options to mkntfs; -I, which disables content indexing
242         on the volume and -C, which enables compression on the volume.
243
244 01/02/2002 - Attempt to fix compile warnings on powerpc.
245         Attempt to fix compile warnings on powerpc. It seems powerpc uses
246         char == unsigned char which was breaking some signed comparisons.
247
248 26/01/2002 - 1.5.1 - Fix two buglets in ntfsfix and more compilation fixes.
249         Fix two silly buglets in ntfsfix, where we were calling is_baad_record
250         instead of is_baad_recordp. Silly me... Thanks to David Martinez Moreno
251         for reporting the compilation warnings on ia64 which led me to find the
252         bug.
253         Fix compilation problems in logfile.h on big endian arches. Hopefully,
254         now will really compile on all arches.
255
256 10/01/2002 - 1.5.0 - Fix bug in $LogFile size calculation.
257         Fix bug in $LogFile size calculation where we would take the size to
258         be zero on partitions between 200 and 400MiB in size.
259         Add requirement for linux-ntfs to linux-ntfs-devel.
260
261 15/12/2001 - Remove atomic ops and add compiler version check.
262         Hopefully this will preempt "it doesn't compile for me" messages from
263         people with gcc < 2.96.
264         Change bail out error check for seek to backup boot sector to a warning
265         since SuSE 7.2 + loads of stuff and 2.5.1-pre11 returns EINVAL instead
266         of ENOSPC.
267         Remove atomic code as it isn't defined on non-i386 arches.
268
269 06/12/2001 - Change ntfs_mount to accept second argument for mount flags.
270         ntfs_mount() now supports mount flags as per "man 2 mount". Currently
271         only the MS_RDONLY flag is supported/implemented. This breaks
272         compatibility with older libntfs versions and hence the major version
273         number of the library has been increased.
274         Adapt utilities to make use of new ntfs_mount syntax.
275
276 17/11/2001 - Add description of compression algorithm.
277
278 09/11/2001 - 1.4.0 - Major fix in mkntfs, small update to ntfsfix and others.
279         Update ntfsfix to support Windows XP NTFS volumes (NTFS 3.1).
280         Update layout.h with more information.
281         (Re)enable shared libraries.
282         Changes to mkntfs:
283           - Correct handling of directories on volumes with cluster sizes
284             above 4096 bytes.
285           - Lower minimum size of NTFS partitions to 1MiB, scaling down the
286             logfile size as necessary.
287           - Support a wider range of input parameters. Now should have all
288             valid combinations covered.
289           - Update man page.
290           - Implement better determination of device size.
291           - Various bug fixes.
292
293 22/08/2001 - 1.2.2 - Small fix in mkntfs and minor updates.
294         Small fix in mkntfs for small volumes with non-standard sector sizes,
295         where the default values would result in a sector size smaller than the
296         sector size and mkntfs would refuse to run because of this. The man
297         page was updated accordingly.
298         Minor updates/clarifications to include/layout.h.
299
300 02/08/2001 - 1.2.1 - Added ntfsfix man page and minor cleanup.
301         David Martínez Moreno <david.martinez@rediris.es> donated a man page
302         for ntfsfix as well as spelling mistake fixes all over the place.
303
304 26/07/2001 - 1.2.0 - Important bug fixes to mkntfs.
305         Bug fixes for cluster sizes > 4kb involving corrections to mft mirror
306         size and contents, mft data attribute position and mft bitmap size.
307         Some of those were nasty so this is a major improvement. Hopefully these
308         were the last bugs.
309
310 25/07/2001 - 1.0.2 - Small cleanup of the distribution.
311         Move mkntfs to sbin (was put in bin before).
312         Small bugfix to mkntfs man page.
313
314 24/07/2001 - 1.0.1 - Small cleanup of the distribution.
315         Confirmed that at least gcc-2.96 is needed to compile linux-ntfs.
316         Removed ldm.c from linux-ntfs. It will reappear as ldminfo.c in a new
317         package, probably linux-ldm.
318         Taken out some file from the distribution, but they are still present
319         in CVS. This is because they are not really useful except if you are
320         a developer wanting to play about.
321
322 10/06/2001 - 1.0.0 - mkntfs release and bugfixes to ntfslib and the others.
323         Also, released ldm which dumps the ldm database on Win2k/XP dynamic
324         disks.
325         A man page for mkntfs is also installed by make install so man 8 mkntfs
326         can be used to show the recognised command line options.
327         Building of shared libraries is disabled by default as it breaks on
328         some systems.
329         Probably need at least gcc-2.95 or something like that from now on.
330
331 02/02/2001 - Started ChangeLog.
332