ST(4) Manuel du programmeur Linux ST(4) NOM st - Lecteur de bandes SCSI. SYNOPSIS #include <sys/mtio.h> int ioctl(int fd, int request [, (void *)arg3]); int ioctl(int fd, MTIOCTOP, (struct mtop *)mt_cmd); int ioctl(int fd, MTIOCGET, (struct mtget *)mt_status); int ioctl(int fd, MTIOCPOS, (struct mtpos *)mt_pos); DESCRIPTION Le driver st fournit une interface vers un grand nombre de lecteurs de bandes SCSI. Actuellement, ce driver prend le contrle de tous les priphriques dtects de type "accs squentiel". Le driver st utilise un numro majeur valant 9. Chaque priphrique utilise huit numros mineurs. Les 5 bits de poids faibles des numros mineurs sont assigns squentiellement dans l'ordre de dtection. Les numros mineurs peuvent tre groups en deux ensembles de quatre nombres : les numros mineurs principaux des priphriques (auto-rewind), n, et les numros mineurs des priphriques "no-rewind" (n+ 128). Les priphriques ouverts avec le numro principal recevront une commande REWIND la fermeture. Les priphriques ouverts avec le numro "no-rewind" ne la recevront pas. (Notez qu'essayer de posi- tionner la bande un priphrique auto-rewind en utilisant, par exem- ple, mt ne conduit pas au rsultat dsir : la bande est nouveau rembobine aprs la commande mt et la commande suivante prend effet ds le dbut de la bande. Au sein de chaque groupe, 4 numros mineurs sont disponibles pour dfinir des priphriques avec des caractristiques diffrentes (taille de bloc, compression, densit...) Lorsque le systme dmarre, seul le premier priphrique est disponible. Les 3 autres sont activs lorsque les caractristiques par dfaut sont dfinies (voir plus bas). (En modifiant les constantes la compilation, on peut modifier la rpartition entre le nombre maximal de lecteurs de bandes et le nombre de numros mineurs pour chaque lecteur. Les allo- cations par dfaut permettent de contrler 32 lecteurs de bandes, alors qu'il est possible de contrler jusqu' 64 lecteurs avec deux numros mineurs pour les options diffrentes. Les fichiers spciaux sont crs typiquement ainsi : mknod(1,2) -m 660 /dev/st0 c 9 0 mknod(1,2) -m 660 /dev/st0l c 9 32 mknod(1,2) -m 660 /dev/st0m c 9 64 mknod(1,2) -m 660 /dev/st0a c 9 96 mknod(1,2) -m 660 /dev/nst0 c 9 128 mknod(1,2) -m 660 /dev/nst0l c 9 160 mknod(1,2) -m 660 /dev/nst0m c 9 192 mknod(1,2) -m 660 /dev/nst0a c 9 224 Il n'existe pas de priphriques blocs correspondants. Le driver utilise une mmoire tampon interne qui doit tre assez large pour contenir au moins un bloc de donnes de bande. Dans les noyaux prcdents le 2.1.121, le buffer tait allou sous forme de bloc continu. Ceci limitait la taille de bloc au plus grand espace con- tigu disponible pour l'allocation du noyau. Cette limite est actuelle- ment de 128 Ko pour les architecture 32 bits et 254 Ko pour les 64 bits. Dans les noyaux plus rcents, le driver alloue la mmoire tam- pon en plusieurs parties si ncessaire. Par dfaut le nombre maximal de parties est 16. Ceci signifie que la taille maximale de bloc est trs grande (2 Mo si l'allocation de 16 blocs de 128 Ko russit). La taille de la mmoire tampon interne est dtermine par une con- stante la compilation du noyau, que l'on peut craser par une option de dmarrage du systme. De plus, le driver essaie d'allouer un buffer temporaire plus grand lors de son excution si cela s'avre ncessaire. Toutefois l'allocation l'excution de grands blocs contigus peut chouer, et il vaut mieux ne pas compter dessus avec les noyaux antrieurs au 2.1.121. Le driver ne supporte pas spcifiquement un type ou une marque de lecteur de bande. Aprs le dmarrage du systme, les options du priphriques sont dfinies par le micro-code du priphrique. Par exemple si celui-ci rclame un mode de blocs fixes, le driver de ban- des utilisera ce mode. Les options peuvent tre modifies par des appels ioctl() explicites, et restent effectives lorsque le priphrique est ferm puis rouvert. La configuration des options affecte aussi bien les priphriques auto-rewind que les non-rewind. Des options diffrentes peuvent tre fournies pour diffrents priphriques au sein du sous-groupe de quatre. Les options prennent effet quand le priphrique est ouvert. Par exemple un administrateur peut dfinir un dispositif qui crit en mode blocs fixes avec une certaine taille, et un qui crit avec des blocs de longueurs variables (si le priphrique accepte les deux modes). Le driver supporte les partitions de bandes si elles sont accept(2,8)es par le lecteur. (Notez que les partitions de bande n'ont rien voir avec les partitions de disques. Une bande partitionne peut tre vue comme un ensemble de bandes logiques dans le mme support). Le sup- port des partitions doit tre activ par un ioctl. L'emplacement de la bande est sauvegard au sein de chaque partition au cours des changements de partitions. La partition utilise pour les oprations suivantes est slectionne avec un ioctl. Le changement de partition est excut au moment de la prochaine opration bande pour viter les mouvements inutiles de la bande. Le nombre maximal de partitions sur une bande est dfini par une constante la compilation (4 l'origine). Le driver contient un ioctl qui peut formater une bande avec une ou deux partitions. Le fichier spcial de priphrique /dev/tape est gnralement un lien symbolique, ou mme un lien matriel sur le lecteur de bandes par dfaut. TRANSFERT DES DONNES Le driver accepte un fonctionnement aussi bien dans un mode de blocs fixes que dans un mode de blocs de longueur variable (si c'est accept(2,8) par le lecteur). En mode de blocs fixes, le priphrique crit les blocs de la taille indique et la taille des blocs ne dpend pas de la quantit de donnes transmise lors de l'appel systme. Dans le mode de longueur variable, un bloc de donne est crit chaque appel systme write(1,2) et le nombre d'octets transmis indique la taille du bloc correspondant sur la bande. Notez que les blocs sur bande ne contiennent aucune information sur le mode d'criture utilis. En lecture, la seule chose importante est d'utiliser une commande qui accepte la taille du bloc sur bande. En mode variable, le nombre d'octets lire n'a pas besoin de corre- spondre exactement la taille du bloc sur bande. Si le nombre demand est plus grand que la taille du bloc suivant sur la bande, l'appel systme renverra la quantit de donnes effectivement lues. Si la taille de bloc est plus grande que le nombre demand, l'appel systme renverra la quantit voulue, et le reste des donnes est oubli. En mode fixe, le nombre d'octets demand peut tre arbitraire si la mmoire tampon est active, ou un multiple de la taille de bloc si ce tampon est dsactiv. Les noyaux antrieurs au 2.1.121 permettent l'criture avec un nombre quelconque si les tampons sont activs. Dans tous les autres cas (y compris les noyaux plus rcents) le nombre d'octets crire doit tre un multiple de la taille des blocs. Une marque est automatique crite sur la bande si la dernire opration avant fermeture tait une criture. Lorsqu'une telle marque est rencontre en lecture, les choses suiv- antes se produisent. S'il reste des donnes dans le tampon, lorsqu'on trouve la marque, les donnes en mmoire sont renvoyes. La lecture suivante renvoie zro octets. La lecture suivante renvoie les donnes du fichier suivant. La fin des donnes enregistres est signal(2,7)e par un retour de zro octets pour deux appels successifs en lecture. Le troisime appel renvoie une erreur. IOCTLS Le driver supporte trois requtes ioctl. Les requtes non reconnues par st sont transmises au contrleur SCSI. Les dfinitions ci- dessous sont extraites de /usr/include/linux/mtio.h: MTIOCTOP - Effectue une opration sur la bande. Cette requte prend un argument du type (struct mtop *) indiquant l'opration effectuer. Certains contrleurs ne permettent pas toutes les oprations. Le contrleur renvoie une erreur EIO s'il n'accepte pas l'opration. /* Structure MTIOCTOP - pour les oprations sur bande */ struct mtop { short mt_op; /* oprations dfinies ci-dessous */ int mt_count; /* combien d'oprations */ }; Oprations sur bande magntique lors d'une utilisation normale : [NDT] Je conserve les termes de filemark, et setmark dfaut de ter- mes prcis en franais. MTBSF Reculer la bande de mt_count filemarks. MTBSFM Reculer la bande de mt_count filemarks. Repositionner la bande sur le ct EOT de la dernire filemark. MTBSR Reculer la bande de mt_count enregistrements (blocs bande). MTBSS Reculer la bande de mt_count setmarks. MTCOMPRESSION Valider la compression des donnes sur bande dans le lecteur si mt_count est non-nul, et dsactiver la com- pression si mt_count est nul. Cette commande utilise la page MODE 15 support par la plupart des DATs. MTEOM Aller la fin des enregistrements (ajouter des fichiers). MTERASE Effacer la bande. MTFSF Avancer la bande de mt_count filemarks. MTFSFM Avancer la bande de mt_count filemarks. Positionner la bande du ct BOT de la dernire filemark. MTFSR Avancer de mt_count enregistrements (blocs bande). MTFSS Avancer de mt_count setmarks. MTLOAD Excuter la commande de chargement SCSI. Un cas partic- ulier se prsenter avec certains chargeurs automatiques HP. Si mt_count correspond somme de la constante MT_ST_HPLOADER_OFFSET et d'un nombre, ce dernier est envoy au pilote pour contrler le chargeur automa- tique. MTLOCK Verrouiller la porte du lecteur de bande. MTMKPART Formater la bande en une ou deux partitions. Si mt_count est non-nul, il correspond la taille de la premire partition, et la seconde partition correspond au reste de la bande. Si mt_count est nul, la bande n'est formate qu'en une seule partition. Cette commande n'est autorise que si le support de partitionnement est activ pour le lecteur (voir MT_ST_CAN_PARTITIONS plus bas). MTNOP Ne rien faire - Vider les buffers du driver - A utiliser avant de lire le statut avec MTIOCGET. MTOFFL Rembobiner la bande et teindre le lecteur. MTRESET Rinitialiser le lecteur. MTRETEN Retendre la bande. MTREW Rembobiner la bande. MTSEEK Rechercher sur la bande le bloc numro mt_count. Cette opration ncessite soit un contrleur SCSI-2 qui sup- porte la commande LOCATE (adresse spcifique au priphrique), soit un lecteur SCSI-1 compatible Tand- berg (Tandberg, Archive Viper, Wangtek, ... ). Le numro de bloc devrait toujours tre un numro ren- voy prcdemment par MTIOCPOS si les adresses spcifiques au lecteur sont utilises. MTSETBLK Positionner la longueur de blocs du lecteur la valeur spcifie dans mt_count. Une longueur de bloc nulle place le lecteur dans le mode de blocs de tailles vari- ables. MTSETDENSITY Fixe la densit de la bande celle code dans mt_count. Les codes des densits accept(2,8)es par un lecteur sont disponibles dans la documentation de celui- ci. MTSETPART La partition active devient celle indique par mt_count . Les partitions sont numrotes depuis zro. Cette commande n'est autorise que si le support de partition- nement est activ pour le lecteur (voir MT_ST_CAN_PARTI- TIONS plus bas). MTUNLOAD Excuter la commande de dchargement SCSI (n'jecte pas la bande). MTUNLOCK Dverrouiller la porte du lecteur de bande. MTWEOF crire mt_count filemarks. MTWSM crire mt_count setmarks. Fonctions de configuration du lecteur de bande magntique (pour le Super-Utilisateur) : MTSETDRVBUFFER Positionner diverses options du contrleur ou du lecteur en fonction des bits encods dans mt_count. Ces options concer- nent le type de buffer du lecteur, 13 options boolennes du contrleur, le seuil d'criture du buffer, les valeurs par dfaut des tailles de blocs et de densit, ainsi que les dlais (noyaux >= 2.1). Une fonction n'agit que sur un seul des lments de la liste ci-dessus la fois. Une valeur ayant ses 4 bits de poids forts 0 sera utilise pour indiquer le type de buffer du lecteur. Les types de buffer sont : 0 Le contrleur ne renverra pas le statut BON en crit- ure avant que les donnes ne soient rellement crites sur le support. 1 Le contrleur peut renvoyer le statut BON en criture ds que les donnes ont t transmises aux buffers internes du lecteur de bande. 2 Le contrleur peut renvoyer le statut BON en criture ds que les donnes ont t transmises aux buffers internes du lecteur de bande, si toutes les critures prcdentes des buffers sur le support se sont droules correctement. Pour contrler le seuil d'criture, on doit inclure dans mt_count la constante MT_ST_WRITE_THRESHOLD associe avec le nombre de blocs dans les 28 bits de poids faibles par un OU binaire ( | ). Le nombre de blocs concerne des blocs de 1024 octets, et non pas la taille physique des blocs sur la bande. Le seuil ne peut pas excder la taille des buffers internes du contrleur. (voir DESCRIPTION, plus bas). Pour valider ou invalider les options boolennes, la valeur mt_count doit inclure l'une des constantes MT_ST_BOOLEANS MT_ST_SETBOOLEANS, MT_ST_CLEARBOOLEANS, ou MT_ST_DEFBOOLEANS associes par un OU binaire avec une combinaison des options dcrites ci-dessous. Avec MT_ST_BOOLEANS les options sont dfinies avec les valeurs indiques. Avec MT_ST_SETBOOLEANS les options sont actives slectivement et inhibes avec MT_ST_DEFBOOLEANS. Les options par dfaut pour un contrleur de bande sont choisies avec MT_ST_DEFBOOLEANS. Un priphrique non-actif (par exemple avec un numro mineur de 32 ou 160) est activ lorsque les options par dfaut sont dfinies pour la premire fois. Un priphrique actif hrite des options non fixes explicitement du priphrique actif au dmarrage. Les options boolennes sont : MT_ST_BUFFER_WRITES (Dfaut: vrai) oprations d'criture dans la mmoire tampon en mode de blocs fixes. Si cette option est invalide, et si l'enregistreur utilise une longueur de bloc fixe, toutes les oprations d'criture doivent se faire avec une longueur multiple de celle du bloc. Cette option doit tre fausse pour crer des archives multi-volumes fiables. MT_ST_ASYNC_WRITES (Dfaut: vrai) Quand cette option est valide, les oprations d'criture retournent immdiatement si les donnes tiennent dans le buffer du driver, sans attendre que celles-ci soient effectivement transmises au lecteur de bande. Le seuil du buffer d'criture dtermine le taux de remplissage du buffer avant d'effectuer une com- mande SCSI. Toute erreur renvoye par le priphrique sera conserve jusqu' l'opration suivante. Cette option doit tre fausse pour crer des archives multi-volumes fiables. MT_ST_READ_AHEAD (Dfaut: vrai) Cette option indique au driver de fournir un cache en lecture, ainsi qu'une lecture anticipe des donnes en mode de blocs fixes. Si cette option est invalide, et que le lecteur utilise une taille de blocs fixe, toutes les oprations de lecture doivent se faire avec une taille multiple de celle du bloc. MT_ST_TWO_FM (Dfaut: faux) Cette option modifie le comportement du driver quand un fichier est ferm. L'attitude normale consiste crire une seule filemark, nanmoins si cette option est valide, le driver crira deux filemarks et replacera la tte au-dessus de la seconde. Note: Cette option ne doit pas tre utilise avec les lecteurs de bandes QIC car ils ne sont pas capables d'craser une filemark. Ces lecteurs dtectent la fin des donnes enregistres en cherchant de la bande vierge la place des deux filemarks conscutives habituelles. La plupart des autres lecteurs courants dtectent galement la prsence de bande vierge, aussi l'utilisation des deux filemarks n'est gnrale- ment utile que lors d'change de bandes avec d'autres systmes. MT_ST_DEBUGGING (Dfaut: faux) Cette option valide les divers messages de dbogage du driver, si celui-ci a t compil avec la constante DEBUG ayant une valeur non-nulle). MT_ST_FAST_EOM (Dfaut: faux) Cette option indique que les oprations MTEOM doivent tre envoyes directement au lecteur, ce qui peut acclrer les oprations, mais aussi faire perdre au driver le compte des pistes du fichier en cours, nor- malement renvoy par la requte MTIOCGET. Si MT_ST_FAST_EOM est fausse, le contrleur rpondra une requte MTEOM en sautant en avant de fichiers en fichiers. MT_ST_AUTO_LOCK (Dfaut: faux) Lorsque cette option est vraie, la porte du lecteur est verrouille lorsque le fichier priphrique est ouvert, et dverrouille lorsque le priphrique est referm. MT_ST_DEF_WRITES (Dfaut: faux) Les options de bande (taille de bloc, mode, compres- sion...) peuvent varier lorsque l'on passe d'un priphrique li un lecteur un autre priphrique correspondant au mme lecteur. Cette option dfinit si les changements sont fournis au pilote en utilisant les commandes SCSI, et si les capacits d'auto-dtection du lecteur sont fiables. Si l'option est fausse, le pilote envoie les commandes SCSI immdiatement lorsque le priphrique change. Si cette option est vraie, les commandes SCSI ne sont pas envoyes avant une demande d'criture. Dans ce cas, le micro-code est habilit dtecter la structure de la bande lors de la lecture, et les commandes SCSI ne sont utilises que pour tre srs que la bande soit crite correctement. MT_ST_CAN_BSR (Dfaut: faux) Lorsque la lecture anticipe est utilise, la bande doit parfois tre ramene en arrire en position cor- recte lors de la fermeture du priphrique, et on utilise alors la commande SCSI pour sauter en arrire par dessus les enregistrements. Certains anciens lecteurs ne traitent pas correctement cette commande, et cette option permet d'en avertir le pilote. Le rsultat final est qu'une bande avec bloc fixes et lecture anticipe peut tre mal positionne dans un fichier lors de la fermeture du priphrique. MT_ST_NO_BLKLIMS (Dfaut: faux) Certains lecteurs n'acceptent pas la commande de lecture des limites de blocs. Si l'on utilise cette option, le pilote n'invoque pas cette commande. L'inconvnient est que le pilote ne peut pas vrifier, avant d'envoyer des commandes, si la taille de bloc choisie est accept(2,8)e par le lecteur. MT_ST_CAN_PARTITIONS (Dfaut: faux) Cette option active le support des partitions multiples sur une bande. Cette option s'applique tous les priphriques lis au lecteur. MT_ST_SCSI2LOGICAL (Dfaut: faux) Cette option indique au pilote d'utiliser les adresses de blocs logiques dfinies dans le standard SCSI-2, lors de oprations de positionnement et de lecture de la position (aussi bien lors des commandes MTSEEK et MTIOCPOS que lors des changements de partitions). Sinon il utilise les adresses spcifiques au priphrique. Il est trs recommand d'activer cette option si le lecteur supporte les adresses logiques car elles conti- ennent galement les filemarks. Il existe d'ailleurs quelques lecteurs qui ne supportent que les adresses logiques. MT_ST_SYSV (Dfaut: faux) Lorsque cette option est valide, les priphriques de bande utilisent la smantique Systme V. Sinon ils utilisent la smantique BSD. La diffrence principale est le comportement lors de la fermeture d'un priphrique en lecture. Avec Systme V, la bande est positionne en avant la suite de la filemark suiv- ante si cela n'a pas dj eu lieu lors de la lecture. Dans la smantique BSD, la position ne change pas. EXEMPLE struct mtop mt_cmd; mt_cmd.mt_op = MTSETDRVBUFFER; mt_cmd.mt_count = MT_ST_BOOLEANS | MT_ST_BUFFER_WRITES | MT_ST_ASYNC_WRITES; ioctl(fd, MTIOCTOP, &mt_cmd); La taille de bloc par dfaut pour un priphrique peut tre configure avec MT_ST_DEF_BLKSIZE et le code de densit par dfaut avec MT_ST_DEFDENSITY. Les valeurs des paramtres sont associes par un OU logique avec le code opratoire. Avec les noyaux 2.1.x et ultrieurs, la valeur de dlai maxi- mum peut tre fournie avec la sous-commande MT_ST_SET_TIMEOUT associe par OU avec le dlai en seconde. Le dlai long (utilis pour les rembobinages ou les commandes pouvant durer longtemps) peut tre configur avec MT_ST_SET_LONG_TIMEOUT. Les valeurs par dfaut du noyau sont trs longues pour tre sre qu'une commande valide ne soit jamais interrompue pour dpassement de dlai, et ceci quelque soit le lecteur. A cause de cela, le pilote peut parfois sembler gel alors qu'il est en attente de dpassement de dlai. Ces commandes permet- tent donc de fixer des valeurs plus pratiques pour un lecteur donn. Les dlais fixs pour un priphrique s'appliquent tous les priphriques lis au mme lecteur. MTIOCGET - Obtenir le statut Cette requte prend un argument du type (struct mtget *). /* Structure pour MTIOCGET - Statut d'une bande magntique */ struct mtget { long mt_type; long mt_resid; /* Les registres suivants dpendent du matriel */ long mt_dsreg; long mt_gstat; long mt_erreg; /* Ces deux derniers champs sont parfois inutiliss */ daddr_t mt_fileno; daddr_t mt_blkno; }; mt_type Le fichier d'en-tte dfinit plusieurs valeurs pour mt_type, mais le driver actuel renvoie uniquement les types gnriques MT_ISSCSI1 (lecteur SCSI-1 gnrique) et MT_ISSCSI2 (lecteur SCSI-2 gnrique). mt_resid contient le numro de partition courante. mt_dsreg renvoie la configuration actuelle de la longueur de bloc (dans les 24 bits de poids faibles) et la densit (dans les 8 bits de poids forts). Ces champs sont dfinis par MT_ST_BLKSIZE_SHIFT, MT_ST_BLKSIZE_MASK, MT_ST_DEN- SITY_SHIFT, et MT_ST_DENSITY_MASK. mt_gstat renvoie des informations gnriques de statut (indpen- dants du priphrique). Le fichier d'en-tte dfinit les macros suivantes pour tester les bits de statut : GMT_EOF(x) : La bande est positionne juste aprs une filemark (toujours faux aprs une opration MTSEEK). GMT_BOT(x) : La bande est positionne juste au dbut du premier fichier (toujours faux aprs une opration MTSEEK). GMT_EOT(x) : Une opration a atteint la fin physique de la bande (End Of Tape). GMT_SM(x) : La bande est positionne sur une setmark (tou- jours faux aprs une opration MTSEEK). GMT_EOD(x) : La bande est positionne la fin des donnes enregistres. GMT_WR_PROT(x) : La bande est protge en criture. Pour certains enregistreurs ceci signifie qu'ils ne support- ent pas l'criture sur ce type de bande. GMT_ONLINE(x) : La dernire opration open(2,3,n)() a trouv le lecteur prt agir, avec une bande l'intrieur. GMT_D_6250(x), GMT_D_1600(x), GMT_D_800(x) : Ces informa- tions "gnriques" de statut renvoient la densit actuelle des lecteurs de bandes 9-pistes " seulement. GMT_DR_OPEN(x): Le lecteur ne contient pas de bande. GMT_IM_REP_EN(x): Mode de rapport immdiat. Ce bit est activ lorsqu'il n'y a aucune assurance que les donnes aient t physiquement crite sur la bande lors du retour de l'appel systme. Le bit est zro seulement lorsque le lecteur ne cache pas les donnes et que le pilote est configur pour ne pas faire de cache non plus. mt_erreg Le seul champ dfini dans mt_erreg est le nombre d'erreurs corriges, dans les 16 bits de poids faibles (comme dfini par les masques MT_ST_SOFTERR_SHIFT et MT_ST_SOFTERR_MASK). A cause d'incompatibilits dans les mthodes utilises par les lecteurs pour rendre compte des corrections d'erreur, cette valeur n'est pas toujours fournie (la plu- part des lecteurs ne renvoient pas, par dfaut, les erreurs corriges, mais cela peut tre modifi avec la commande SCSI MODE SELECT). mt_fileno renvoie le numro du fichier en cours (commenant 0). La valeur est mise a -1 si le numro du fichier est inconnu (par exemple aprs un MTBSS ou un MTSEEK). mt_blkno renvoie le numro de bloc (commenant 0) l'intrieur du fichier en cours. Cette valeur est mise -1 quand le numro de bloc est inconnu (par exemple aprs un MTBSF, un MTBSS, ou un MTSEEK). MTIOCPOS - Obtenir la position de la bande Cette requte prend un argument du type (struct mtpos *) et renvoie une valeur, spcifique au lecteur, correspondant au numro de bloc en cours, et qui n'est pas la mme que mt_blkno renvoye par MTIOCGET. Ce lecteur doit tre un SCSI-2 qui supporte la commande READ POSITION ou un lecteur SCSI-1 compatible Tandberg (Tandberg, Archive Viper, Wangtek, ... ). /* Structure pour commande MTIOCPOS - Obtenir la position */ struct mtpos { long mt_blkno; /* current block number */ }; VALEUR RENVOYE EIO L'opration demande a chou. ENOSPC Une criture a chou car la fin de bande a t atteinte. EACCES Tentative d'criture ou d'effacement sur une bande protge en criture. (Ceci ne peut pas tre dtect lors de open(2,3,n)().) EFAULT Le paramtre de commande pointe en dehors de la mmoire adressable par le processus appelant. ENXIO Durant l'ouverture, le lecteur de bande n'existe pas. EBUSY Le priphrique est dj utilis ou le driver n'a pas assez de mmoire. EOVERFLOW Tentative de lire ou d'crire un bloc de longueur vari- able plus grand que la taille des buffers internes du contrleur. EINVAL Un appel systme ioctl() a un argument illgal, ou la taille de bloc demande tait incorrecte. ENOSYS Appel systme ioctl() inconnu. EROFS On tente l'ouverture avec O_WRONLY ou O_RDWR alors que la bande est protge en criture. FICHIERS /dev/st* : Les lecteurs de bandes SCSI rembobinage automatique /dev/nst* : Les lecteurs de bandes SCSI sans rembobinage automatique AUTEUR Le pilote a t crit par Kai Mkisara (Kai.Makisara@metla.fi) partir d'un pilote crit par Dwayne Forsyth. Plusieurs autres person- nes ont galement collabor l'criture du pilote. VOIR AUSSI mt(1) Le fichier README.st dans les sources du noyau contient les informa- tions les plus rcentes propos du pilote et de ses capacits de configuration. NOTES 1. Lors d'un change de donnes entre systmes diffrents, il faut se mettre d'accord sur la taille des blocs. Les paramtres d'un lecteur aprs le dmarrage sont souvent diffrents de ceux qu'utilisent la plupart des autres systmes d'exploitation. La plu- part utilisent un mode de blocs de longueur variable si le lecteur le permet. Ceci concerne la plupart des lecteurs modernes, y compris les DATs, les lecteurs 8mm hlicodaux, les DLTs... Il peut tre judi- cieux d'utiliser ces lecteurs en mode de longueur variable sous Linux aussi (en utilisant MTSETLK ou MTSETDEFBLK au dmarrage), du moins lors de l'change de donnes avec des systmes d'exploitation diffrents. L'inconvnient de ceci est qu'il faut utiliser une taille de bloc assez grande pour obtenir des taux de transfert accept- able sur un bus SCSI. 2. Beaucoup de programmes (comme tar par exemple) permettent l'util- isateur de spcifier le facteur de blocage sur la ligne de commande. Notez que ceci dtermine la taille de bloc physique uniquement en mode de bloc de taille variable. 3. Pour utiliser les lecteurs de bandes SCSI, le pilote SCSI de base, un pilote d'adaptateur SCSI et le pilote du lecteur SCSI doivent tous tre configurs dans le noyau ou chargs comme modules. Si le pilote des bandes SCSI n'est pas prsent, le lecteur est reconnu, mais le support de bande dcrit dans cette page n'est pas disponible. 4. Le pilote crit les messages d'erreur sur la console(4,n) et/ou les fichiers de journalisation (log). Les codes SENSE prsents dans cer- tains messages sont automatiquement traduits en texte si les messages SCSI complets sont activs dans la configuration du noyau. COPYRIGHT 1995 Robert K. Nichols. 1999 Kai Mkisara. TRADUCTION Christophe Blaess, 1996-2003. LDP 21 juillet 2003 ST(4)