First step: the common underlying issueI tend to believe that both
the above issue encountered during SortBy and
the issue encountered during FastFill(WithShuffling) are two different consequences of the same underlying problem:
What interpretation gives MyDefrag to “
Error: [5] Access is denied”?
- (a) MyDefrag believes that the file to be moved is not accessible, thus flagging the file as “not movable”
- (b) MyDefrag believes that the target location (i.e. the gap into which the file should be moved) is already occupied by something else
Based on what I could understand from the debug log files, it appears that MyDefrag interprets “Error: [5] Access is denied” as case (a) (at least for all the cases of “Error: [5] Access is denied” I have encountered so far). Is this correct?
Microsoft documentation of the FSCTL_MOVE_FILE control code seems to indicate that “Error: [5] Access is denied” means case (b):
ERROR_ACCESS_DENIED: One or more of the logical clusters to which the file's virtual clusters are to be moved is an allocated cluster.
As a first step, MyDefrag interpretation of “Error: [5] Access is denied” needs to be clarified and fixed. If “Error: [5] Access is denied” can mean sometimes case (a) and other times case (b), than MyDefrag would have to clearly identify which case it is and proceed accordingly.
Once this interpretation problem is fixed, than the issues related to case (b) will naturally become more visible (because of correct interpretation) and thus easier to spot and fix.
Second step: the differences between the SortBy issue and the FastFill(WithShuffling) issueBased on my understanding, both the SortBy issue and the FastFill(WithShuffling) issue are case (b), i.e. part (or all) of the target location is already occupied. However, the reason appears to be different:
- SortBy issue: it appears that MyDefrag is trying to move a whole file into a gap that is narrower than the file size (e.g. moving a 59 clusters file into a 14 clusters wide gap). Although MyDefrag reports in the debug log file that it is moving only a fragment of the file into the gap, other hints in the debug log file seems to indicate that, in fact, MyDefrag is not moving just a fragment but is rather trying to move the whole file into the gap.
- FastFill(WithShuffling) issue: it appears that MyDefrag is trying to move a file to a location that is already occupied. This is based on the following observations in the file MyDefrag_WS.debuglog:
| File to be moved | Target location | Hint that the target location is already occupied | C:\Documents and Settings\henrik\Lokale indstillinger\Temporary Internet Files\Content.IE5\2OIQOJYM\Column2D[2].swf (see line <10'519>) | LCN=921375 (see line <10'520>) | At line <10'529>, one can see that the gap starts at LCN=921376 (i.e. not 921375) | C:\WINDOWS\SoftwareDistribution\Download\cac6588caa53ab75a105faefbbe7bc62\SP3GDR\ieframe.dll (see line <10'603>) | LCN=0 (see line <10'604>) | At line <394>, it is stated that LCN=0 is occupied by unmovable data | C:\WINDOWS\SoftwareDistribution\Download\cac6588caa53ab75a105faefbbe7bc62\SP3GDR\mshtml.dll (see line <10'626>) | LCN=0 (see line <10'627>) | At line <394>, it is stated that LCN=0 is occupied by unmovable data |
|