Logging of fixup errors for uninitialized inodes cause unnecessary
worries and suspicion of malfunctions in ntfs-3g. This patch silences
these loggings in ntfsclone and ntfsresize which have to analyze all
inodes, including the uninitialized ones.
When creating a partition image, ntfsclone write an extra byte to
describe each cluster, this causes two unneeded ntfs-3g calls per cluster,
and inefficiency when imaging to ntfs.
A recent patch added copying the backup boot sector when cloning,
saving or restoring a partition, but when the total number of sectors is
not a multiple of the number of sectors per cluster, the last cluster
containing the backup boot sector is shorter than usual.
When this happens, the present patch avoids overflowing from partition
when accessing the last cluster.
This is not a perfect conversion. The VOLUME_IS_DIRTY flag reflects the _current_ state of the volume dirty bit and not the mount-time state.
However, since libntfs-3g (as opposed to libntfs) does not automatically change the dirty bit on mount and unmount (only when ntfs_volume_write_flags is called explicitly), and these tests are done directly after a mount (ntfsclone.c, ntfscp.c, ntfsresize.c, ntfswipe.c, utils.c) or when the volume is in an appropriate state (ntfsfix.c), the result will be the same.
In fact, this is how libntfs-3g operates normally, so the MS_NOATIME flag is not needed. However, other utilities might incorrectly assume that the library updates access times for them.
Investigating whether access time needs to be manually updated in other utilities is TODO.
When doing a ntfclone-restore from stdin and stdin is then closed,
ntfsclone will loop forever:
$ cat corrupt_image.gz | gzip -d | ntfsclone -r -O somedisk -
With this patch the io_all() loop will return an error when the
input-stream is closed.
- Library no longer perform time updates, only provide API for this
- Remove ntfs_inode_update_{a,}time() and introduce ntfs_inode_update_times()
- Make ntfsmount properly update times
- ntfs_delete() now takes pointer to pointer to ntfs_inode for while to delete and closes inode only in cases no more hard links left to file
and include --with-uuid[=PFX] and --without-uuid options. (Anton)
- configure.ac: Set language to C. (Anton)
- mkntfs: Always set default cluster size to 4096 bytes regardless of
volume size. This is what Windows Vista does and it makes perfect
sense from a performance point of view. (Anton)
- ntfsclone: Redefine image format version number to be the image
format version and not the NTFS version of the imaged volume which is
totally useless. (Anton)
index allocation attributes as well. This further decreases the
compressed metadata image size by 10-25% and more importantly it
eliminates non-interesting ntfscmp differences.
increases the compressed image sizes by only 0.3-0.8% but ntfsclone creates
now the exact same metadata images as mkntfs, which fact can be used for QA.
is not legal (but happens to work on Linux) to do proper
low-level file descriptor mangling which is portable. (Anton)
- Add test/runlist-data to EXTRA_DIST so it gets included in the
distribution otherwise make test fails on released sources. Solution
is not perfect as it also adds the test/runlist-data/CVS directory
but it will do at least for me. (Anton)
volume.[hc]::ntfs_libntfs_version() which returns a pointer to a
static const string of the libntfs verion, i.e. at the moment this is
"8.0.0". This required moving the version specifications from
libntfs/Makefile.am to configure.ac. This should hopefully have the
sideeffect that I will remember to increment it when incrementing the
ntfsprogs version number when making a release given the two are
right under one another. (Anton)
- Change ALL utilities to display the libntfs version they are running
on. This should make debugging easier in the case that people are
running mismatched utilities/library. (Anton)
latest ntfsprogs snapshot. Includes,
- 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 as "BadSectoR\0". Thanks to Krishna Mohan Gundu for his help.
- ntfsclone: fixed an off-by-one error during --metadata in function
wipe_data().
Szaka
(Logical change 1.699)
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)
(Logical change 1.691)
bad sectors (dying disks) can be rescued. The content of the cluster
having bad sectors is filled by character '2' and the start of the
cluster is marked by "BadClusteR".
(Logical change 1.682)