If start buffer is latest then restart, we update committed LSN with
last record LSN of block (last_end_lsn) while applying action but
forget about it while printing records with -f for investigation
purpose.
Note that while applying actions we use start_buffer to calculate
latest page out of block 2 and block 3 and then from latest take
committed LSN. For -f we don't need buffers so we just compare
directly with committed LSN from restart.
---
ntfsprogs/ntfsrecover.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/ntfsprogs/ntfsrecover.c b/ntfsprogs/ntfsrecover.c
index 567db15..47e01d7 100644
--- a/ntfsprogs/ntfsrecover.c
+++ b/ntfsprogs/ntfsrecover.c
@@ -3720,6 +3720,20 @@ static int walk(CONTEXT *ctx)
}
if (!done) {
buf = nextbuf;
+ if (blk >= RSTBLKS && blk < BASEBLKS) {
+ /* The latest buf may be more recent
+ than restart */
+ rph = &buf->block.record;
+ if ((s64)(le64_to_cpu(rph->last_end_lsn)
+ - committed_lsn) > 0) {
+ committed_lsn =
+ le64_to_cpu(rph->last_end_lsn);
+ if (optv)
+ printf("* Restart page was "
+ "obsolete, updated "
+ "committed lsn\n");
+ }
+ }
if (optv)
printf("\n* block %d at 0x%llx\n",(int)blk,
(long long)loclogblk(ctx, blk));
--
2.4.3
------------------------------------------------------------------------------
Go from Idea to Many App Stores Faster with Intel(R) XDK
Give your users amazing mobile app experiences with Intel(R) XDK.
Use one codebase in this all-in-one HTML5 development environment.
Design, debug & build mobile apps & 2D/3D high-impact games for multiple OSs.
http://pubads.g.doubleclick.net/gampad/clk?id=254741551&iu=/4140
_______________________________________________
ntfs-3g-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ntfs-3g-devel