ntfsprogs 1.10.0 has now been released. This release is really long
overdue. Lots of fixes, changes, and improvements were made to the NTFS
library and the utilities. Corrupt journal files and hibernated Windows
are detected. The size of files can be changed. The ntfscp utility was
added. Ntfsinfo now reveals more information. Ntfsclone can handle bad
sectors and gently rescue dying disks. Ntfsfix can repair more types of
corruptions. Mkntfs creates a clean volume and attempts to create
bootable volumes. Ntfsresize catches even more types of corruptions
before resizing. For further information, please read the ChangeLog
below.
You can download rpms and source code from 1.9.4 release:
http://linux-ntfs.sourceforge.net/downloads.html
Or get the changes from Sourceforge CVS, for details see:
http://sourceforge.net/cvs/?group_id=13956
ChangeLog from 1.9.4 release:
- Add start_vcn parameter to ntfs_get_size_for_mapping_pairs() and
ntfs_mapping_pairs_build() and adapt all callers.
- Bump library version due to source level API change above.
- Add ntfs_debug() and ntfs_error() to make kernel<->userspace porting
easier.
- ntfsinfo: Added dumping of index records from $INDEX_ROOT and
$INDEX_ALLOCATION. (Yura)
- ntfsinfo: Changed message for resident $INDEX_ALLOCATION to print
error, because $INDEX_ALLOCATION can't be resident. (Yura)
- ntfscp: Not longer update $FILE_NAME attributes, because Windows
doesn't update them unless a rename operation occur. (Yura)
- ntfsinfo: dump attribute list entries in verbose mode and display
attribute instance of all attributes. (Yura)
- new API: attrlist.[ch]::ntfs_attrlist_entry_add add entry to
attribute list. (Yura)
- ntfs_inode_sync: write out dirty attribute list from cache to
disk. (Yura)
- Add stop_vcn parameter to ntfs_mapping_pairs_build() and adapt
all callers. This allows filling an attribute extent with mapping
pairs and then continuing in a different extent once the first extent
is full. (Yura)
- Remove vol->nr_mft_records and update all users. (Anton)
- Add new API to mft.[hc]::ntfs_mft_record_{alloc,free}(). (Anton)
- Sync inodes before closing attributes or the umount fails. (Anton)
- Close extent inodes in ntfs_inode_close() when closing a base inode
and fix handling of ->extent_nis for base inodes. (Anton)
- Add ntfsmftalloc utility to the extra utilities to help test the mft
record allocator. (Anton)
- Fix ntfs_attr_record_resize() to cope with a newsize < 8. This means
you can call ntfs_attr_record_resize() with newsize = 0 to delete an
attribute record from its mft record but you would still need to
update the attribute list attribute if present. (Anton)
- Add the useful offsetof() macro to ntfs/support.h which returns the
offset of a structure element. (Anton)
- New API: attrib.[ch]::ntfs_make_room_for_attr (it is ported from
mkntfs). (Yura)
- New API: attrib.[ch]::ntfs_non_resident_attr_record_add() and
attrib.[ch]::ntfs_attr_record_rm(). This is low-level functions to
manipulate attribute extents. (Yura)
- Improvement to ntfs_non_resident_attr_expand: now it can expand multi
extent attributes and allocate new MFT records if mapping mapirs
doesn't fit current. (Yura)
- Implement attrlist.[ch]::ntfs_attrlist_entry_rm(). (Yura)
- Attribute handling functions always update highest_vcn, if it was
modified. (Yura)
- Add new API unistr.[hc]::ntfs_ucsndup(). (Anton)
- Make libntfs/attrib.c::ntfs_attr_open() make a copy of the attribute
name unless it is one of the internal names. (Anton)
- New API: attrib.[ch]::ntfs_resident_attr_record_add. (Yura)
- New API: inode.[ch]::ntfs_inode_add_attrlist. (Yura)
- New API: attrlist.[ch]::ntfs_attrlist_need. (Yura)
- ntfsclone: save by using our, not NTFS cluster allocation bitmap.
This gives more control in the future what to save. (Szaka)
- New helper: attrlist.h::ntfs_attrlist_mark_dirty. (Yura)
- New API: attrib.[ch]::ntfs_attr_update_mapping_pairs and made
ntfs_non_resident_attr_{shrink,expand} use it, thus attribute resize
functions is almost completed, but still very experemental and maybe
dangerous. (Yura)
- Fix stupid bug in ntfs_attr_reinit_search_ctx() introduced during
changes to ntfs_external_attr_find(). This is because
ntfs_attr_lookup() intentionally does not clear ctx->al_entry but
does clear ctx->base_ntfs_ino which in turn means that
ntfs_attr_reinit_search_ctx() does not clear ctx->al_entry. Now,
ntfs_attr_reinit_search_ctx() always clears ctx->al_entry.
- Rename scpu_to_le{16,32,64}() to cpu_to_sle{16,32,64}() to match the
kernel.
- ntfsclone: honor bad clusters list ($BadClus:$Bad), known bad sectors
aren't tried to be saved anymore. (Szaka)
- Add new API attrib.[ch]::ntfs_attr_record_move_to and make
ntfs_resident_attr_resize use it. (Yura)
- Improve ntfs_resident_attr_resize to try make attributes non-resident
when such convert is reasonable. (Yura)
- New API attrib.[ch]::ntfs_attr_record_move_away(). (Yura)
- New API inode.[ch]::ntfs_inode_attach_all_extents . (Yura)
- New API inode.[ch]::ntfs_inode_free_space. (Yura)
- Improved layout.h::ATTR_RECORD to have {non_,}resident_end and
compressed_end fields. Use offsetof(ATTR_RECORD, *_end) to get size
of accordable attribute. (Yura)
- Make ntfs_attr_update_mapping_pairs and ntfs_inode_add_attrlist use
ntfs_inode_free_space when there is no enough space for attribute
list. (Yura)
- Remove inode.h::NIno{Clear,Set,}AttrListNonResident and attr_list_rl
field from inode.h::_ntfs_inode struct. Adapt all users. (Yura)
- Add --attibute, --attr-name and --inode options to ntfscp. (Yura)
- ntfscp is moved from extra to standard program set. (Yura)
- Add new high level API inode.[ch]::ntfs_inode_add_attr and make ntfscp
use it when requested attribute isn't exist. (Yura)
- Add new high level API inode.[ch]::ntfs_inode_rm_attr. (Yura)
- Extend ntfs_attr_pwrite to cope with extending the attribute size
and with instantiating holes. (Yura)
- Add new API's ntfs_rl_sparse and ntfs_rl_get_copmressed_size. (Yura)
- ntfsinfo: Dump flags names for $STANDARD_INFORMATION and $FILE_NAME
attributes. (Yura)
- Move NAttr{Sparse,Compressed,Encrypted} to inode struct preserving
the previous interface. (Yura, with fixes from Anton)
- Rename/move inode.[hc]::ntfs_inode_{add,rm}_attr() to
attrib.[hc]::ntfs_attr_{add,rm}(), respectively. (Anton)
- Update sparse/compressed/encrypted bits in STANDARD_INFORMATION
during inode sync. (Yura)
- Rename NTFS_SECTOR_SIZE to NTFS_BLOCK_SIZE to keep in sync with
kernel driver. (Yura)
- Port logfile checking routines from the kernel to the library and
integrate them with mount process. (Yura)
- ntfscp: Added SIGINT (Ctrl+C) handler, improved error handling in
sync failed case. (Yura)
- Fix a nasty runlist merge bug when merging two holes. (Anton)
- ntfsfix: empty journal and mark volume dirty for chkdsk if ntfs_mount
failed. This makes read-write mounting of NTFS metadata images
possible by ntfsprogs and the kernel driver what were created by
versions of ntfsclone previous than 2.0.0. (Szaka)
- ntfsclone: added a new option, --ignore-fs-check. It can be used
only with the --metadata option. The clusters causing the
inconsistency are saved too. (Szaka)
- ntfsclone: added a new option, --rescue. It ignores read errors so
disks having bad sectors (dying disks) can be rescued efficiently,
with minimal stress on them. (Szaka)
- ntfsfix: fix invalid mft records in $MFTMirr. (Szaka)
- Added a trigger script to the BK repository that will send an email
to lin...@li... mailing list when someone
pushes successfully to the ntfsprogs repository on bkbits.net. This
is done on the server side and is thus independent of whether the
client doing the push has got a correct email setup. (Yura, Anton)
- ntfsclone: make --metadata work with the new $Logfile checking code.
Save at least the first 16 KiB of $Logfile (the two RSTR records
should always be included if present). Save also records used for
checking empty $Logfile. (Szaka)
- ntfscp: add ability to specify directory as destination file. (Yura)
- ntfsresize: fix segfault during filesystem check if NTFS was corrupted
in a way that clusters were referenced outside of the volume. (Szaka)
- Major rewrite of libntfs/win32_io.c and in particular seek, read, and
write related code. As part of this perform run-time detection of
presence of SetFilePointerEx() and if not present emulate it.
- ntfsclone: --rescue works at the lowest, sector and not cluster level
thus more data can be rescued. The contents of the unreadable sectors
are filled by character '?' and the beginning of such sectors are
marked by "BadSectoR\0". (Krishna Mohan Gundu, Szaka)
- ntfsclone: fixed an off-by-one error during --metadata in function
wipe_data(). (Szaka)
- Detect and refuse to mount hibernated Windows during ntfs_mount() if
the volume is tried to be opened read-write. (Szaka)
- Move back from BitKeeper to CVS on SF.net and fix executable
permissions that got lost during the move. (Anton)
- ntfsresize: fix segfault during filesystem check if NTFS $Bitmap file
size was larger than it should have been. (Szaka)
- mkntfs: Don't mark NTFS dirty if the backup boot sector could be
successfully created. (Szaka)
- mkntfs: Add new option -T which fakes the time to be 00:00:00 UTC,
Jan 1, 1970 instead of the current system time.
- Port collate.[ch] from kernel to library and implement
ntfs_collate_file_name. Thus we have new API's: ntfs_collate and
ntfs_is_collation_rule_supported. (Yura)
- Port index.[ch] from kernel to library. New API's: ntfs_index_lookup,
ntfs_index_ctx_{get,put}, ntfs_index_entry_mark_dirty. (Yura)
- Implement FILE_NAME attributes update in index during inode sync and
enable code that set/clean sparse bit. Also add new inode state bit
FileNameDirty to indicate that FILE_NAME attributes need update.
At least after attribute resize we leave absolutely consist
volume. (Yura)
- Update attribute definition handling. (Anton, Yura)
- Move utils_pathname_to_inode from to library (dir.c), adapt it
for the library, rename it to ntfs_pathname_to_inode, update all
users. (Yura)
- Set attr_name to NULL in libntfs/attrib.c::__ntfs_attr_init() and
fixup all callers apropriately. Thanks to FlatCap/Rich for pointing
this out. (Anton)
- Determine endianness in ./configure and use that in addition to
existing mechanisms for determining endianness. (Anton)
Best regards,
Anton
--
Anton Altaparmakov <aia21 at cam.ac.uk> (replace at with @)
Unix Support, Computing Service, University of Cambridge, CB2 3QH, UK
Linux NTFS maintainer / IRC: #ntfs on irc.freenode.net
WWW: http://linux-ntfs.sf.net/ & http://www-stu.christs.cam.ac.uk/~aia21/
|