DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦4d01db1e9⟧ Ada Source

    Length: 6144 (0x1800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, procedure Do_Backup, seg_0283f3

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« 
        └─⟦this⟧ 

E3 Source Code



with Daemon;
with Io;
with Log;
with Message;
with Profile;
with Scheduler;
with System_Backup;
with Time_Utilities;

procedure Do_Backup (Variety     : System_Backup.Kind := System_Backup.Full;
                     Starting_At : String             := "") is


    Delay_For                : Duration;
    Warning                  : Duration;
    Start_Message            : Boolean;
    Finish_Message           : Boolean;
    Got_Snapshot_Info        : Boolean         := False;
    Got_Scheduler_Info       : Boolean         := False;
    Memory_Scheduling        : Integer;
    Memory_Scheduling_String : constant String := "Memory_Scheduling";


    procedure Backup_Finishing (Was_Successful : Boolean) is
    begin
        if Got_Snapshot_Info then
            -- Restore snapshot warning to previous setting
            Got_Snapshot_Info := False;
            Daemon.Snapshot_Warning_Message (Interval => Warning);
            Daemon.Snapshot_Start_Message (Start_Message);
            Daemon.Snapshot_Finish_Message (Finish_Message);
        end if;

        if Got_Scheduler_Info then
            -- Restore scheduler settings
            Got_Scheduler_Info := False;
            Scheduler.Set (Memory_Scheduling_String, Memory_Scheduling);
        end if;
    end Backup_Finishing;

    procedure Backup_Starting (Is_Full : Boolean) is
    begin

        -- Warn users that backup is starting
        if Is_Full then
            Message.Send_All ("Starting full system backup");
        else
            Message.Send_All ("Starting incremental system backup);");
        end if;

        -- Save current scheduler settings
        Memory_Scheduling  := Scheduler.Get (Memory_Scheduling_String);
        Got_Scheduler_Info := True;
        Scheduler.Set (Memory_Scheduling_String, 0);   -- turn off scheduling

        -- Save current snapshot settings and turn off snapshot warnings.
        Daemon.Get_Snapshot_Settings (Warning, Start_Message, Finish_Message);
        Got_Snapshot_Info := True;
        Daemon.Snapshot_Warning_Message (Interval => 0.0);
        Daemon.Snapshot_Start_Message;
    end Backup_Starting;

    procedure Backup is new System_Backup.Backup_Generic
                               (Backup_Starting, Backup_Finishing);
begin

    if Starting_At'Length > 0 then
        begin
            Delay_For := Time_Utilities.Duration_Until
                            (Time_Utilities.Value (Starting_At));
        exception
            when others =>
                Log.Put_Line ("Invalid starting time value given.",
                              Kind => Profile.Error_Msg);
                return;
        end;
    end if;


    -- Do the backup
    Backup (Variety => Variety, Wait_Until => Starting_At);

    -- Take snapshot to make full backups official; i.e. allow differentials
    Daemon.Run ("Snapshot");
exception
    when others =>
        Io.Put_Line (Io.Current_Error,
                     "Backup failed with an unhandled exception.");
        Backup_Finishing (False);
end Do_Backup;

E3 Meta Data

    nblk1=5
    nid=0
    hdr6=a
        [0x00] rec0=1f rec1=00 rec2=01 rec3=044
        [0x01] rec0=1b rec1=00 rec2=05 rec3=032
        [0x02] rec0=01 rec1=00 rec2=02 rec3=044
        [0x03] rec0=1e rec1=00 rec2=03 rec3=06e
        [0x04] rec0=03 rec1=00 rec2=04 rec3=000
    tail 0x21722327883c171bdd42b 0x42a00088462065003