home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga MA Magazine 1998 #6
/
amigamamagazinepolishissue1998.iso
/
disks
/
tools
/
vdisk
/
vdisk.doc
< prev
next >
Wrap
Text File
|
1997-06-22
|
15KB
|
331 lines
$VER: vdisk.doc 2.7 (22.6.97) (C) 1994-1997 by Etienne Vogt
INTRODUCTION
vdisk.device is a driver for a recoverable RAM disk. It started 2 years ago as
a hack of ASDG-RAM (written by Perry S. Kivolowitz). These hacked versions
(1.3 -> 1.12) were not distributed.
As of version 2.0, it has been entirely rewritten, with many new features added :
- Up to 16 units with virtually unlimited size (512 MB)
- Dynamic memory allocation and (optionnaly) deallocation
- Full support of all AmigaDOS Filesystems.
- Will survive the heaviest system crashes as long as its own data is not
corrupted.
- In case of a recovery failure, the cause can be reported by a support command.
VDisk requires AmigaDOS 2.04 or higher (V37). It has been heavily tested on
the following configurations :
- A500 68000 ECS , 1 Mb Chip 2 Mb Fast 1.5 Mb False Fast , WB 3.1
20 Mb IDE-XT + 170 Mb SCSI HDs
- A3000 68030 ECS, 2 Mb Chip 8 Mb Fast , WB 2.04 -> 3.1
100 Mb + 1 Gb SCSI HDs
- A500 68040(PP&S) ECS , 1 Mb Chip 2 Mb Fast16 8 Mb Fast32 , WB 2.04
50 Mb SCSI HD
- A4000 68040 AGA, 2 Mb Chip 8 Mb Fast , WB 3.0
120 Mb + 500 Mb IDE HDs
- A4000 68040 AGA, 2 Mb Chip 8 Mb Fast , WB 3.0
250 Mb IDE HD + 1Gb SCSI-II HDs
- A1200 68EC020 AGA, 2 Mb Chip 5 Mb Fast , WB 3.0
60 Mb IDE HD + 100 Mb SCSI HDs
- A4000T 68060(Phase5) AGA, 2 Mb Chip 8 Mb Fast , WB 3.1
1Gb SCSI-II HD
VDisk has been developed independently from StatRam (Another ASDG-RAM based
ram drive written by Richard Waspe and Nicola Salmoria)
DISTRIBUTION
VDisk is Freely Distributable Copyrighted Software (FreeWare).
Some restrictions from the original ASDG-RAM package remains :
This package :
- Must be copied only in the form of the original lha archive, as uploaded
to aminet by the author.
- May not be distributed by any commercial software or hardware vendor.
- May not be sold under any guise.
- Must contain the following copyright information.
vdisk.device, Copyright 1994 by Etienne Vogt.
Inspired from asdg.vdisk.device, Copyright 1987 by Perry S. Kivolowitz
(ASDG Incorporated)
Specifically :
No maker or seller of Amiga expansion hardware or software may distribute
this software in any way. No reseller of public domain software may
distribute this software either (as this in NOT in the public domain).
The only acceptable means of distribution is by networks, bbs's and by
non-profit user groups. Distribution MUST BE FREE (except for media
costs plus a token amount covering only shipping and handling).
This software may no longer be included on any aminet CD, as long as the
freebie policy for contributing authors is not reestablished.
DISCLAIMER
This software is provided "as is" without any warranty, either expressed or
implied. By using this software, you accept the entire risk as to its quality
and performance.
INSTALLATION
- Copy the file 'vdisk.device' to your DEVS: directory .
NEVER CHANGE THE NAME OF THIS FILE !!!
- Copy the support commands CleanRamDisk, DeleteRamDisk, VDStat to your
C: directory or whatever you like. You may also copy the .info files.
- If you have OS 2.1 or higher, copy the file VD0 to your DEVS:DOSDrivers
directory. You may change the name of this file to whatever you want.
You may edit this file to change some parameters of the recoverable RAM
disk, such as its maximum size. (see below)
- If you have OS 2.0 , join the file VD0.mountlist to your DEVS:MountList
file. You may change the name of the mountlist entry to whatever you want.
You may also edit the mountlist record to change some parameters of the
recoverable RAM disk (see below). Make sure you do not have another
entry with the same name in your mountlist (especially if you use the
old asdg-ram).
Add a 'Mount VD0:' command to your S:User-Startup. If you have 1 Mb or
less memory, it may be wise to put this command at the beginning of your
Startup-Sequence to minimize the risk of recovery failures.
- If you still have OS 1.x, well... It's time to upgrade !
- After that, reboot your Amiga. If all is OK, you should see an icon named
VD-RAM-00 on your Workbench.
NOTE : If you are upgrading from an earlier version of vdisk.device, you
*MUST* issue a 'DeleteRamDisk' command on all active units before
rebooting the system, or unexpected things may happen.
See the support commands below.
CHANGING MOUNTFILE PARAMETERS
WARNING : Changing any other MountFile parameter than those listed below will
cause the vdisk.device to cease to function and to wake up the
GURU with recoverable alert number $50000005 !
After changing ANY parameter of an already active unit, you MUST
issue a 'DeleteRamDisk' command on it before rebooting the system,
or unexpected things may happen.
- DOS device name : Unlike the original asdg.vdisk.device, you can give any
name you want to the recoverable RAM disk. Just change the name of the
mountfile (OS 2.1+) or the mountlist entry (OS 2.0). The default name is
VD0 . It is recommended that the last character be a digit equal to the
unit number.
- Unit : This is the device unit number. You can have several recoverable
RAM disks by having different mountfiles with different values for this
keyword. Valid numbers are 0 to 15, giving a possible total of 16 units.
- Flags : Different options may be selected here. You combine them by adding
their respective value (ex. to enable autocleaning and allocretry, use
Flags = 3).
A Flags value of 1 (bit 0 set) will enable autocleaning on the corresponding
unit. This means that the memory used by the ram disk will automatically
decrease when you delete files in it. This also implies that you cannot use
tools like DiskSalv to recover the deleted files. If autocleaning is not
set, you must use the CleanRamDisk support command to free memory after
deleting files. Cleaning may still happen if the system runs low on memory.
It is recommended that you keep AutoCleaning enabled.
A flags value of 2 (bit 1 set) will enable allocretry. This causes the
vdisk unit to retry failed memory allocations with less restrictive
conditions than those specified in the BufMemType parameter. The allocation
retry will use any public memory available. This is only useful if you have
set specific memory requirements in the BufMemType parameter (to force use
of 16 bit fast ram for ex.) and don't want an error to be returned if this
specific memory type is exhausted.
- HighCyl : This is used to specify the maximum size the recoverable RAM disk
is allowed to use. When this size is reached, you will get a 'Volume is full'
requester. Note that unlike RAD, vdisk.device does only allocate memory when
you write files into it.
Do not set this too high ! If you run out of memory before reaching the
maximum size of the RAM disk, you will get a 'write error' requester and
the files in the RAM disk might become corrupt !!!
The recommended maximum size is one fourth of your total FAST RAM.
The HighCyl parameter must be set to an ODD VALUE. HighCyl + 1 is the total
number of 'virtual tracks' usable by the RAM disk. One virtual track has
a size of 8 Kb (16 sectors of 512 bytes).
The default HighCyl value of 63 thus corresponds to a maximum size of
(63 + 1) * 8 = 512 Kb. For a 2 Mb RAM disk, you will set HighCyl to 255.
The maximum allowed value is 65533. This corresponds to 512 Mb.
Remember this value *MUST* be odd !
- Buffers : This is the number of buffers used by the File System to speed up
disk accesses. With a RAM disk, it may actually slow it down, so you'd
better not change this.
- BufMemType : Strictly speaking, this is the type of memory used by the
File System for its internal buffers. For vdisk.device, is also affects
the type of memory allocated to store data you write into it.
You can combine different attributes by adding their respective values.
A value of 1 (MEMF_PUBLIC) means public memory (shared and non virtual)
and is always used.
2 (MEMF_CHIP) is chip memory (not recommended).
4 (MEMF_FAST) is fast memory.
256 (MEMF_LOCAL) is motherboard memory that should survive a reset. You
can try to set this flag if vdisk loses its content after reboot.
512 (MEMF_24BITDMA) is memory accessible via 24 bit addresses. This
can be 16 or 32 bit RAM though.
1024 (MEMF_KICK) is memory that can be used at boot time. This is only
defined in KickStart 3.0+.
The default value is 5 which means public fast memory.
- DosType : The type of File System used. Possible values are :
0x444f5300 : Old File System. Slow and not really needed since vdisk.device
has its own checksums.
0x444f5301 : Fast File System. The default.
0x444f5302 : International Old File System. OS 2.1 + only.
0x444f5303 : International Fast File System. OS 2.1 +
0x444f5304 : Directory Caching Old File System. OS 3.0 +
0x444f5305 : Directory Caching Fast File System. OS 3.0 +
International mode may be used if you run OS 2.1 or higher. Directory Caching
is not a good idea since it will slow down the RAM disk.
- Activate : Instructs the mount command to start the device immediately when
set to 1. If you set it to 0, you must add some command in your Startup
that accesses VD0 to start it really.
SUPPORT COMMANDS
CleanRamDisk :
This command is used to force a vdisk unit to free deleted file space. It
is generally not needed with autocleaning units.
This command may be used from Workbench (but you can't use the switches).
Select the virtual disk icon, then double-click on the CleanRamDisk icon.
Usage : CleanRamDisk DEVICE,UNIT/K/N,NOFREECHIP/S,REBUILD/S,FREEBOOT/S
DEVICE : This is the AmigaDOS device name (ex. VD0: )
UNIT : Alternatively to the AmigaDOS name, you may specify the unit number
(ex. UNIT 0)
NOFREECHIP : When BufMemType is set to 1, CleanRamDisk normally attempts to
free some CHIP memory by relocating virtual tracks located in
CHIP RAM to FAST RAM. This switch inhibits this behaviour.
REBUILD : When a vdisk unit has read errors on it (generally caused by some
bad software that writes over someone else's memory), it will be
lost at the next reboot (which in this case may come soon).
This switch forces a rebuild of all internal checksums so that
the unit will be kept alive after reset. Some data will still be
bad, but you should be able to save most of it.
FREEBOOT : If something has been written in the RAM disk's boot blocks
(unused at this time), virtual track 0 will be locked in memory.
This switch will mark the boot blocks as free, thus enabling the
Cleaning routine to flush track 0 out.
DeleteRamDisk :
This command deletes a virtual disk unit entirely (as RemRAD for RAD). All
memory used is freed and the File System is inhibited. (VD0:BUSY)
This command may be used from Workbench. Select the virtual disk icon, then
double-click on the DeleteRamDisk icon. A requester will ask you for confir-
mation.
You *MUST* use this command when you change the mountfile parameters of
an active unit. You must also delete all active units when you upgrade to
a newer version of vdisk.device.
Usage : DeleteRamDisk DEVICE,UNIT/K/N
DEVICE : This is the AmigaDOS device name (ex. VD0: )
UNIT : Alternatively to the AmigaDOS name, you may specify the unit number
(ex. UNIT 0)
VDStat :
This command is used to get information about a virtual disk unit that
failed to recover its data after reboot. It is mainly intended for beta
testers, so it cannot be used from Workbench.
Recovery error 2 (Root Structure not found) will always show at power-up.
Usage : VDStat DEVICE,UNIT/K/N,FULL/S
DEVICE : This is the AmigaDOS device name (ex. VD0: )
UNIT : Alternatively to the AmigaDOS name, you may specify the unit number
(ex. UNIT 0)
FULL : This switch causes more information to be displayed. It is mainly
used for debugging purposes.
Recovery error codes :
1 (Deleted Unit) : This will show after reboot when a unit is deleted by
the DeleteRamDisk command.
2 (Root structure not found) : This will always show up at power-up. It may
also happen if something else (like RAD) allocates memory in reverse order
before vdisk.device starts. To avoid this, always mount a vdisk unit before
any ramdrive units. Other possibilities are a bad program trashing memory
or the presence of non reset proof memory in the system (see the known
problems section).
This error indicates that all units were lost.
3 (Bad Root Structure Checksum) : The Root Structure has been corrupted.
Bad program or memory around ! All units were lost.
4 (Bad Sector CheckSum) : Either a bad program has trashed your data, or
you have a memory problem.
5 (Track not found) : Bad virtual track. This may happen if the unit maximum
size is set too big, your memory is heavily fragmented or a bad program
trashed some memory.
6 (Reallocation Failure) : Everything seems OK, but memory couldn't be
reallocated with AllocAbs(). This is a bad one that will also wake up
the guru with recoverable alert number $50010003. If you have access
to E-Mail, please send a bug report to me (address below).
7 (Unit Structure not found) : Unit structure got trashed. Bad program or
memory.
8 (Bad Unit Structure Checksum) : Corrupted unit structure. Bad Program or
memory.
9 (Unknown Error) : How did you get this one ?
CHANGES
V 2.4 : First released version.
V 2.5 : - vdisk now retries failed memory allocations with MEMF_PUBLIC
when BufMemType was set to allocate a specific type of
memory. This should cause less write errors.
- French doc included after numerous requests.
V 2.6 : - The kludge for safely using $C00000 memory has been entirely
rewritten. It does no longer cause fragmentation of this
memory.
- The Root structure is now allocated in MEMF_KICK memory
(MEMF_LOCAL for OS 2). This should help vdisk to survive
reboot on systems with non autoconfig 32bit memory.
- Added the allocretry Flags option.
- vdisk will now allow memory flushing to occur when it
tries to allocate more memory.
V 2.7 : - Fixed a stupid bug that caused crashes when odd unit numbers
were used on a 68000 system.
KNOWN PROBLEMS
It seems that certain accelerator boards have 32 bit memory that does
not keep its content after a reset. This will cause vdisk to lose its
files.
If this happens to you, try to set the BufMemType parameter to 1024
(if you have OS 3+) or 256 (for OS 2) to prevent vdisk from using this
32 bit memory. Also don't set the allocretry bit in Flags.
CONTACTING THE AUTHOR
I can be reached by E-Mail at the following address : Etienne.Vogt@obspm.fr
Bug reports must include the complete hardware and software configuration,
including any third party software that was running in the background.
Etienne Vogt, 22/7/1997