Using vic (Volume Integrity Check)



This article provides information and usage instructions on the Volume Integrity Check (vic) script, located in the /usr/discreet/io/bin/ directory.

vic verifies the integrity of the data on the framestore. Generally, this tool is used to remove deleted frames, or find unreferenced frames (when used in with fcof).

When you start a Creative Finishing application, a volume integrity check is performed automatically if a previous crash is detected. This check determines if there are any inconsistencies between the clip metadata stored on the system disk and the frames on the  framestore and, when possible, repairs any problems that are found.

How vic Works

The volume integrity check script performs the following actions:

  1. It compiles a list of all frame IDs in the clip libraries on the system disk.
  2. It then queries the framestore to verify the status of each frame, and compares it to the frame ID data in the list.
    Each frame on the framestore has one of three statuses:
    used The frame is used in a clip.
    unused   The frame has been deleted in the application (though it still physically exists on the framestore until that area of the framestore is needed for another frame).
    free The storage associated with the frame ID is no longer available (the frame is no longer recoverable).
  3. If the integrity check detects frames that have IDs in the library but have a status of unused on the framestore, it fixes them by changing their status to used.
  4. If the integrity check discovers empty soft partitions, they are automatically removed.
  5. If the check finds frame IDs in the library list for which there are no corresponding frames on the framestore, it reports them as invalid frames in an error message displayed at the end of the check.
    Invalid frames occur if Stone and Wire was prevented from writing new frames to the framestore during a work session, for example, because of a system failure or power failure.
    Note: By default, Stone and Wire updates itself every 300 seconds or after 2000 changes occur, whichever comes first. A change includes the creation of a new frame or any change made to an existing frame.
    Therefore the maximum amount of work that could be lost from this situation is 300 seconds, or 5 minutes of work.

Running vic Manually

You may need to run vic manually from a terminal in the following scenarios: after a crash, after framestore / project maintenance, or after clip library deletion.

The syntax of the command is:
vic -v <framestore volume> <option>

where <framestore volume> is the the volume that integrity check is required to be executed on. For example, stonefs, stonefs1... stonefs7, and <option> can be one of the following parameters:

-a                         All Volumes.
-d <level>              A verbosity level between 0 and 4. The default is 3.
-l                          Lazy integrity check.
-C                         No content check (only validate volume connections).
-p <project name>   Specifies the project where the Lost_+_Found would be created. The project shall already exist.
-f                          Remove unreferenced frames ( USE WITH CAUTION ).
-r                          Replace lost (red illegal) frames with the LOST frame and flag impacted clips (USE WITH CAUTION ).
-w                         Skip integrity check of audio waveforms.
-s                          Scan libraries and report errors.
                             This parameter has the following additional options:
                                     remote - Identifies libraries containing remote frames.
                                     lost - Identifies libraries containing lost frames  (includes remote if 'remote' not specified).

The following are the most common examples of usage of vic:

vic -v stonefs7 - The normal vic command. This is the command that is executed when the application starts, or wen stone+wire starts.

vic -v stonefs7 -p [project name] - Use this command to send unreferenced frames to a Lost_+_Found library in the project specified in the command.

vic -v stonefs7 -f - Use this command to delete all unreferenced frames automatically instead of sending them to a library.