Se connecter
Se connecter
Inscription
Mot de passe perdu
Connexion:
[Actualités]
Nvidia prévient d'une pénurie de GPU ce trimestre, avec une reprise début 2025
[Actualités]
Les Technos #469 : Un jour sans fin
[Actualités]
Test Farming Simulator 25 (PS5) - Des innovations intéressantes mais des perfor...
[Actualités]
Qualcomm souhaite réduire davantage les prix des PC Windows basés sur ARM
[Actualités]
Finalement, Google préparerait une nouvelle tablette mais la Pixel Tablet 2 ser...
[Actualités]
Windows 10 version 22H2 : erreur de mise à jour et de désinstallation
[Actualités]
OpenAI prépare désormais son propre navigateur
[Actualités]
WhatsApp bat Telegram : les transcriptions des messages vocaux arrivent pour tou...
[Actualités]
Unreal et Unreal Tournament désormais gratuits sur Internet Archive
[Actualités]
Windows 10 : Microsoft affiche des publicités en plein écran pour les PC équi...
[Articles]
Dungeons 4 - Nintendo Switch Edition
[Articles]
The Bridge Curse 2 : The Extrication
[Articles]
Farmagia
[Articles]
I*CHU: Chibi Edition
[Articles]
Farming Simulator 25
[Articles]
Goblin Slayer -Another Adventurer- Nightmare Feast
[Articles]
Deel lance des programmes en marque blanche et pour les revendeurs pour plus de ...
[Articles]
ESET Research : WolfsBane, nouvelle porte dérobée de cyber-espionnage Linux cr...
[Articles]
Devoteam présente son nouveau plan stratégique « AMPLIFY » avec un fort acce...
[Articles]
LEGO Horizon Adventures
Actualités
Lettre d'information
Proposer une actualité
Archives
Actualités
Articles
Programmation
Press Release
Matériel
Logiciels
Livres
Interviews
Derniers commentaires
Jeux Vidéos
XBox One
XBox 360
Wii U
PSP
PS4
PS3
PC
DS
GameCube
3DS
Forum
Derniers messages
Informatique
Fun
Divers
Logithèque
Blogs
Divers
A Propos
Annonceurs
Contact
Recherche
RSS
Editer un article
Titre
Mots Clés
Texte
[size=18] [b]Nom[/b] [/size] st - Lecteur de bandes SCSI. [size=18] [b]Résumé[/b] [/size] .nf [b]#include
[/b] [b][i]int ioctl(int fd , int request [, (void *) arg3 ]);[/i][/b] [b][i]int ioctl(int fd , s-1MTIOCTOPs+1, (struct mtop *) mt_cmd );[/i][/b] [b][i]int ioctl(int fd , s-1MTIOCGETs+1, (struct mtget *) mt_status );[/i][/b] [b][i]int ioctl(int fd , s-1MTIOCPOSs+1, (struct mtpos *) mt_pos );[/i][/b] .fi [size=18] [b]Description[/b] [/size] Le driver [b]st[/b] fournit une interface vers un grand nombre de lecteurs de bandes SCSI. Actuellement, ce driver prend le contrôle de tous les périphériques détectés de type (lqaccès séquentiel(rq. Le driver [b]st[/b] utilise un numéro majeur valant 9. Chaque périphérique utilise huit numéros mineurs. Les 5 bits de poids faibles des numéros mineurs sont assignés séquentiellement dans l'ordre de détection. Les numéros mineurs peuvent être groupés en deux ensembles de quatre nombres : les numéros mineurs principaux des périphériques (auto-rewind), [b]n ,[/b] et les numéros mineurs des périphériques (lqno-rewind(rq [b] ( n + 128).[/b] Les périphériques ouverts avec le numéro principal recevront une commande s-1REWINDs+1 à la fermeture. Les périphériques ouverts avec le numéro (lqno-rewind(rq ne la recevront pas. (Notez qu'essayer de positionner la bande un périphérique auto-rewind en utilisant, par exemple, mt ne conduit pas au résultat désiré : la bande est à nouveau rembobinée après la commande mt et la commande suivante prend effet dès le début de la bande. Au sein de chaque groupe, 4 numéros mineurs sont disponibles pour définir des périphériques avec des caractéristiques différentes (taille de bloc, compression, densité...) Lorsque le système démarre, seul le premier périphérique est disponible. Les 3 autres sont activés lorsque les caractéristiques par défaut sont définies (voir plus bas). (En modifiant les constantes à la compilation, on peut modifier la répartition entre le nombre maximal de lecteurs de bandes et le nombre de numéros mineurs pour chaque lecteur. Les allocations par défaut permettent de contrôler 32 lecteurs de bandes, alors qu'il est possible de contrôler jusqu'à 64 lecteurs avec deux numéros mineurs pour les options différentes. Les fichiers spéciaux sont créés typiquement ainsi :[table][row][col] [/col][col] .nf mknod -m 660 /dev/st0 c 9 0 mknod -m 660 /dev/st0l c 9 32 mknod -m 660 /dev/st0m c 9 64 mknod -m 660 /dev/st0a c 9 96 mknod -m 660 /dev/nst0 c 9 128 mknod -m 660 /dev/nst0l c 9 160 mknod -m 660 /dev/nst0m c 9 192 mknod -m 660 /dev/nst0a c 9 224 .fi[/col][/row][/table] Il n'existe pas de périphériques blocs correspondants. Le driver utilise une mémoire tampon interne qui doit être assez large pour contenir au moins un bloc de données de bande. Dans les noyaux précédents le 2.1.121, le buffer était alloué sous forme de bloc continu. Ceci limitait la taille de bloc au plus grand espace contigu disponible pour l'allocation du noyau. Cette limite est actuellement de 128 Ko pour les architecture 32 bits et 254 Ko pour les 64 bits. Dans les noyaux plus récents, le driver alloue la mémoire tampon en plusieurs parties si nécessaire. Par défaut le nombre maximal de parties est 16. Ceci signifie que la taille maximale de bloc est très grande (2 Mo si l'allocation de 16 blocs de 128 Ko réussit). La taille de la mémoire tampon interne est déterminée par une constante à la compilation du noyau, que l'on peut écraser par une option de démarrage du système. De plus, le driver essaie d'allouer un buffer temporaire plus grand lors de son exécution si cela s'avère nécessaire. Toutefois l'allocation à l'exécution de grands blocs contigus peut échouer, et il vaut mieux ne pas compter dessus avec les noyaux antérieurs au 2.1.121. Le driver ne supporte pas spécifiquement un type ou une marque de lecteur de bande. Après le démarrage du système, les options du périphériques sont définies par le micro-code du périphérique. Par exemple si celui-ci réclame un mode de blocs fixes, le driver de bandes utilisera ce mode. Les options peuvent être modifiées par des appels [b]ioctl()[/b] explicites, et restent effectives lorsque le périphérique est fermé puis rouvert. La configuration des options affecte aussi bien les périphériques auto-rewind que les non-rewind. Des options différentes peuvent être fournies pour différents périphériques au sein du sous-groupe de quatre. Les options prennent effet quand le périphérique est ouvert. Par exemple un administrateur peut définir un dispositif qui écrit en mode blocs fixes avec une certaine taille, et un qui écrit avec des blocs de longueurs variables (si le périphérique accepte les deux modes). Le driver supporte les [b]partitions de bandes[/b] si elles sont acceptées par le lecteur. (Notez que les partitions de bande n'ont rien à voir avec les partitions de disques. Une bande partitionnée peut être vue comme un ensemble de bandes logiques dans le même support). Le support 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 utilisée pour les opérations suivantes est sélectionnée avec un ioctl. Le changement de partition est exécuté au moment de la prochaine opération bande pour éviter les mouvements inutiles de la bande. Le nombre maximal de partitions sur une bande est défini 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 spécial de périphérique [b]/dev/tape[/b] est généralement un lien symbolique, ou même un lien matériel sur le lecteur de bandes par défaut. [size=18] [b]Transfert des donnÉes[/b] [/size] 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é par le lecteur). En mode de blocs fixes, le périphérique écrit les blocs de la taille indiquée et la taille des blocs ne dépend pas de la quantité de données transmise lors de l'appel système. Dans le mode de longueur variable, un bloc de donnée est écrit à chaque appel système write 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 correspondre 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 système renverra la quantité de données effectivement lues. Si la taille de bloc est plus grande que le nombre demandé, l'appel système renverra la quantité voulue, et le reste des données est oublié. En mode fixe, le nombre d'octets demandé peut être arbitraire si la mémoire tampon est activée, ou un multiple de la taille de bloc si ce tampon est désactivé. Les noyaux antérieurs au 2.1.121 permettent l'écriture avec un nombre quelconque si les tampons sont activés. Dans tous les autres cas (y compris les noyaux plus récents) le nombre d'octets à écrire doit être un multiple de la taille des blocs. Une marque est automatique écrite sur la bande si la dernière opération avant fermeture était une écriture. Lorsqu'une telle marque est rencontrée en lecture, les choses suivantes se produisent. S'il reste des données dans le tampon, lorsqu'on trouve la marque, les données en mémoire sont renvoyées. La lecture suivante renvoie zéro octets. La lecture suivante renvoie les données du fichier suivant. La fin des données enregistrées est signalée par un retour de zéro octets pour deux appels successifs en lecture. Le troisième appel renvoie une erreur. [size=18] [b]Ioctls[/b] [/size] Le driver supporte trois requêtes ioctl. Les requêtes non reconnues par [b]st[/b] sont transmises au contrôleur [b]SCSI .[/b] Les définitions ci-dessous sont extraites de [b]/usr/include/linux/mtio.h :[/b] [b]s-1mtioctops+1 - effectue une opération sur la bande.[/b] Cette requête prend un argument du type [b](struct mtop *) [/b] indiquant l'opération à effectuer. Certains contrôleurs ne permettent pas toutes les opérations. Le contrôleur renvoie une erreur EIO s'il n'accepte pas l'opération. .nf .ta +.4i +.7i +1i /* Structure s-1MTIOCTOPs+1 - pour les opérations sur bande */ struct mtop { short mt_op; /* opérations définies ci-dessous */ int mt_count; /* combien d'opérations */ }; .fi Opérations sur bande magnétique lors d'une utilisation normale : [NDT] Je conserve les termes de [i]filemark[/i], et [i]setmark[/i] à défaut de termes précis en français. MTBSF 14 [table][row][col] [/col][col]Reculer la bande de [b]mt_count[/b] filemarks.[/col][/row][/table] MTBSFM [table][row][col] [/col][col]Reculer la bande de [b]mt_count[/b] filemarks. Repositionner la bande sur le côté EOT de la dernière filemark.[/col][/row][/table] MTBSR [table][row][col] [/col][col]Reculer la bande de [b]mt_count[/b] enregistrements (blocs bande).[/col][/row][/table] MTBSS [table][row][col] [/col][col]Reculer la bande de [b]mt_count[/b] setmarks.[/col][/row][/table] MTCOMPRESSION [table][row][col] [/col][col]Valider la compression des données sur bande dans le lecteur si [b]mt_count[/b] est non-nul, et désactiver la compression si [b]mt_count[/b] est nul. Cette commande utilise la page MODE 15 supporté par la plupart des DATs.[/col][/row][/table] MTEOM [table][row][col] [/col][col]Aller à la fin des enregistrements (ajouter des fichiers).[/col][/row][/table] MTERASE [table][row][col] [/col][col]Effacer la bande.[/col][/row][/table] MTFSF [table][row][col] [/col][col]Avancer la bande de [b]mt_count[/b] filemarks.[/col][/row][/table] MTFSFM [table][row][col] [/col][col]Avancer la bande de [b]mt_count[/b] filemarks. Positionner la bande du côté BOT de la dernière filemark.[/col][/row][/table] MTFSR [table][row][col] [/col][col]Avancer de [b]mt_count[/b] enregistrements (blocs bande).[/col][/row][/table] MTFSS [table][row][col] [/col][col]Avancer de [b]mt_count[/b] setmarks.[/col][/row][/table] MTLOAD [table][row][col] [/col][col]Exécuter la commande de chargement SCSI. Un cas particulier se présenter avec certains chargeurs automatiques HP. Si [b]mt_count[/b] correspond à somme de la constante MT_ST_HPLOADER_OFFSET et d'un nombre, ce dernier est envoyé au pilote pour contrôler le chargeur automatique.[/col][/row][/table] MTLOCK [table][row][col] [/col][col]Verrouiller la porte du lecteur de bande.[/col][/row][/table] MTMKPART [table][row][col] [/col][col]Formater la bande en une ou deux partitions. Si [b]mt_count[/b] est non-nul, il correspond à la taille de la première partition, et la seconde partition correspond au reste de la bande. Si [b]mt_count[/b] est nul, la bande n'est formatée qu'en une seule partition. Cette commande n'est autorisée que si le support de partitionnement est activé pour le lecteur (voir MT_ST_CAN_PARTITIONS plus bas).[/col][/row][/table] MTNOP [table][row][col] [/col][col]Ne rien faire - Vider les buffers du driver - A utiliser avant de lire le statut avec s-1MTIOCGETs+1.[/col][/row][/table] MTOFFL [table][row][col] [/col][col]Rembobiner la bande et éteindre le lecteur.[/col][/row][/table] MTRESET [table][row][col] [/col][col]Réinitialiser le lecteur.[/col][/row][/table] MTRETEN [table][row][col] [/col][col]Retendre la bande.[/col][/row][/table] MTREW [table][row][col] [/col][col]Rembobiner la bande.[/col][/row][/table] MTSEEK [table][row][col] [/col][col]Rechercher sur la bande le bloc numéro [b]mt_count .[/b] Cette opération nécessite soit un contrôleur SCSI-2 qui supporte la commande s-1LOCATEs+1 (adresse spécifique au périphérique), soit un lecteur SCSI-1 compatible Tandberg (Tandberg, Archive Viper, Wangtek, ... ). Le numéro de bloc devrait toujours être un numéro renvoyé précédemment par s-1MTIOCPOSs+1 si les adresses spécifiques au lecteur sont utilisées.[/col][/row][/table] MTSETBLK [table][row][col] [/col][col]Positionner la longueur de blocs du lecteur à la valeur spécifiée dans [b]mt_count .[/b] Une longueur de bloc nulle place le lecteur dans le mode de blocs de tailles variables.[/col][/row][/table] MTSETDENSITY [table][row][col] [/col][col]Fixe la densité de la bande à celle codée dans [b]mt_count .[/b] Les codes des densités acceptées par un lecteur sont disponibles dans la documentation de celui-ci.[/col][/row][/table] MTSETPART [table][row][col] [/col][col]La partition active devient celle indiquée par [b]mt_count .[/b] Les partitions sont numérotées depuis zéro. Cette commande n'est autorisée que si le support de partitionnement est activé pour le lecteur (voir MT_ST_CAN_PARTITIONS plus bas).[/col][/row][/table] MTUNLOAD [table][row][col] [/col][col]Exécuter la commande de déchargement SCSI (n'éjecte pas la bande).[/col][/row][/table] MTUNLOCK [table][row][col] [/col][col]Déverrouiller la porte du lecteur de bande.[/col][/row][/table] MTWEOF [table][row][col] [/col][col]Écrire [b]mt_count[/b] filemarks.[/col][/row][/table] MTWSM [table][row][col] [/col][col]Écrire [b]mt_count[/b] setmarks.[/col][/row][/table] Fonctions de configuration du lecteur de bande magnétique (pour le Super-Utilisateur) : MTSETDRVBUFFER 8 [table][row][col] [/col][col]Positionner diverses options du contrôleur ou du lecteur en fonction des bits encodés dans [b]mt_count .[/b] Ces options concernent le type de buffer du lecteur, 13 options booléennes du contrôleur, le seuil d'écriture du buffer, les valeurs par défaut des tailles de blocs et de densité, ainsi que les délais (noyaux >= 2.1). Une fonction n'agit que sur un seul des éléments de la liste ci-dessus à la fois.[/col][/row][/table] [table][row][col] [/col][col]Une valeur ayant ses 4 bits de poids forts à 0 sera utilisée pour indiquer le type de buffer du lecteur. Les types de buffer sont :[table][row][col] [/col][col][/col][/row][/table] 0 4 [table][row][col] [/col][col]Le contrôleur ne renverra pas le statut s-1BONs+1 en écriture avant que les données ne soient réellement écrites sur le support.[/col][/row][/table] 1 [table][row][col] [/col][col]Le contrôleur peut renvoyer le statut s-1BONs+1 en écriture dès que les données ont été transmises aux buffers internes du lecteur de bande.[/col][/row][/table] 2 [table][row][col] [/col][col]Le contrôleur peut renvoyer le statut s-1BONs+1 en écriture dès que les données ont été transmises aux buffers internes du lecteur de bande, si toutes les écritures précédentes des buffers sur le support se sont déroulées correctement.[/col][/row][/table] [/col][/row][/table] "" [table][row][col] [/col][col]Pour contrôler le seuil d'écriture, on doit inclure dans [b]mt_count[/b] la constante s-1MT_ST_WRITE_THRESHOLDs+1 associée avec le nombre de blocs dans les 28 bits de poids faibles par un [i]OU[/i] 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 excéder la taille des buffers internes du contrôleur. (voir [b]s-1DESCRIPTIONs+1 ,[/b] plus bas).[/col][/row][/table] [table][row][col] [/col][col]Pour valider ou invalider les options booléennes, la valeur [b]mt_count[/b] doit inclure l'une des constantes s-1MT_ST_BOOLEANSs+1 s-1MT_ST_SETBOOLEANSs+1, s-1MT_ST_CLEARBOOLEANSs+1, ou s-1MT_ST_DEFBOOLEANSs+1 associées par un [i]OU[/i] binaire avec une combinaison des options décrites ci-dessous. Avec s-1MT_ST_BOOLEANSs+1 les options sont définies avec les valeurs indiquées. Avec s-1MT_ST_SETBOOLEANSs+1 les options sont activées sélectivement et inhibées avec s-1MT_ST_DEFBOOLEANSs+1.[/col][/row][/table] "" [table][row][col] [/col][col]Les options par défaut pour un contrôleur de bande sont choisies avec s-1MT_ST_DEFBOOLEANSs+1. Un périphérique non-actif (par exemple avec un numéro mineur de 32 ou 160) est activé lorsque les options par défaut sont définies pour la première fois. Un périphérique actif hérite des options non fixées explicitement du périphérique actif au démarrage. Les options booléennes sont :[/col][/row][/table] [/col][/row][/table] [table][row][col] [/col][col] "s-1MT_ST_BUFFER_WRITESs+1 (Défaut: vrai)" [table][row][col] [/col][col]opérations d'écriture dans la mémoire tampon en mode de blocs fixes. Si cette option est invalidée, et si l'enregistreur utilise une longueur de bloc fixe, toutes les opérations d'écriture doivent se faire avec une longueur multiple de celle du bloc. Cette option doit être fausse pour créer des archives multi-volumes fiables. [/col][/row][/table] "s-1MT_ST_ASYNC_WRITESs+1 (Défaut: vrai)" [table][row][col] [/col][col]Quand cette option est validée, les opérations d'écriture retournent immédiatement si les données tiennent dans le buffer du driver, sans attendre que celles-ci soient effectivement transmises au lecteur de bande. Le seuil du buffer d'écriture détermine le taux de remplissage du buffer avant d'effectuer une commande SCSI. Toute erreur renvoyée par le périphérique sera conservée jusqu'à l'opération suivante. Cette option doit être fausse pour créer des archives multi-volumes fiables. [/col][/row][/table] "s-1MT_ST_READ_AHEADs+1 (Défaut: vrai)" [table][row][col] [/col][col]Cette option indique au driver de fournir un cache en lecture, ainsi qu'une lecture anticipée des données en mode de blocs fixes. Si cette option est invalidée, et que le lecteur utilise une taille de blocs fixe, toutes les opérations de lecture doivent se faire avec une taille multiple de celle du bloc. [/col][/row][/table] "s-1MT_ST_TWO_FMs+1 (Défaut: faux)" [table][row][col] [/col][col]Cette option modifie le comportement du driver quand un fichier est fermé. L'attitude normale consiste à écrire une seule filemark, néanmoins si cette option est validée, le driver écrira deux filemarks et replacera la tête au-dessus de la seconde.[/col][/row][/table] [table][row][col] [/col][col]Note: Cette option ne doit pas être utilisée avec les lecteurs de bandes QIC car ils ne sont pas capables d'écraser une filemark. Ces lecteurs détectent la fin des données enregistrées en cherchant de la bande vierge à la place des deux filemarks consécutives habituelles. La plupart des autres lecteurs courants détectent également la présence de bande vierge, aussi l'utilisation des deux filemarks n'est généralement utile que lors d'échange de bandes avec d'autres systèmes.[/col][/row][/table] "s-1MT_ST_DEBUGGINGs+1 (Défaut: faux)" [table][row][col] [/col][col]Cette option valide les divers messages de débogage du driver, si celui-ci a été compilé avec la constante s-1DEBUGs+1 ayant une valeur non-nulle). [/col][/row][/table] "s-1MT_ST_FAST_EOMs+1 (Défaut: faux)" [table][row][col] [/col][col]Cette option indique que les opérations s-1MTEOMs+1 doivent être envoyées directement au lecteur, ce qui peut accélérer les opérations, mais aussi faire perdre au driver le compte des pistes du fichier en cours, normalement renvoyé par la requête s-1MTIOCGETs+1. Si s-1MT_ST_FAST_EOMs+1 est fausse, le contrôleur répondra à une requête s-1MTEOMs+1 en sautant en avant de fichiers en fichiers. [/col][/row][/table] "s-1MT_ST_AUTO_LOCKs+1 (Défaut: faux)" [table][row][col] [/col][col]Lorsque cette option est vraie, la porte du lecteur est verrouillée lorsque le fichier périphérique est ouvert, et déverrouillée lorsque le périphérique est refermé. [/col][/row][/table] "s-1MT_ST_DEF_WRITESs+1 (Défaut: faux) [table][row][col] [/col][col]Les options de bande (taille de bloc, mode, compression...) peuvent varier lorsque l'on passe d'un périphérique lié à un lecteur à un autre périphérique correspondant au même lecteur. Cette option définit si les changements sont fournis au pilote en utilisant les commandes SCSI, et si les capacités d'auto-détection du lecteur sont fiables. Si l'option est fausse, le pilote envoie les commandes SCSI immédiatement lorsque le périphérique change. Si cette option est vraie, les commandes SCSI ne sont pas envoyées avant une demande d'écriture. Dans ce cas, le micro-code est habilité à détecter la structure de la bande lors de la lecture, et les commandes SCSI ne sont utilisées que pour être sûrs que la bande soit écrite correctement. [/col][/row][/table] "s-1MT_ST_CAN_BSRs+1 (Défaut: faux)" [table][row][col] [/col][col]Lorsque la lecture anticipée est utilisée, la bande doit parfois être ramenée en arrière en position correcte lors de la fermeture du périphérique, et on utilise alors la commande SCSI pour sauter en arrière par dessus les enregistrements. Certains anciens lecteurs ne traitent pas correctement cette commande, et cette option permet d'en avertir le pilote. Le résultat final est qu'une bande avec bloc fixes et lecture anticipée peut être mal positionnée dans un fichier lors de la fermeture du périphérique. [/col][/row][/table] "s-1MT_ST_NO_BLKLIMSs+1 (Défaut: faux)" [table][row][col] [/col][col]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'inconvénient est que le pilote ne peut pas vérifier, avant d'envoyer des commandes, si la taille de bloc choisie est acceptée par le lecteur. [/col][/row][/table] "s-1MT_ST_CAN_PARTITIONSs+1 (Défaut: faux)" [table][row][col] [/col][col]Cette option active le support des partitions multiples sur une bande. Cette option s'applique à tous les périphériques liés au lecteur. [/col][/row][/table] "s-1MT_ST_SCSI2LOGICALs+1 (Défaut: faux)" [table][row][col] [/col][col]Cette option indique au pilote d'utiliser les adresses de blocs logiques définies dans le standard SCSI-2, lors de opérations 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 spécifiques au périphérique. Il est très recommandé d'activer cette option si le lecteur supporte les adresses logiques car elles contiennent également les filemarks. Il existe d'ailleurs quelques lecteurs qui ne supportent que les adresses logiques. [/col][/row][/table] "s-1MT_ST_SYSVs+1 (Défaut: faux)" [table][row][col] [/col][col]Lorsque cette option est validée, les périphériques de bande utilisent la sémantique Système V. Sinon ils utilisent la sémantique BSD. La différence principale est le comportement lors de la fermeture d'un périphérique en lecture. Avec Système V, la bande est positionnée en avant à la suite de la filemark suivante si cela n'a pas déjà eu lieu lors de la lecture. Dans la sémantique BSD, la position ne change pas.[/col][/row][/table] s-1EXEMPLEs+1 [table][row][col] [/col][col].nf .ta +.4i +.7i +1i [b][i]struct mtop mt_cmd ;[/i][/b] [b][i]mt_cmd.mt_op = s-1MTSETDRVBUFFERs+1;[/i][/b] [b][i]mt_cmd.mt_count = s-1MT_ST_BOOLEANSs+1 |[/i][/b] [b] s-1MT_ST_BUFFER_WRITESs+1 |[/b] [b] s-1MT_ST_ASYNC_WRITESs+1;[/b] [b][i]ioctl( fd , s-1MTIOCTOPs+1, & mt_cmd );[/i][/b] .fi[/col][/row][/table][/col][/row][/table] "" [table][row][col] [/col][col]La taille de bloc par défaut pour un périphérique peut être configurée avec s-1MT_ST_DEF_BLKSIZEs+1 et le code de densité par défaut avec s-1MT_ST_DEFDENSITYs+1. Les valeurs des paramètres sont associées par un OU logique avec le code opératoire.[/col][/row][/table] "" [table][row][col] [/col][col]Avec les noyaux 2.1.x et ultérieurs, la valeur de délai maximum peut être fournie avec la sous-commande s-1MT_ST_SET_TIMEOUTs+1 associée par OU avec le délai en seconde. Le délai long (utilisé pour les rembobinages ou les commandes pouvant durer longtemps) peut être configuré avec s-1MT_ST_SET_LONG_TIMEOUTs+1. Les valeurs par défaut du noyau sont très longues pour être sûre qu'une commande valide ne soit jamais interrompue pour dépassement de délai, et ceci quelque soit le lecteur. A cause de cela, le pilote peut parfois sembler gelé alors qu'il est en attente de dépassement de délai. Ces commandes permettent donc de fixer des valeurs plus pratiques pour un lecteur donné. Les délais fixés pour un périphérique s'appliquent à tous les périphériques liés au même lecteur.[/col][/row][/table] [b]s-1mtiocgets+1 - obtenir le statut[/b] Cette requête prend un argument du type [b](struct mtget *) .[/b] .nf /* Structure pour s-1MTIOCGETs+1 - Statut d'une bande magnétique */ struct mtget { long mt_type; long mt_resid; /* Les registres suivants dépendent du matériel */ long mt_dsreg; long mt_gstat; long mt_erreg; /* Ces deux derniers champs sont parfois inutilisés */ daddr_t mt_fileno; daddr_t mt_blkno; }; .fi [b]mt_type[/b] 11 [table][row][col] [/col][col]Le fichier d'en-tête définit plusieurs valeurs pour [b]mt_type ,[/b] mais le driver actuel renvoie uniquement les types génériques s-1MT_ISSCSI1s+1 (lecteur SCSI-1 générique) et s-1MT_ISSCSI2s+1 (lecteur SCSI-2 générique).[/col][/row][/table] [b]mt_resid[/b] [table][row][col] [/col][col]contient le numéro de partition courante.[/col][/row][/table] [b]mt_dsreg[/b] [table][row][col] [/col][col]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 définis par s-1MT_ST_BLKSIZE_SHIFTs+1, s-1MT_ST_BLKSIZE_MASKs+1, s-1MT_ST_DENSITY_SHIFTs+1, et s-1MT_ST_DENSITY_MASKs+1.[/col][/row][/table] [b]mt_gstat[/b] [table][row][col] [/col][col]renvoie des informations génériques de statut (indépendants du périphérique). Le fichier d'en-tête définit les macros suivantes pour tester les bits de statut :[table][row][col] [/col][col] .HP 4 s-1GMT_EOF(s+1[i]x[/i]s-1)s+1 : La bande est positionnée juste après une filemark (toujours faux après une opération s-1MTSEEKs+1). .HP s-1GMT_BOT(s+1[i]x[/i]s-1)s+1 : La bande est positionnée juste au début du premier fichier (toujours faux après une opération s-1MTSEEKs+1). .HP s-1GMT_EOT(s+1[i]x[/i]s-1)s+1 : Une opération a atteint la fin physique de la bande (End Of Tape). .HP s-1GMT_SM(s+1[i]x[/i]s-1)s+1 : La bande est positionnée sur une setmark (toujours faux après une opération s-1MTSEEKs+1). .HP s-1GMT_EOD(s+1[i]x[/i]s-1)s+1 : La bande est positionnée à la fin des données enregistrées. .HP s-1GMT_WR_PROT(s+1[i]x[/i]s-1)s+1 : La bande est protégée en écriture. Pour certains enregistreurs ceci signifie qu'ils ne supportent pas l'écriture sur ce type de bande. .HP s-1GMT_ONLINE(s+1[i]x[/i]s-1)s+1 : La dernière opération [b]open()[/b] a trouvé le lecteur prêt à agir, avec une bande à l'intérieur. .HP s-1GMT_D_6250(s+1[i]x[/i]s-1)s+1, s-1GMT_D_1600(s+1[i]x[/i]s-1)s+1, s-1GMT_D_800(s+1[i]x[/i]s-1)s+1 : Ces informations (lqgénériques(rq de statut renvoient la densité actuelle des lecteurs de bandes 9-pistes (12" seulement. .HP s-1GMT_DR_OPEN(s+1[i]x[/i]s-1)s+1: Le lecteur ne contient pas de bande. .HP s-1GMT_IM_REP_EN(s+1[i]x[/i]s-1)s+1: Mode de rapport immédiat. Ce bit est activé lorsqu'il n'y a aucune assurance que les données aient été physiquement écrite sur la bande lors du retour de l'appel système. Le bit est à zéro seulement lorsque le lecteur ne cache pas les données et que le pilote est configuré pour ne pas faire de cache non plus.[/col][/row][/table][/col][/row][/table] [b]mt_erreg[/b] [table][row][col] [/col][col]Le seul champ défini dans [b]mt_erreg[/b] est le nombre d'erreurs corrigées, dans les 16 bits de poids faibles (comme défini par les masques s-1MT_ST_SOFTERR_SHIFTs+1 et s-1MT_ST_SOFTERR_MASKs+1). A cause d'incompatibilités dans les méthodes utilisées par les lecteurs pour rendre compte des corrections d'erreur, cette valeur n'est pas toujours fournie (la plupart des lecteurs ne renvoient pas, par défaut, les erreurs corrigées, mais cela peut être modifié avec la commande SCSI MODE SELECT).[/col][/row][/table] [b]mt_fileno[/b] [table][row][col] [/col][col]renvoie le numéro du fichier en cours (commençant à 0). La valeur est mise a -1 si le numéro du fichier est inconnu (par exemple après un s-1MTBSSs+1 ou un s-1MTSEEKs+1).[/col][/row][/table] [b]mt_blkno[/b] [table][row][col] [/col][col]renvoie le numéro de bloc (commençant à 0) à l'intérieur du fichier en cours. Cette valeur est mise à -1 quand le numéro de bloc est inconnu (par exemple après un s-1MTBSFs+1, un s-1MTBSSs+1, ou un s-1MTSEEKs+1).[/col][/row][/table] [b]s-1mtiocposs+1 - obtenir la position de la bande[/b] Cette requête prend un argument du type [b](struct mtpos *)[/b] et renvoie une valeur, spécifique au lecteur, correspondant au numéro de bloc en cours, et qui n'est pas la même que [b]mt_blkno[/b] renvoyée par s-1MTIOCGETs+1. Ce lecteur doit être un SCSI-2 qui supporte la commande s-1READ POSITIONs+1 ou un lecteur SCSI-1 compatible Tandberg (Tandberg, Archive Viper, Wangtek, ... ). .nf /* Structure pour commande s-1MTIOCPOSs+1 - Obtenir la position */ struct mtpos { long mt_blkno; /* current block number */ }; .fi [size=18] [b]Valeur renvoyée[/b] [/size] EIO 14 [table][row][col] [/col][col]L'opération demandée a échoué.[/col][/row][/table] ENOSPC [table][row][col] [/col][col]Une écriture a échoué car la fin de bande a été atteinte.[/col][/row][/table] EACCES [table][row][col] [/col][col]Tentative d'écriture ou d'effacement sur une bande protégée en écriture. (Ceci ne peut pas être détecté lors de [b]open() .)[/b][/col][/row][/table] EFAULT [table][row][col] [/col][col]Le paramètre de commande pointe en dehors de la mémoire adressable par le processus appelant.[/col][/row][/table] ENXIO [table][row][col] [/col][col]Durant l'ouverture, le lecteur de bande n'existe pas.[/col][/row][/table] EBUSY [table][row][col] [/col][col]Le périphérique est déjà utilisé ou le driver n'a pas assez de mémoire.[/col][/row][/table] EOVERFLOW [table][row][col] [/col][col]Tentative de lire ou d'écrire un bloc de longueur variable plus grand que la taille des buffers internes du contrôleur.[/col][/row][/table] EINVAL [table][row][col] [/col][col]Un appel système [b]ioctl()[/b] a un argument illégal, ou la taille de bloc demandée était incorrecte.[/col][/row][/table] ENOSYS [table][row][col] [/col][col]Appel système [b]ioctl() [/b] inconnu.[/col][/row][/table] EROFS [table][row][col] [/col][col]On tente l'ouverture avec O_WRONLY ou O_RDWR alors que la bande est protégée en écriture.[/col][/row][/table] [size=18] [b]Fichiers[/b] [/size] /dev/st* : Les lecteurs de bandes SCSI à rembobinage automatique [b][/b] /dev/nst* : Les lecteurs de bandes SCSI sans rembobinage automatique [size=18] [b]Auteur[/b] [/size] Le pilote a été écrit par Kai M(:akisara (Kai.Makisara@metla.fi) à partir d'un pilote écrit par Dwayne Forsyth. Plusieurs autres personnes ont également collaboré à l'écriture du pilote. [size=18] [b]Voir aussi[/b] [/size] [b]mt (1)[/b] Le fichier README.st dans les sources du noyau contient les informations les plus récentes à propos du pilote et de ses capacités de configuration. [size=18] [b]Notes[/b] [/size] 1. Lors d'un échange de données entre systèmes différents, il faut se mettre d'accord sur la taille des blocs. Les paramètres d'un lecteur après le démarrage sont souvent différents de ceux qu'utilisent la plupart des autres systèmes d'exploitation. La plupart 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 hélicoïdaux, les DLTs... Il peut être judicieux d'utiliser ces lecteurs en mode de longueur variable sous Linux aussi (en utilisant MTSETLK ou MTSETDEFBLK au démarrage), du moins lors de l'échange de données avec des systèmes d'exploitation différents. L'inconvénient de ceci est qu'il faut utiliser une taille de bloc assez grande pour obtenir des taux de transfert acceptable sur un bus SCSI. 2. Beaucoup de programmes (comme tar par exemple) permettent à l'utilisateur de spécifier le facteur de blocage sur la ligne de commande. Notez que ceci détermine 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 configurés dans le noyau ou chargés comme modules. Si le pilote des bandes SCSI n'est pas présent, le lecteur est reconnu, mais le support de bande décrit dans cette page n'est pas disponible. 4. Le pilote écrit les messages d'erreur sur la console et/ou les fichiers de journalisation (log). Les codes SENSE présents dans certains messages sont automatiquement traduits en texte si les messages SCSI complets sont activés dans la configuration du noyau. [size=18] [b]Copyright[/b] [/size] 1995 Robert K. Nichols. 1999 Kai M(:akisara. [size=18] [b]Traduction[/b] [/size] Christophe Blaess, 1996-2003.
Fichier
Forum
-
Derniers messages
Bavardages
Aujourd'hui, je rénove ou je construis ^^
Software
problème sur windows 10
Réseaux et Télécom
Administrateur Réseau - Cisco
Réseaux et Télécom
Problème wifi (POE)
Software
Postfix - Need help
Bavardages
Oh râge oh désespoir !
Programmation
Enregistrement client et envoi mail
Software
SÉCURITÉ MACBOOK
Hardware
conseil matos réseau?
Hardware
nVidia Shield Android TV
Actualités
-
Archives
Matériel
Nvidia prévient d'une pénurie de GPU ce trimestre, avec une reprise début 2025
Les Technos
Les Technos #469 : Un jour sans fin
Jeux Vidéos
Test Farming Simulator 25 (PS5) - Des innovations intéressantes mais des performances à revoir
Matériel
Qualcomm souhaite réduire davantage les prix des PC Windows basés sur ARM
Tablettes
Finalement, Google préparerait une nouvelle tablette mais la Pixel Tablet 2 serait abandonnée
Ada
CSS
Cobol
CPP
HTML
Fortran
Java
JavaScript
Pascal
Perl
PHP
Python
SQL
VB
XML
Anon URL
DailyMotion
eBay
Flickr
FLV
Google Video
Google Maps
Metacafe
MP3
SeeqPod
Veoh
Yahoo Video
YouTube
6px
8px
10px
12px
14px
16px
18px
Informaticien.be
- © 2002-2024
Akretio
SPRL - Generated via
Kelare
The Akretio Network:
Akretio
-
Freedelity
-
KelCommerce
-
Votre publicité sur informaticien.be ?