PROBLEM: (88821, 88908, 88284, 83918, 89778) (PATCH ID: OSF520-065) ******** This patch fixes several problems with the fixdmn utility where under extreme cases, it was possible for fixfdmn to core dump or to terminate with out fixing the domain. These problems included the following: - When the on-disk field xCnt was out of bounds, it could cause the program to core dump. - When a mcell record was larger than the mcell containing it, it could corrupt the following mcell(s). - When the Deferred Delete List (DDL) became corrupted it was possible fixfdmn to exit with out correcting the corruption. - Fixfdmn could cause corruptions if it detected the new on-disk structures involved with AdvFS log isolation. - Fixfdmn could cause corruptions if it detected the new smart store structures. PROBLEM: (90798) (PATCH ID: OSF520-260) ******** Fixfdmn exits prematurely with the message "Can't allocate 0 bytes for group use array" and then instructs user on how to make more memory available, although more memory isn't needed. This occurs when then number of BMT pages containing extents for a file exceeds the number of pages in the fixfdmn cache. A pointer is not reset properly so when the first page read is flushed from cache and then reread later, the pointer to it still points to the previous memory address. This has caused fixfdmn to terminate collecting the extents for the file due to seeing a metadata link of zero which makes it appear to have no extents and then try to allocate memory for arrays of size 0. This problem could also cause fixfdmn to follow incorrect metadata links and possibly corrupt data, but we have only seen the case where the link pointed to was set to zero. PROBLEM: (91648) (PATCH ID: OSF520-370) ******** Fixfdmn currently needs to clear all 512 pages of the transaction log, even on an uncorrupted domain. Now we only need to modify one page of the transaction log. PROBLEM: (90954) (PATCH ID: OSF520-397) ******** Removed code that would change the filesize to be the size of the file extents if the size described by the extents was greater than the filesize rounded up to a page. PROBLEM: (92359, 92403) (PATCH ID: OSF520-391) ******** PROBLEM: Fixfdmn aborts while trying to fix problems in the DDL. PROBLEM: Fixfdmn incorrectly changed domains which had been previosuly mounted on a V5.1B system. PROBLEM: (92284) (PATCH ID: OSF520-380) ******** Fixfdmn could core dump while checking the root tag file or the tag file in a very rare corruption case. PROBLEM: (ZPO150044) (PATCH ID: OSF520-709) ******** Corrections to fixfdmn to: - eliminate coredumps - avoid creating data inconsistencies - avoid improperly diagnosing property lists as corrupt - provide better messaging - perform better consistency checking in directories, tag and mcell freelists. PROBLEM: (92230) (PATCH ID: OSF520-519) ******** If we find a full or previously seen frag group, then the free list is truncated. If any free frag groups happened to be further down the list, they will be found later and added back to the list. This processing is most relevent for very large domains. PROBLEM: (94841, 95664, 95665) (PATCH ID: OSF520-1040) ******** This patch fixes three very rare cases where fixfdmn could either fail to correct a domain or incorrectly make changes to a valid domain. PROBLEM: (95465) (PATCH ID: OSF520-990) ******** This patch fixes a problem were after running fixfdmn the domain is still not mountable, because the count of mcells are incorrect in the RBMT/BMT0. This patch also fixes a problem with fixfdmn were in a rare case it was incorrectly fixing mcell counts on a valid ODSv3 AdvFS domain. In this case the domain is still valid, but metadata will have been changed. The following messages from the fixfdmn log file will appear in this case: 15:26:52 | FOUND | Found corruptions in RBMT/BMT0 log mcell. 15:26:52 | FOUND | Found corruptions in RBMT/BMT0 vol/dom mcell. 15:26:52 | FOUND | Found corruptions in RBMT/BMT0 misc mcell. 15:26:52 | FOUND | Found corruptions in RBMT/BMT0 root tag mcell. 15:26:52 | FOUND | Found corruptions in RBMT/BMT0 log mcell. 15:26:52 | FOUND | Found corruptions in RBMT/BMT0 misc mcell. Note these same log messages can also appear if fixfdmn finds actual corruptions.