aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ntfs/mft.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/ntfs/mft.c')
-rw-r--r--fs/ntfs/mft.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/fs/ntfs/mft.c b/fs/ntfs/mft.c
index 15df34f62038..5577fc6e190f 100644
--- a/fs/ntfs/mft.c
+++ b/fs/ntfs/mft.c
@@ -1952,20 +1952,21 @@ restore_undo_alloc:
1952 NVolSetErrors(vol); 1952 NVolSetErrors(vol);
1953 return ret; 1953 return ret;
1954 } 1954 }
1955 a = ctx->attr; 1955 ctx->attr->data.non_resident.highest_vcn =
1956 a->data.non_resident.highest_vcn = cpu_to_sle64(old_last_vcn - 1); 1956 cpu_to_sle64(old_last_vcn - 1);
1957undo_alloc: 1957undo_alloc:
1958 if (ntfs_cluster_free(mft_ni, old_last_vcn, -1) < 0) { 1958 if (ntfs_cluster_free(mft_ni, old_last_vcn, -1, ctx) < 0) {
1959 ntfs_error(vol->sb, "Failed to free clusters from mft data " 1959 ntfs_error(vol->sb, "Failed to free clusters from mft data "
1960 "attribute.%s", es); 1960 "attribute.%s", es);
1961 NVolSetErrors(vol); 1961 NVolSetErrors(vol);
1962 } 1962 }
1963 a = ctx->attr;
1963 if (ntfs_rl_truncate_nolock(vol, &mft_ni->runlist, old_last_vcn)) { 1964 if (ntfs_rl_truncate_nolock(vol, &mft_ni->runlist, old_last_vcn)) {
1964 ntfs_error(vol->sb, "Failed to truncate mft data attribute " 1965 ntfs_error(vol->sb, "Failed to truncate mft data attribute "
1965 "runlist.%s", es); 1966 "runlist.%s", es);
1966 NVolSetErrors(vol); 1967 NVolSetErrors(vol);
1967 } 1968 }
1968 if (mp_rebuilt) { 1969 if (mp_rebuilt && !IS_ERR(ctx->mrec)) {
1969 if (ntfs_mapping_pairs_build(vol, (u8*)a + le16_to_cpu( 1970 if (ntfs_mapping_pairs_build(vol, (u8*)a + le16_to_cpu(
1970 a->data.non_resident.mapping_pairs_offset), 1971 a->data.non_resident.mapping_pairs_offset),
1971 old_alen - le16_to_cpu( 1972 old_alen - le16_to_cpu(
@@ -1982,6 +1983,10 @@ undo_alloc:
1982 } 1983 }
1983 flush_dcache_mft_record_page(ctx->ntfs_ino); 1984 flush_dcache_mft_record_page(ctx->ntfs_ino);
1984 mark_mft_record_dirty(ctx->ntfs_ino); 1985 mark_mft_record_dirty(ctx->ntfs_ino);
1986 } else if (IS_ERR(ctx->mrec)) {
1987 ntfs_error(vol->sb, "Failed to restore attribute search "
1988 "context.%s", es);
1989 NVolSetErrors(vol);
1985 } 1990 }
1986 if (ctx) 1991 if (ctx)
1987 ntfs_attr_put_search_ctx(ctx); 1992 ntfs_attr_put_search_ctx(ctx);