ServerMagic 4.0 for NetWare tips and tricks

Maybe you've also experienced that resizing volumes in Powerquest's Server Magic 4.0 for NetWare is doing a lengthy full verify, no matter what are the settings at the "Disk Verify" option. Well, that is a bug. I notified PowerQuest about it, but they didn't seem to care much. However, if you need a solution, here is a quick workaround:

First, we need ServerMagic for NetWare, version 4.0. File details:
	SMAGIC   NLM     2,177,486 08-16-00   4:00a
	PowerQuest ServerMagic
	NLM Version 4.00, 2000 August 16
	Copyright=Copyright 1994-2000, PowerQuest Corp. All rights reserved.

This version was on the download site at PowerQuest and now is also packaged with Symantec ServerMagic 6.5, because 6.5 is not working on 3.12/3.2 (and on 4.x???).
"ServerMagic 6.5 for NetWare includes ServerMagic 4.0 providing unprecedented support for NetWare 3.x to 6.5 systems."

Even though you can download ServerMagic, you need an activation key, as it serializes itself based on the NetWare Server's serial number, etc. Without that, you're limited to 100MB. (Getting the activation key for ServerMagic using NetWare's internal debugger is out of the scope of this document. Sorry folks.)

So you're already in the middle of the migration and you want to disable disk verify now?

1) load smagic.nlm
2) enter to debugger (2*shifts + left ALT + ESC)
3) get smagic.nlm start code address by: .m smag* [enter]
4) type: c <code address> + 61834 [enter]
5) you will see: 74 (if you don't see 74, exit without changes by going to step 7)
6) type: EB [enter]
7) type: . [enter]
8) type: g [enter]

Now don't forget to set "verify off" for the disks, as other checks could be done at other routines.

You can also "patch" SMAGIC.NLM and then save time and trouble later on, you should do change a byte located at 399823 (decimal) from 74 to EB (hex) using any hex editor, like hiew or using POKE.EXE, my friend's utility. (See read-only flag if it fails).

Poke                             (C) 1991 COMPUNIX SOFTWARE

SMAGIC.NLM is 2177486 bytes long.

  I am going to make the following changes:

    399823:  74 to EB

Are you sure? (Y/N)  Y

A little more technical stuff for the caring ones

For example, at <code address>+50DB0 you find:
[NetWare3/4] - SMAGIC.NLM|W?GetCheckForBadSects$:PREFERENCES$n(uc)us
[NetWare5/6] - SMAGIC.NLM|GetCheckForBadSects$PREFERENCES

Before calling that, usually there is: push SMAGIC.NLM|w?gPrefs$npn$PREFERENCES$$
This variable looks like this:
 02 00 00 00 | 28 00 00 00 || F9 FF FF FF
                              ^           HDD1/HDD2
                              F9=..1001 - OFF  OFF
                              FB=..1011 - ON   OFF
                              FD=..1101 - OFF  ON
                              FF=..1111 - ON   ON

Segment resize:
1st call calls "CheckVolumeSegment$n()i;" (AL=drive number)
then it calls SMAGIC.NLM|w?enVolSegResize$n(pn$PARTITION_INFO$$pn$NETWSI_LIMITS$$uli)i (code+7FD30)
You need to change the conditional jump to an unconditional at:
<code address>+61834 (7406) = <-- EB06

Other routine names I forgot why I wrote down:
I promise I'll look into it again I feel the need or anyone interested.

Comments, suggestion, flame, praise to:

version / modifiedDescription
v0.01 - 2003.05.01Original document
v0.02 - 2003.05.20Notified PowerQuest (got answer too)
v1.00 - 2005.04.25published on the web
v1.01 - 2006.03.20updated symantec's link

[main page]