| 936 | |
| 937 | |
| 938 | BOOLEAN |
| 939 | Ext2AddMcbMetaExts ( |
| 940 | IN PEXT2_VCB Vcb, |
| 941 | IN PEXT2_MCB Mcb, |
| 942 | IN ULONG Block, |
| 943 | IN ULONG Length |
| 944 | ) |
| 945 | { |
| 946 | ULONG TriedTimes = 0; |
| 947 | LONGLONG Lbn = Block + 1; |
| 948 | BOOLEAN rc = TRUE; |
| 949 | |
| 950 | Again: |
| 951 | |
| 952 | __try { |
| 953 | |
| 954 | rc = FsRtlAddLargeMcbEntry( |
| 955 | &Mcb->MetaExts, |
| 956 | Lbn, |
| 957 | Lbn, |
| 958 | Length |
| 959 | ); |
| 960 | |
| 961 | } __except (EXCEPTION_EXECUTE_HANDLER) { |
| 962 | |
| 963 | DbgBreak(); |
| 964 | rc = FALSE; |
| 965 | } |
| 966 | |
| 967 | if (!rc && ++TriedTimes < 10) { |
| 968 | Ext2Sleep(TriedTimes * 100); |
| 969 | goto Again; |
| 970 | } |
| 971 | |
| 972 | DEBUG(DL_EXT, ("Ext2AddMcbMetaExts: Block: %xh-%xh rc=%d Runs=%u\n", Block, |
| 973 | Length, rc, FsRtlNumberOfRunsInLargeMcb(&Mcb->MetaExts))); |
| 974 | |
| 975 | if (rc) { |
| 976 | Ext2CheckExtent(&Mcb->MetaExts, Lbn, Lbn, Length, TRUE); |
| 977 | } |
| 978 | |
| 979 | return rc; |
| 980 | } |
| 981 | |
| 982 | BOOLEAN |
| 983 | Ext2RemoveMcbMetaExts ( |
no test coverage detected