+ /* Determine free_start & free_next */
+ if (maxl >= minl)
+ {
+ if (maxh >= minh)
+ {
+ if (maxl == minh - 1)
+ {
+ disk->free_start = minl;
+ disk->free_next = maxh;
+ }
+ else
+ {
+ ASSERT(minl == 0);
+ ASSERT(maxh == (MAX_PAGE_ADDR | MARK_HALF_SIZE));
+
+ disk->free_start = minh;
+ disk->free_next = maxl;
+ }
+ }
+ else
+ {
+ disk->free_start = minl;
+ disk->free_next = maxl;
+ }
+ }
+ else if (maxh >= minh)
+ {
+ disk->free_start = minh;
+ disk->free_next = maxh;
+ }
+ else
+ {
+ TRACEMSG("No valid marked free block found\n");
+ disk->free_start = 0;
+ disk->free_next = -1;
+ }
+
+ /* free_next should contain the first usable address */
+ disk->free_next++;
+
+ TRACEMSG("Free markers:\n minl %u\n maxl %u\n minh %u\n maxh %u\n free_start %u\n free_next %u\n",
+ minl, maxl, minh, maxh, disk->free_start, disk->free_next);
+
+