Hey, Downloading the latest did the trick. Thanks.
I agree that the data replacement operations are easier, but the bigger problems are when an attribute is added/deleted, because those operations shift the data for the following redo operations. I would love to hear the rational behind all this, extremely complicated, journal scheme from Microsoft, but that would probably never happen :-) I asked this because I am trying to debug a partition I created when crashing a Windows10 machine (you can find it here: https://s3-eu-west-1.amazonaws.com/gilbucket1/ntfs-disks/ntfs_shutdown_win10.raw). You can see that operation 239b94 fails the recovery process. The undo data of operation 239b94 is "0f" which differs from the "a0" found at 0x360. I think maybe the operation was targeting the "0f" at 0x3d8. Note that, an earlier operation, for the same inode (45), operation 229f2a (DeleteIndexEntryRoot) - is not executed because the undo data doesn't match. It has a length of 0x78 which is exactly 0x3d8-0x360 I tried to trace back, to see why operation 229f2a find the "wrong" data - perhaps an earlier operation also failed to run - but I didn't find anything definitive yet. Regards, Gil On Fri, Jun 16, 2017 at 10:59 AM, Jean-Pierre André <jean-pierre.an...@wanadoo.fr> wrote: > > Hi, > > Update... > > Jean-Pierre André wrote: >> >> Gil Barash via ntfs-3g-devel wrote: >> >>> Hey, >>> >>> I have two follow up issues: > > > [...] > >>> >>> --- 2 -- >>> General question about redo process: >>> In change_resident_expect (called by redo_update_root_vcn, for >>> example) we chose not to apply the redo data if the current buffer >>> state doesn't match the undo data. Note that the operation is >>> considered successful in this case. >> >> >> I think the reasoning is a follows : >> >> - the old state was A >> - an update is made, the state is now B >> - a second update is made, the state is now C >> - C is synced to disk, but a failure occurs before >> the syncing is recorded in the log. >> >> When restarting, both updates have to be replayed, >> and when applying the first one, the state on disk >> is not the undo state (which is A), so it is correct >> to apply the update (whose result will be overwritten >> by the second update). >> >> Avoiding the updates if the undo data does not match >> the state on disk probably leads to the same result, >> but IMHO it is safer to make sure the final state is >> what the redo data says. Other updates which overlap >> could be intertwined and they would be processed >> incorrectly when not applied to the same state as in >> the initial execution. > > > Well, actually the current code is doing the opposite > (that is applying the update if the current state matches > the undo data). > > I have run my tests again after reversing the rule (so > applying the update if the current state does not match > the redo data), and the tests fail when the second > update destroys the attribute (e.g. deleting a file). > In this situation there is nothing the redo data can > be compared against (more exactly the current state is > meaningless and should not be compared to redo data). > There is not enough information to rebuild the intermediate > state, the only possible action is doing nothing, and > some criterion is needed to go this way. > > Jean-Pierre > > >>> Can you please provide some small explanation or direct me to some >>> form of documentation as to why it is OK to skip an operation. >> >> >> I would also be interested to get some form of >> documentation... >> >> Regards >> >> Jean-Pierre >> >>> I suspect it might cause some kind of "chain-reaction" where future >>> operations on this "cluster" would also be skipped because they expect >>> to see the data as it should have been after applying the redo >>> operation. >>> >>> Thanks, >>> Gil > > > ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ ntfs-3g-devel mailing list ntfs-3g-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ntfs-3g-devel