Cta-smc output oddity

I’ve noticed that with cta-smc the output is different from smc on Castor when querying the drives. cta-smc says the drive is unloaded when it is loaded -

smc -q D -D 4
4 260 loaded CT1318

cta-smc -q D -D 4
Drive Ordinal Element Addr. Status Vid
4 260 unloaded CT1318

Any reason for this or just a feature?


Hi Tim,

Doesn’t look like much of a feature to me - we’ll take a look.



Hi Tim,

Please could you send us the names and versions of the RPMs you used to install smc and cta-smc. I understand that you may not have used an RPM to install cta-smc so you can leave this out if this is the case. However I definitely want to know the RPM of smc.

Please could you also state which type of tape library you are using, IBM, Spectra or something else.



Hi Tim,

So guessing what the problem is and going into more detail. My guess is that this is the support for Specta libraries. Here is smc the code for printing the status of a drive:

[itctabuild02] ~ > vi CTA/mediachanger/castorrmc/rmc/smc.c
 65 void smc_qdrive_humanPrint(const struct robot_info *const robot_info,
 66   const struct smc_element_info *const element_info, const int numberOfElements,
 67   const int useSpectraLib) {
 68   char *pstatus;
 69   int i;
 70   printf (TEXT_RED "Drive Ordinal\tElement Addr.\t  Status     Vid\n" TEXT_NORMAL);
 71   for (i = 0; i < numberOfElements; i++) {
 72     if (((element_info+i)->state & 0x1) == 0)
 73             pstatus = "free";
 74     else if ((element_info+i)->state & 0x4)
 75             pstatus = "error";
 76     else if ((element_info+i)->state & 0x8 && !useSpectraLib)
 77             pstatus = "unloaded";
 78     else
 79             pstatus = "loaded";
 80     printf ("%13d\t%13d\t%8s  %s\n",
 81             (element_info+i)->element_address-robot_info->device_start,
 82             (element_info+i)->element_address, pstatus,
 83             (element_info+i)->name);
 84   }
 85 }

The output changes based on whether or not the useSpectraLib variable is set to 0 or 1. The value of useSpectraLib is based on the contents of the /etc/castor/castor.conf file for smc and the contents of /etc/cta/cta-smc.conf for cta-smc.

The syntax of /etc/castor/castor.conf for setting useSpectraLib is:

[root@tpsrv338 ~]# grep SMC /etc/castor/castor.conf
[root@tpsrv338 ~]# 

The syntax of /etc/cta/cta-smc.conf is the same:

[root@tpsrv336 ~]# grep SMC /etc/cta/cta-smc.conf 
[root@tpsrv336 ~]# 

Hi Steve, you got it in one. The “SMC LIBRARY_TYPE SPECTRA” has not been configured. It works as expected when I add the line to the config. I’ll get the changes made on the servers.

Thanks again