Search Text         
Search Tips?
Search By   And   Or   Boolean   Exact Match   TA #
Search In   Whole Doc   Keywords Sort By  
Product   Sub Product  

View Technical Articles (sorted by Product) New/Updated in the last:    7 days      14 days      30 days             
TA # Date Created Date Updated Resolved Issue?   Printer Friendly Version of This TA   Print Article
  E-mail This TA   E-mail Article
109447 06/26/1998 08:32 AM 06/08/2000 03:46 PM
Yes No
Kernel relink fails with "too many array initializers" after adding a SCSI tape unit.
Keywords
openserver osr5 504 5.0.4 5.0.5 505 5.0.6 506 open server scsi mkdev tape kernel relink link unix dat cartridge drive add removed removal after deconfigured fails failure space.h too many array initializers missing } illegal lhs assignment operator line 70 goodbye link-edit idmkunix rs504c release supplement /usr/lib/mkdev .scsitape gen_Stp_route ENGREF LTD-246-1313 ERGREF 500466
Release
SCO OpenServer Enterprise System Release 5.0.4, 5.0.5
SCO OpenServer Host System Release 5.0.4, 5.0.5
SCO OpenServer Desktop System Release 5.0.4, 5.0.5

NOTE:
          This article is known to apply to an SCO OpenServer system with SCO
OpenServer Release Supplement 504C installed. However, it is
possible that it also applies to SCO OpenServer 5.0.4 systems
without RS504C. It has also been reported on OpenServer 5.0.5
systems.

Problem
          A SCSI tape has been added to an SCO OpenServer 5.0.4 system.  When
          the /etc/conf/cf.d/link_unix command is run to relink the kernel,
          it fails with these error messages:

                ...
                ...
                Do you wish to create a new kernel now? (y/n) y

                The UNIX Operating System will now be rebuilt.
                This will take a few minutes.  Please wait.

                Root for this system build is /

                "/var/opt/K/SCO/link/1.1.0Eb/etc/conf/pack.d/Stp/space.h",
                line 70: too many array(2) initializers
                "/var/opt/K/SCO/link/1.1.0Eb/etc/conf/pack.d/Stp/space.h",
                line 70: too many array(2) initializers
                "/var/opt/K/SCO/link/1.1.0Eb/etc/conf/pack.d/Stp/space.h",
                line 70: too many array initializers; missing } ?
                "/var/opt/K/SCO/link/1.1.0Eb/etc/conf/pack.d/Stp/space.h",
                line 70: illegal lhs of assignment operator
                "/var/opt/K/SCO/link/1.1.0Eb/etc/conf/pack.d/Stp/space.h",
                line 70: unacceptable operand of &
                "/var/opt/K/SCO/link/1.1.0Eb/etc/conf/pack.d/Stp/space.h",
                line 70: cannot recover from earlier errors: goodbye!
                ERROR: '/var/opt/K/SCO/link/1.1.0Eb/etc/conf/pack.d/Stp/
                space.c' will not compile properly

                i386ld space.o fatal: Can't open file /var/opt/K/SCO/link/
                1.1.0Eb/etc/conf/pack.d/Stp/space.o for input
                ERROR: Can not link-edit unix

          If "mkdev tape" is run, it reports two tape units present, but
          there was only one unit configured on the system. For example:

                ...
                ...

                The current tape configuration is:

                     Unit       Description

                       0         Generic SCSI-1 / SCSI-2 tape drive
                       1         Generic SCSI-1 / SCSI-2 tape drive

          If you try to remove the last unit listed, the following message
          appears:

                ...
                Enter the unit number you wish to remove
                        or enter q to return to main menu: 1
                Invalid choice, please enter a number between 0 and 0

                The current configuration is:
                     Unit       Description

                       0         Generic SCSI-1 / SCSI-2 tape drive
                       1         Generic SCSI-1 / SCSI-2 tape drive

                Enter the unit number you wish to remove
                ...
                ...


          The "sdevice", "mdevice" and "mscsi" files in the "/etc/conf/cf.d"
          directory only show one Stp unit listed.

          This problem has been observed where a tape unit has been configured
          and removed several times over a period of time. The same errors
          have also been observed on a system that initially showed the error
          messages listed in the technical article referenced below in the
          "SEE ALSO" section.

CAUSE:
          The "/etc/conf/pack.d/Stp/space.h" file contains two entries for
          "gen_Stp_route":

                ...
                Stp_tape_config_t       Stp_tape_cfg[STP_NDRIVES] = {
                /* BEGIN SCO_STP ENHANCEMENTS */
                { 0, 0, -1, -1, gen_Stp_route },
                { 0, 0, -1, -1, gen_Stp_route },
                /* END SCO_STP ENHANCEMENTS */
                ...
                ...


Solution
          Edit the "space.h" file and remove the duplicate entry so it looks
          like:

                ...
                Stp_tape_config_t       Stp_tape_cfg[STP_NDRIVES] = {
                /* BEGIN SCO_STP ENHANCEMENTS */
                { 0, 0, -1, -1, gen_Stp_route },
                /* END SCO_STP ENHANCEMENTS */
                ...

          The kernel should now relink without error using the "./link_unix"
          command in the "/etc/conf/cf.d" directory.

SEE ALSO:
          Technical Article 105776, "Kernel relink fails after all SCSI tapes are removed
          from the link kit."

Back to Search ResultsBack to Search Results