Support resizing into the middle of a $MFT $DATA extent

This commit is contained in:
szaka 2005-07-25 20:40:07 +00:00
parent 34c676fad3
commit 7943e71620
4 changed files with 10 additions and 15 deletions

View File

@ -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.

View File

@ -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)

View File

@ -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

View File

@ -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);
}
}