Applicable release versions: AP, R83
|Description||also called GFE, a state representing structural inconsistency within a certain "group" of a file.
GFE's are exception conditions and primarily caused by the following:
- a non-planned system shutdown: this could entail a system power-outage, a system crash, or when the power to the system is inadvertently turned off (without first having been performed a "shutdown" necessary to guarantee synchronization of the virtual memory.) Normally, this only results in a problem if the hard disk was busy immediately prior to the outage and wasn't able to completely reflect some of the unwritten changes that existed in its memory to the physical disk.
- indiscriminately clearing group locks (see clear-group-locks verb) can open a failure window potentially causing a condition where two processes are simultaneously modifying the same internal structures, each unaware of the other.
- overriding built-in file-protections when using "delete-file" opens a window for problems. Normally the system traps the condition of attempting to delete a file that is actively open by another process, but for compatibility with older R83 releases the user and/or programmer have the option of overriding this "warning" condition.
- incorrect use of the System Debugger. The System Debugger gives the user total control of all the virtual file space and internal control tables used by the system. This is a lot of power, and it is recommended that caution be used by the person examining or changing spaces containing critical structures. See section on the System Debugger for a description of its commands as well as how to disable its use.
When a process encounters a GFE, the Pick System invokes the "GFE handler" to allow the process to attempt to resolve the condition before continuing. Each user can be configured as to whether or not the system should automatically correct the GFE condition or stop and prompt the operator to choose the method for correction. This feature is controlled by the presence of "m" in the options attribute in the "users" file. Subject to change, the current system-wide default is 'to prompt the user' for their intended action.
The Pick file system is comprised of items in files, with each file being divided into one or more groups in order to allow more efficient access to the items. Each group is consists of one or more linked frames of virtual space used to hold the items, or in some cases, pointers to the items. Each item stored in the group also has a small amount of additional information associated with it, called the "item header". The determination of which item goes into which group is based on a "hashing" algorithm that first calculates a checksum using the item's id and then performs a modulo function based on the number of groups that are in a file (called the "file's modulo".) More than one item may hash to the same group, in which case the group becomes a potentially endless chain of items and/or item pointers, with a well allocated file not exceeding one virtual frame per group. Memory used in Pick for both file storage and workspace is actually mapped into the physical disks in static units called frames (typically sized 1K to 4K, depending on the implementation). Since the main computer doesn't work directly with this physical disk space, it is necessary for it to first be loaded into a temporary high-speed memory for accessing and performing any necessary changes to it before writing these changes back to the disk. The Pick Virtual Memory Manager is responsible for bringing these "physical disk" frames into real memory and then writing those that are modified back to disk. Additionally, ownership locks are asserted throughout the system on the items in files, on their groups, etc. to prevent another process from making changes to the above structures when someone else is viewing the same.
In summary, any problem where the system is unable to properly associate or perform any one of the above, can manifest itself as a GFE.