1
10/10/2005 - 1.12.1 - Minor fix to location of mount.ntfs-fuse and mkfs.ntfs.
3
- Fix hardcoded location for uninstalling mount.ntfs-fuse hardlink to
4
match the relocatable location for installing it. (Anton, Szaka)
5
- Move mount.ntfs-fuse and mkfs.ntfs to be symlinks instead of
6
hardlinks and move both to /sbin rather than prefix/sbin. Note we
7
still obey $destdir so building packages works as well as installing
8
into alternate chroot / other system still works. (Anton)
9
- ntfscmp: fix some corner cases and all memory leaks; handle corrupt
10
NTFS more gracefully. (Szaka)
11
- If the system does not have realpath(), supply our own dummy version
12
which just copies the string without any kind of checking or
15
07/10/2005 - 1.12.0 - Lots of fixes and enhancements!
17
- Add ./configure detection for gnutls library and make minimum version
18
1.2.3 which is the one that has the rsa key export fixed. (Anton)
19
- Put in a minimum version for libgcrypt of 1.2.0 as I do not know if
20
our code works with earlier versions. (Anton)
21
- Fix some memory leaks in ntfsdecrypt and do some cleanups. (Anton)
22
- Fix ntfsdecrypt to also work with passwordless files. Note this
23
requires a patched gnutls library or it still does not work. (Anton)
24
- Add new APIs for index adding/remove:
25
index.[ch]::ntfs_index_add_filename and index.[ch]::ntfs_index_rm.
26
They support only basic cases, so can fail with EOPNOTSUPP. (Yura)
27
- Add new API for index context reinitialization:
28
ntfs_index_ctx_reinit. (Yura)
29
- Add new high-level APIs for file and directory creation/deletion that
30
rely on ntfs_index_{add_filename,rm}:
31
dir.[ch]::ntfs_create and dir.[ch]::ntfs_delete. (Yura)
32
- Add @creation_time field to struct ntfs_inode and rename [acm]time
33
fields to @last_{data_change,mft_change,access}_time. Update them in
34
STANDARD_INFORMATION and FILE_NAMEs during inode sync. (Yura)
35
- layout.h: Add @v1_end and @v3_end markers for offsetof to struct
36
FILE_NAME_ATTR. Change type of @clusters_per_index_block from u8 to
37
s8, fix error in comment. Simplify a bit INDEX_ENTRY struct. (Yura)
38
- ntfstime.h: Use cpu_to_sle64 and sle64_to_cpu in utc2ntfs and
39
ntfs2utc respectively. Update all users. (Yura)
40
- Add @indx_record_size and @inx_record_size_bits to struct ntfs_volume.
41
Set them during mount. (Yura)
42
- attrib.c: Set RESIDENT_ATTR_IS_INDEXED flag for FILE_NAME attribute in
44
- inode.c: Do not sync STANDARD_INFORMATION and FILE_NAMEs for
46
- mft.c: Set *time and *size fields of struct ntfs_inode in
47
ntfs_mft_record_alloc. (Yura)
48
- Make ntfsmount use new APIs for file and directory creation/deletion.
49
Implement utime operation. (Yura)
50
- Hard link mkfs.ntfs and mkfs.ntfs.8 with mkntfs and mkntfs.8. (Szaka)
51
- Only include sys/ioctl.h in libntfs/device.c if ./configure detected
52
it to be present. (Christophe)
53
- ntfscluster: fix incorrect volume usage calculation. (Szaka)
54
- ntfscluster, utils.c::mft_next_record(): fix gigaleak. (Szaka)
55
- Define PATH_MAX if not defined in ntfsprogs/ntfsmount.c and
56
libntfs/volume.c. Needed to compile on DOS with djgpp. (Christophe)
57
- Switch ntfsmount to use getopt_long. (Yuval, minor fixes by Yura)
58
- ntfsmount: Fix 'df' output. (Yuval)
59
- Support journals which have been modified by chkdsk. (Anton, Szaka)
60
- Support journals ($LogFile) with only one restart page as well as
61
journals with two different restart pages. (Anton, Szaka)
62
- Add @val parameter to ntfs_attr_add and @val and @size parameters to
63
ntfs_resident_attr_record_add. (Yura)
64
- Fix attribute list adding for always resident attributes. (Yura)
65
- New API for hard link creating: dir.[ch]::ntfs_link. (Yura)
66
- ntfsresize: emphasize that disk partitioning must use sector as the
67
unit instead of cylinder to avoid shifting of the partition. (Szaka)
68
- Rename API: ntfs_volume_set_flags() as it is misleading. It does not
69
set a flag, it overwrites the flags! Rename it to
70
ntfs_volume_write_flags() and clean it up a lot. Update all
72
- Change everything to supply an ntfs_inode and NULL for mft record
73
when calling ntfs_attr_get_search_ctx() except a very few cases which
74
genuinely need this functionality as they work on a too low level.
75
Make sure all those cases are ok. (Anton)
76
- ntfsclone: fix saving by sectors during --rescue (Scott Hansen, Szaka)
77
- Fix the definition of the CHKD ntfs record magic. It had an off by
78
two error causing it to be CHKB instead of CHKD. (Anton)
79
- Add new utility ntfscmp (make extra) which compares two NTFS volumes
80
and tell the differences. It's used for development, debugging,
82
- ntfsresize, ntfsclone: accept incorrect $Bitmap size if it covers
83
the entire volume. (Szaka)
84
- mkntfs: Fix silly bug where I forgot to add the "H:S:p:" string to
85
the getopt() parsing string for those options. Cannot be used very
86
often if people only now noticed! (Anton)
87
- ntfsmount: Add 'locale' option. (Yura)
88
- ntfsmount: Change interface to 'ntfsmount device mount_point'. (Yura)
89
- Hardlink ntfsmount to /sbin/mount.ntfs-fuse, thus it possible mounting
90
from fstab by specifying ntfs-fuse filesystem type. (Yura, Szaka)
91
- Fix stupid bug in mkntfs which caused it to fail even though only the
92
backup boot sector could not be written because a 2.4 kernel is used
93
and the partition has an odd number of sectors. (Anton)
94
- Add API (actually renamed from what Rich/FlatCap did):
95
volume.[hc]::ntfs_libntfs_version() which returns a pointer to a
96
static const string of the libntfs verion, i.e. at the moment this is
97
"8.0.0". This required moving the version specifications from
98
libntfs/Makefile.am to configure.ac. This should hopefully have the
99
sideeffect that I will remember to increment it when incrementing the
100
ntfsprogs version number when making a release given the two are
101
right under one another. (Anton)
102
- Change ALL utilities to display the libntfs version they are running
103
on. This should make debugging easier in the case that people are
104
running mismatched utilities/library. (Anton)
106
08/08/2005 - 1.11.2 - ntfsdecrypt now works and lots of fixes and improvements.
108
- ntfsls: Fix display of non-system files whose name begins with the
109
'$' character. (Yura)
110
- Move ntfs2utc and utc2ntfs from utils.[ch] to ntfstime.h. (Yura,
112
- Add [acm]time fields to struct ntfs_inode and set them during
113
ntfs_inode_open(). Update ntfsmount to use them. (Yura)
114
- index.c::ntfs_index_lookup(): Fix bug when index context did not
115
point to the index root in which the entry located. (Yura)
116
- ntfsresize: relocate_attributes(): Do not stop processing MFT record
117
attributes at AT_DATA of $BadClus and $Bitmap. In practice, there
118
are no non-resident attributes after them so this is a bug which was
119
introduced in 1.11.0 which should not have caused data loss. (Szaka)
120
- ntfsresize: Support relocation of $MFT with $ATTRIBUTE_LIST. (Szaka)
121
- ntfsresize: Support resizing into the middle of a $MFT $DATA
123
- ntfscp: Fix attribute name parsing bug introduced in 1.10.0. (Yura)
124
- ntfsinfo: Dump more information about indexes. (Yura)
125
- Fix unistr.c::ntfs_mbstoucs() on systems with utf8 locale. (Yura)
126
- Change errno and print more verbose message in the case of a failing
127
logfile check. (Yura)
128
- Fix random errno returned by ntfs_inode_open() if the MFT record was
130
- Fix ntfs_attr_p{read,write}() to not return less bytes if trapped on
131
unmapped runlist region. (Yura)
132
- Make find work correctly on volumes mounted by ntfsmount. (Yura)
133
- Replaced all occurances of ENOTSUP with EOPNOTSUPP to be in better
134
harmony with the kernel driver. (Szaka)
135
- Fix ntfs_is_cb_compressed() for nasty runlist merging case in which
136
compression block was incorrectly treated as not compressed. (Yura,
138
- ntfsresize: Fix for ntfs_rl_truncate() EIO: Always set the correct
139
size for $BadClus::$Bad, even if Windows set it incorrectly. (Szaka)
140
- Make ntfs_attr_open() resolve attribute name for ntfs_attr struct
141
in case NULL passed instead of name. (Yura)
142
- ntfsdecrypt (make extra) is now fully functional using libgcrypt and
143
gnutls 1.2.0 (not later, that is broken at present). It decrypts all
144
types of compressed files that ntfs creates, i.e. DesX, AES-256, and
145
3Des. The only thing it requires is the user's private key which
146
needs to be supplied via a .pfx file (a PKCS#12 file). Such a file
147
can be created in windows XP SP2 by running cipher with the export
148
key option or in older windows versions by running the certificates
149
snap-in to the microsoft management console (mmc). Note that due to
150
a bug in gnutls you have to protect the .pfx file with a password.
151
An empty password will not work. (Yuval, Anton)
152
- Add information about $EFS on-disk structures to layout.h. (Yuval,
154
- Fix build so that make extra directly after ./configure works.
155
Thanks to Yuval for the bug report. (Anton)
156
- Add ./configure option --enable-crypto and if enabled detect whether
157
libgcrypt is present or not and only then build ntfsdecrypt. (Anton)
159
20/07/2005 - 1.11.1 - Fix several ntfsmount bugs.
161
- ntfsmount: Fix several bugs when too small buffer was allocated for
162
filenames on systems with utf8 locale. (Yura, many thanks to Rich
165
19/07/2005 - 1.11.0 - Fixes and a new utility ntfsmount, a FUSE ntfs module.
167
- ntfscp: fix signal handling: handle both SIGTERM and SIGINT, print
168
correct message. (Yura)
169
- Update manual pages for ntfsprogs, ntfsclone, ntfsresize and
171
- ntfsclone: detect and hint users if the destination fs does not
172
support sparse files. (Szaka)
173
- Fix memory management error in ntfs_inode_close. (Yura)
174
- Add new utility - ntfsmount. It is a FUSE module that reles on
176
- ntfsresize: support bad clusters list ($BadClus:$Bad), a.k.a. disks
177
having bad sectors if the new --bad-sectors option is used. (Szaka)
178
- ntfsinfo: Dump $EA_INFORMATION and $EA attributes. (Yura)
179
- mkntfs: Fix backup bootsector creation. Thanks to Timur Amirkhanov
180
for pointing these stupidities out. (We forgot to set the size
181
before doing it and we wrote more bytes then there were in the buffer
182
if sector size was above 8kiB and we only reserved one sector even
183
when sector size was less than 512 bytes and then we wrote 512 bytes,
184
i.e. beyond the end of the device.) (Anton)
185
- Add new utility (make extra) - ntfsdecrypt. (Yuval)
186
- Improve "already mounted" check. (Yura)
187
- Remove AC_FUNC_MALLOC and AC_FUNC_REALLOC from configure.ac as we
188
do not provide replacement functions for them and the checks break
189
cross compilation. (Christophe)
191
20/06/2005 - 1.10.0 - Lots of new features, enhancements, and bug fixes.
193
- Add start_vcn parameter to ntfs_get_size_for_mapping_pairs() and
194
ntfs_mapping_pairs_build() and adapt all callers.
195
- Bump library version due to source level API change above.
196
- Add ntfs_debug() and ntfs_error() to make kernel<->userspace porting
198
- ntfsinfo: Added dumping of index records from $INDEX_ROOT and
199
$INDEX_ALLOCATION. (Yura)
200
- ntfsinfo: Changed message for resident $INDEX_ALLOCATION to print
201
error, because $INDEX_ALLOCATION can't be resident. (Yura)
202
- ntfscp: Not longer update $FILE_NAME attributes, because Windows
203
doesn't update them unless a rename operation occur. (Yura)
204
- ntfsinfo: dump attribute list entries in verbose mode and display
205
attribute instance of all attributes. (Yura)
206
- new API: attrlist.[ch]::ntfs_attrlist_entry_add add entry to
207
attribute list. (Yura)
208
- ntfs_inode_sync: write out dirty attribute list from cache to
210
- Add stop_vcn parameter to ntfs_mapping_pairs_build() and adapt
211
all callers. This allows filling an attribute extent with mapping
212
pairs and then continuing in a different extent once the first extent
214
- Remove vol->nr_mft_records and update all users. (Anton)
215
- Add new API to mft.[hc]::ntfs_mft_record_{alloc,free}(). (Anton)
216
- Sync inodes before closing attributes or the umount fails. (Anton)
217
- Close extent inodes in ntfs_inode_close() when closing a base inode
218
and fix handling of ->extent_nis for base inodes. (Anton)
219
- Add ntfsmftalloc utility to the extra utilities to help test the mft
220
record allocator. (Anton)
221
- Fix ntfs_attr_record_resize() to cope with a newsize < 8. This means
222
you can call ntfs_attr_record_resize() with newsize = 0 to delete an
223
attribute record from its mft record but you would still need to
224
update the attribute list attribute if present. (Anton)
225
- Add the useful offsetof() macro to ntfs/support.h which returns the
226
offset of a structure element. (Anton)
227
- New API: attrib.[ch]::ntfs_make_room_for_attr (it is ported from
229
- New API: attrib.[ch]::ntfs_non_resident_attr_record_add() and
230
attrib.[ch]::ntfs_attr_record_rm(). This is low-level functions to
231
manipulate attribute extents. (Yura)
232
- Improvement to ntfs_non_resident_attr_expand: now it can expand multi
233
extent attributes and allocate new MFT records if mapping mapirs
234
doesn't fit current. (Yura)
235
- Implement attrlist.[ch]::ntfs_attrlist_entry_rm(). (Yura)
236
- Attribute handling functions always update highest_vcn, if it was
238
- Add new API unistr.[hc]::ntfs_ucsndup(). (Anton)
239
- Make libntfs/attrib.c::ntfs_attr_open() make a copy of the attribute
240
name unless it is one of the internal names. (Anton)
241
- New API: attrib.[ch]::ntfs_resident_attr_record_add. (Yura)
242
- New API: inode.[ch]::ntfs_inode_add_attrlist. (Yura)
243
- New API: attrlist.[ch]::ntfs_attrlist_need. (Yura)
244
- ntfsclone: save by using our, not NTFS cluster allocation bitmap.
245
This gives more control in the future what to save. (Szaka)
246
- New helper: attrlist.h::ntfs_attrlist_mark_dirty. (Yura)
247
- New API: attrib.[ch]::ntfs_attr_update_mapping_pairs and made
248
ntfs_non_resident_attr_{shrink,expand} use it, thus attribute resize
249
functions is almost completed, but still very experemental and maybe
251
- Fix stupid bug in ntfs_attr_reinit_search_ctx() introduced during
252
changes to ntfs_external_attr_find(). This is because
253
ntfs_attr_lookup() intentionally does not clear ctx->al_entry but
254
does clear ctx->base_ntfs_ino which in turn means that
255
ntfs_attr_reinit_search_ctx() does not clear ctx->al_entry. Now,
256
ntfs_attr_reinit_search_ctx() always clears ctx->al_entry.
257
- Rename scpu_to_le{16,32,64}() to cpu_to_sle{16,32,64}() to match the
259
- ntfsclone: honor bad clusters list ($BadClus:$Bad), known bad sectors
260
aren't tried to be saved anymore. (Szaka)
261
- Add new API attrib.[ch]::ntfs_attr_record_move_to and make
262
ntfs_resident_attr_resize use it. (Yura)
263
- Improve ntfs_resident_attr_resize to try make attributes non-resident
264
when such convert is reasonable. (Yura)
265
- New API attrib.[ch]::ntfs_attr_record_move_away(). (Yura)
266
- New API inode.[ch]::ntfs_inode_attach_all_extents . (Yura)
267
- New API inode.[ch]::ntfs_inode_free_space. (Yura)
268
- Improved layout.h::ATTR_RECORD to have {non_,}resident_end and
269
compressed_end fields. Use offsetof(ATTR_RECORD, *_end) to get size
270
of accordable attribute. (Yura)
271
- Make ntfs_attr_update_mapping_pairs and ntfs_inode_add_attrlist use
272
ntfs_inode_free_space when there is no enough space for attribute
274
- Remove inode.h::NIno{Clear,Set,}AttrListNonResident and attr_list_rl
275
field from inode.h::_ntfs_inode struct. Adapt all users. (Yura)
276
- Add --attibute, --attr-name and --inode options to ntfscp. (Yura)
277
- ntfscp is moved from extra to standard program set. (Yura)
278
- Add new high level API inode.[ch]::ntfs_inode_add_attr and make ntfscp
279
use it when requested attribute isn't exist. (Yura)
280
- Add new high level API inode.[ch]::ntfs_inode_rm_attr. (Yura)
281
- Extend ntfs_attr_pwrite to cope with extending the attribute size
282
and with instantiating holes. (Yura)
283
- Add new API's ntfs_rl_sparse and ntfs_rl_get_copmressed_size. (Yura)
284
- ntfsinfo: Dump flags names for $STANDARD_INFORMATION and $FILE_NAME
286
- Move NAttr{Sparse,Compressed,Encrypted} to inode struct preserving
287
the previous interface. (Yura, with fixes from Anton)
288
- Rename/move inode.[hc]::ntfs_inode_{add,rm}_attr() to
289
attrib.[hc]::ntfs_attr_{add,rm}(), respectively. (Anton)
290
- Update sparse/compressed/encrypted bits in STANDARD_INFORMATION
291
during inode sync. (Yura)
292
- Rename NTFS_SECTOR_SIZE to NTFS_BLOCK_SIZE to keep in sync with
293
kernel driver. (Yura)
294
- Port logfile checking routines from the kernel to the library and
295
integrate them with mount process. (Yura)
296
- ntfscp: Added SIGINT (Ctrl+C) handler, improved error handling in
297
sync failed case. (Yura)
298
- Fix a nasty runlist merge bug when merging two holes. (Anton)
299
- ntfsfix: empty journal and mark volume dirty for chkdsk if ntfs_mount
300
failed. This makes read-write mounting of NTFS metadata images
301
possible by ntfsprogs and the kernel driver what were created by
302
versions of ntfsclone previous than 2.0.0. (Szaka)
303
- ntfsclone: added a new option, --ignore-fs-check. It can be used
304
only with the --metadata option. The clusters causing the
305
inconsistency are saved too. (Szaka)
306
- ntfsclone: added a new option, --rescue. It ignores read errors so
307
disks having bad sectors (dying disks) can be rescued efficiently,
308
with minimal stress on them. (Szaka)
309
- ntfsfix: fix invalid mft records in $MFTMirr. (Szaka)
310
- Added a trigger script to the BK repository that will send an email
311
to linux-ntfs-cvs@lists.sourceforge.net mailing list when someone
312
pushes successfully to the ntfsprogs repository on bkbits.net. This
313
is done on the server side and is thus independent of whether the
314
client doing the push has got a correct email setup. (Yura, Anton)
315
- ntfsclone: make --metadata work with the new $Logfile checking code.
316
Save at least the first 16 KiB of $Logfile (the two RSTR records
317
should always be included if present). Save also records used for
318
checking empty $Logfile. (Szaka)
319
- ntfscp: add ability to specify directory as destination file. (Yura)
320
- ntfsresize: fix segfault during filesystem check if NTFS was corrupted
321
in a way that clusters were referenced outside of the volume. (Szaka)
322
- Major rewrite of libntfs/win32_io.c and in particular seek, read, and
323
write related code. As part of this perform run-time detection of
324
presence of SetFilePointerEx() and if not present emulate it.
325
- ntfsclone: --rescue works at the lowest, sector and not cluster level
326
thus more data can be rescued. The contents of the unreadable sectors
327
are filled by character '?' and the beginning of such sectors are
328
marked by "BadSectoR\0". (Krishna Mohan Gundu, Szaka)
329
- ntfsclone: fixed an off-by-one error during --metadata in function
331
- Detect and refuse to mount hibernated Windows during ntfs_mount() if
332
the volume is tried to be opened read-write. (Szaka)
333
- Move back from BitKeeper to CVS on SF.net and fix executable
334
permissions that got lost during the move. (Anton)
335
- ntfsresize: fix segfault during filesystem check if NTFS $Bitmap file
336
size was larger than it should have been. (Szaka)
337
- mkntfs: Don't mark NTFS dirty if the backup boot sector could be
338
successfully created. (Szaka)
339
- mkntfs: Add new option -T which fakes the time to be 00:00:00 UTC,
340
Jan 1, 1970 instead of the current system time.
341
- Port collate.[ch] from kernel to library and implement
342
ntfs_collate_file_name. Thus we have new API's: ntfs_collate and
343
ntfs_is_collation_rule_supported. (Yura)
344
- Port index.[ch] from kernel to library. New API's: ntfs_index_lookup,
345
ntfs_index_ctx_{get,put}, ntfs_index_entry_mark_dirty. (Yura)
346
- Implement FILE_NAME attributes update in index during inode sync and
347
enable code that set/clean sparse bit. Also add new inode state bit
348
FileNameDirty to indicate that FILE_NAME attributes need update.
349
At least after attribute resize we leave absolutely consist
351
- Update attribute definition handling. (Anton, Yura)
352
- Move utils_pathname_to_inode from to library (dir.c), adapt it
353
for the library, rename it to ntfs_pathname_to_inode, update all
355
- Set attr_name to NULL in libntfs/attrib.c::__ntfs_attr_init() and
356
fixup all callers apropriately. Thanks to FlatCap/Rich for pointing
358
- Determine endianness in ./configure and use that in addition to
359
existing mechanisms for determining endianness. (Anton)
1
361
04/09/2004 - 1.9.4 - Urgent bug fixes.
2
363
- Rewrite win32_io.c to allow device level write support. (Yuval)
3
364
- Make ntfscp update file size in $FILE_NAME(0x30) attribute. (Yura)
4
365
- Fix ntfsclone crash when --restore-image was used for block device