|
|
1.1 ! root 1: #include <stdio.h> ! 2: #include <stddef.h> ! 3: #include <string.h> ! 4: #include "scsi.h" ! 5: #include "juke.h" ! 6: ! 7: j_unload(char *vol_id, char *buf) ! 8: { ! 9: Side side; ! 10: int i, sh, dr; ! 11: char disk_to_unload[256]; ! 12: ! 13: if(j_rdshelves(buf)) /* read in shelf names */ ! 14: return(-1); ! 15: if(j_getstatus(buf)) /* get the jukebox status */ ! 16: return(-1); ! 17: /* now check which side we want */ ! 18: ! 19: strcpy(disk_to_unload, vol_id); ! 20: side = SIDEA; ! 21: sh = j_shelfof(disk_to_unload); ! 22: if(sh < 0){ ! 23: sprintf(buf, "can not find vol_id %s", disk_to_unload); ! 24: return(-1); ! 25: } ! 26: dr = -1; ! 27: for(i = 0; i < NLUN; i++){ ! 28: printf("dr:.. %d ", i); ! 29: printf(" rtsh: %d\n", j_status.lun[i].retshelf); ! 30: ! 31: /* is sh = retshelf? */ ! 32: ! 33: if( (j_status.lun[i].retshelf>>1 == sh) || ! 34: (j_status.lun[i].retshelf == sh*2+1) ){ dr = i; ! 35: break; ! 36: } } ! 37: printf("dr: %d, sh: %d, side: %d, i: %d\n", dr, sh, side, i); ! 38: if (dr == -1){ ! 39: sprintf(buf, "no drive has vol_id %s", disk_to_unload); ! 40: return(-1); ! 41: } ! 42: /* put vol_id in it's shelf*/ ! 43: if (j_drive_to_shelf(dr, sh, side, buf) >= 0){ ! 44: sprintf(buf,"/dev/worm%d\n", dr); ! 45: return(0); ! 46: } ! 47: return(-1); ! 48: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.