diff --git a/ChangeLog b/ChangeLog index e9ef1810..507173f9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -10,7 +10,9 @@ xx/xx/xxxx - 1.12.0-WIP record attributes at AT_DATA of $BadClus and $Bitmap. In practice, there aren't non-resident attributes after them so this bug, introduced in 1.11.0, shouldn't have ever caused data loss. (Szaka) - - ntfsresize: support relocation of $MFT with $ATTRIBUTE_LIST. (Szaka) + - ntfsresize: support relocation of $MFT with $ATTRIBUTE_LIST. (Szaka) + - ntfsresize: support resizing into the middle of a $MFT $DATA + extent. (Szaka) 20/07/2005 - 1.11.1 - Fix several ntfsmount bugs. diff --git a/TODO.ntfsprogs b/TODO.ntfsprogs index a5557154..7f95de06 100644 --- a/TODO.ntfsprogs +++ b/TODO.ntfsprogs @@ -73,7 +73,6 @@ Thanks, ************** High priority - - support splitting up $MFT runs - move ntfs consistency check to libntfs (for ntfsck, ntfsclone, etc) - use different exit codes (e.g. corrupt volume detected, unsupported case, bad sectors, etc) diff --git a/ntfsprogs/ntfsresize.8.in b/ntfsprogs/ntfsresize.8.in index cd191efd..2024eea6 100644 --- a/ntfsprogs/ntfsresize.8.in +++ b/ntfsprogs/ntfsresize.8.in @@ -183,9 +183,9 @@ to approve your post. .PP There are a few very rarely met restrictions at present: filesystems having unknown bad sectors, relocation -of the first MFT extent and resizing in the middle of some metadata -in some cases aren't supported yet. These cases are detected and -resizing is refused, restricted to a safe size or the closest safe +of the first MFT extent and resizing into the middle of a $MFTMirr extent +aren't supported yet. These cases are detected and +resizing is restricted to a safe size or the closest safe size is displayed. .PP .B Ntfsresize diff --git a/ntfsprogs/ntfsresize.c b/ntfsprogs/ntfsresize.c index 4f614d31..73798205 100644 --- a/ntfsprogs/ntfsresize.c +++ b/ntfsprogs/ntfsresize.c @@ -759,16 +759,10 @@ static void collect_relocation_info(ntfs_resize_t *resize, runlist *rl) start = new_vol_size; len = lcn_length - (new_vol_size - lcn); - if (!opt.info && (inode == FILE_MFT || inode == FILE_MFTMirr)) { - s64 last_lcn; - - err_printf("$MFT%s can't be split up yet. Please try " - "a different size.\n", inode ? "Mirr" : ""); - last_lcn = lcn + lcn_length - 1; - if (!(inode == FILE_MFT && rl->vcn == 0) && - lcn - 1 >= resize->inuse) - __print_advise(resize->vol, lcn - 1); - print_advise(resize->vol, last_lcn); + if (!opt.info && (inode == FILE_MFTMirr)) { + err_printf("$MFTMirr can't be split up yet. Please try " + "a different size.\n"); + print_advise(resize->vol, lcn + lcn_length - 1); exit(1); } }