Lecture / ecriture en continue sur flash usb

Bonjour,

lorsque je connecte ma clé usb le montage s’effectue normalementet j’ai accés au données en lecture et écriture (jusqu’au ici tout se passe bien).
Ma clé est équipée par un voyant qui indique l’opération de lecture ou ecriture. Lorsque je copie des fichiers dans ma clé je constate que, même après la fin de la copie, le voyant clignote toujours.

sur pcmanfm, je démonte la clé sans aucun message d’erreur et même aprés démontage, le voyant clignote toujours.
Lorsque j’était sous xfce (avec thunar donc), lorsque je choisie “retirer en toute sécurité”, le démontage était inpossible et j’obtient un message du type “device is busy”

Que dois-je faire pour corriger ce probleme ?
Merci à tous

Je tourne sous lxde (et n’ai essayé xfce et thunar que quelques fois).
J’ai remplacé pcmanfm par spacefm (un fork de pcmanfm) qui marche très bien.
Je n’ai pas toujours ce genre de problème, mais quand ça arrive, je démonte en ligne de commande : [code]$ mount | grep /dev/sd (pour savoir quoi est monté où)

umount -l /dev/sdb1 (pour une clé usb montée sur /dev/sdb1)

$ mount | grep /dev/sd (pour vérifier que la clé n’est plus montée[/code]

Il faut attendre que le transfert soit terminé.
Attention : explication pseudo-technique-pas-très-fiable :
Ça paraît idiot, mais la copie doit se faire via un système de “tampon”. Du coup la copie est réalisée selon le gestionnaire de fichier, mais il reste encore des données dans la file d’attente, car la vitesse d’écriture sur la clé usb est plus lente.
Si tu attends un peu, tu pourras démonter la clé sans problème, l’écriture sera terminée.

La commande sync permet de bien vider les tampons sur la clef.
Normalement, aprés cette commande, tu peux retirer la clef en toute sécurité.

[quote=“thuban”]Il faut attendre que le transfert soit terminé.

Si tu attends un peu, tu pourras démonter la clé sans problème, l’écriture sera terminée.[/quote]

l’écriture ne se termine jamais même en attendant pour de long période (le voyant clignote toujours) !

[quote=“piratebab”]La commande sync permet de bien vider les tampons sur la clef.
Normalement, aprés cette commande, tu peux retirer la clef en toute sécurité.[/quote]

cette commande s’exécute normalement et ne retourne aucun message d’erreur mais on diarait qu’elle n’a aucun effet (l’écriture ne s’arrête toujours pas)

Après démontage et synchronisation, tu peux débrancher sans craintes.
Démonter n’est pas éteindre. Le hub reste alimenté, la clé reste allumée bien que démontée.
Si tu tiens à réellement couper l’alimentation de la clé, la réponse pourrait se trouver en :

/usr/src/linux-*/Documentation/usb/power-management.txt

Je n’ai pas testé, je fais partie des utilisateurs qui se contentent de démonter avant de débrancher…

[quote=“caviardage”] Power Management for USB

	 Alan Stern <stern@rowland.harvard.edu>

		    October 28, 2010



What is Power Management?
-------------------------

Power Management (PM) is the practice of saving energy by suspending
parts of a computer system when they aren’t being used. While a
component is “suspended” it is in a nonfunctional low-power state; it
might even be turned off completely.

Note: Dynamic PM support for USB is present only if the kernel was
built with CONFIG_USB_SUSPEND enabled (which depends on
CONFIG_PM_RUNTIME). System PM support is present only if the kernel
was built with CONFIG_SUSPEND or CONFIG_HIBERNATION enabled.

When is a USB device idle?
--------------------------

A device is idle whenever the kernel thinks it’s not busy doing
anything important and thus is a candidate for being suspended. The
exact definition depends on the device’s driver; drivers are allowed
to declare that a device isn’t idle even when there’s no actual
communication taking place. (For example, a hub isn’t considered idle
unless all the devices plugged into that hub are already suspended.)
In addition, a device isn’t considered idle so long as a program keeps
its usbfs file open, whether or not any I/O is going on.

If a USB device has no driver, its usbfs file isn’t open, and it isn’t
being accessed through sysfs, then it definitely is idle.

The user interface for dynamic PM
---------------------------------

The user interface for controlling dynamic PM is located in the power/
subdirectory of each USB device’s sysfs directory, that is, in
/sys/bus/usb/devices/…/power/ where “…” is the device’s ID. The
relevant attribute files are: wakeup, control, and
autosuspend_delay_ms. (There may also be a file named “level”; this
file was deprecated as of the 2.6.35 kernel and replaced by the
"control" file. In 2.6.38 the “autosuspend” file will be deprecated
and replaced by the “autosuspend_delay_ms” file. The only difference
is that the newer file expresses the delay in milliseconds whereas the
older file uses seconds. Confusingly, both files are present in 2.6.37
but only “autosuspend” works.)

power/wakeup

	This file is empty if the device does not support
	remote wakeup.  Otherwise the file contains either the
	word "enabled" or the word "disabled", and you can
	write those words to the file.  The setting determines
	whether or not remote wakeup will be enabled when the
	device is next suspended.  (If the setting is changed
	while the device is suspended, the change won't take
	effect until the following suspend.)

power/control

	This file contains one of two words: "on" or "auto".
	You can write those words to the file to change the
	device's setting.

	"on" means that the device should be resumed and
	autosuspend is not allowed.  (Of course, system
	suspends are still allowed.)

	"auto" is the normal state in which the kernel is
	allowed to autosuspend and autoresume the device.

	(In kernels up to 2.6.32, you could also specify
	"suspend", meaning that the device should remain
	suspended and autoresume was not allowed.  This
	setting is no longer supported.)

power/autosuspend_delay_ms

	This file contains an integer value, which is the
	number of milliseconds the device should remain idle
	before the kernel will autosuspend it (the idle-delay
	time).  The default is 2000.  0 means to autosuspend
	as soon as the device becomes idle, and negative
	values mean never to autosuspend.  You can write a
	number to the file to change the autosuspend
	idle-delay time.

Writing “-1” to power/autosuspend_delay_ms and writing “on” to
power/control do essentially the same thing – they both prevent the
device from being autosuspended. Yes, this is a redundancy in the
API.

Warnings
--------

The USB specification states that all USB devices must support power
management. Nevertheless, the sad fact is that many devices do not
support it very well. You can suspend them all right, but when you
try to resume them they disconnect themselves from the USB bus or
they stop working entirely. This seems to be especially prevalent
among printers and scanners, but plenty of other types of device have
the same deficiency.

For this reason, by default the kernel disables autosuspend (the
power/control attribute is initialized to “on”) for all devices other
than hubs. Hubs, at least, appear to be reasonably well-behaved in
this regard.

(In 2.6.21 and 2.6.22 this wasn’t the case. Autosuspend was enabled
by default for almost all USB devices. A number of people experienced
problems as a result.)

This means that non-hub devices won’t be autosuspended unless the user
or a program explicitly enables it. As of this writing there aren’t
any widespread programs which will do this; we hope that in the near
future device managers such as HAL will take on this added
responsibility. In the meantime you can always carry out the
necessary operations by hand or add them to a udev script. You can
also change the idle-delay time; 2 seconds is not the best choice for
every device.

If a driver knows that its device has proper suspend/resume support,
it can enable autosuspend all by itself. For example, the video
driver for a laptop’s webcam might do this (in recent kernels they
do), since these devices are rarely used and so should normally be
autosuspended.

Sometimes it turns out that even when a device does work okay with
autosuspend there are still problems. For example, the usbhid driver,
which manages keyboards and mice, has autosuspend support. Tests with
a number of keyboards show that typing on a suspended keyboard, while
causing the keyboard to do a remote wakeup all right, will nonetheless
frequently result in lost keystrokes. Tests with mice show that some
of them will issue a remote-wakeup request in response to button
presses but not to motion, and some in response to neither.

The kernel will not prevent you from enabling autosuspend on devices
that can’t handle it. It is even possible in theory to damage a
device by suspending it at the wrong time. (Highly unlikely, but
possible.) Take care.

The driver interface for Power Management
-----------------------------------------

The requirements for a USB driver to support external power management
are pretty modest; the driver need only define

.suspend
.resume
.reset_resume

[/quote]
Pour commencer, voir les possibilités offertes en
/sys/bus/usb/devices/*/power/

Moi aussi, je ne cherche pas à éteindre l’usb. ce que je veux avoir c’est à la fin de la copie, l’écriture sur la clé s’arrete. je ne sais même pas ce que le systeme est entrain d’écrire !!!
la copie est finie, les données sont bien présents sur la clé(il n’y a pas de probleme de perte de donnéés ou des donnéés corrompues même si j’arrache la clé pendant cette étrange écriture), je ne sais pas ce que cette opération d’écriture “interminable” vient faire ou ce qu’elle est entrain d’écrire.

[quote=“micronet”][quote=“piratebab”]La commande sync permet de bien vider les tampons sur la clef.
Normalement, aprés cette commande, tu peux retirer la clef en toute sécurité.[/quote]

cette commande s’exécute normalement et ne retourne aucun message d’erreur mais on diarait qu’elle n’a aucun effet (l’écriture ne s’arrête toujours pas)[/quote]

Sync boucle les écritures en attente. Sync ne démonte pas. Il convient de démonter après avoir laissé sync opérer jusqu’à son terme. Lorsque sync en a fini, il ne devrait pas y avoir d’écritures à moins qu’il n’y ait des processus ouverts qui auraient échappé à ton attention.

Si le démontage ne se réalise pas, tu devrais te pencher sur les processus en cours empêchant le démontage,
Regarde si tu n’as pas de programmes ouverts prenant pied en $MONTAGE, de shells, d’onglets, de fenêtres réduites … qui seraient à l’origine du message “device is busy”.

$ ps aux | grep $MONTAGE | grep -v grep

où $MONTAGE correspond au point de montage de la clé. Interrompre les fautifs.
Le démontage ne pourra s’opérer tant que des processus seront en prise avec ce montage. Voir aussi : $ pwd et /proc/*/cwd (current working directory).

Autre piste : /etc/fstab, options user/users/gid…?
Qui monte ? Qui démonte ? Le monteur est-il le démonteur ? Si le démonteur n’est pas le monteur, en a-t-il la permission ?

bon, je pense que je suis convaincu que le problème est dû à ce “système de tampon”.
donc, je veux bien savoir comment puis-je désactiver ce tampon. autrement dis, j’aime bien que le popup affichant l’avancement de la copie décris l’avancement de l’écriture réelle des données sur le média et non pas le remplissage du tampon.
comment le faire, svp ??

comment désactiver le tampon svp

Regarde les options de montage avant d’en venir au matériel.
$ man mount
Sous le générique “defaults”, le montage prend l’option async pour optimiser les écritures.

defaults Use default options: rw, suid, dev, exec, auto, nouser, and async.
Tu voudrais donc l’option sync

sync All I/O to the filesystem should be done synchronously. In case of media with limited number of write cycles (e.g. some flash drives) "sync" may cause life-cycle shortening.

Voir selon le montage et le système de fichiers.

[code]FILESYSTEM INDEPENDENT MOUNT OPTIONS
Some of these options are only useful when they appear in the /etc/fstab file.

   Some of these options could be enabled or disabled by default in the system kernel. To check the current setting
   see the options in /proc/mounts.

   The following options apply to any filesystem that is being mounted (but not every  filesystem  actually  honors
   them - e.g., the sync option today has effect only for ext2, ext3, fat, vfat and ufs):

   async  All I/O to the filesystem should be done asynchronously. (See also the sync option.)

   atime  Do  not  use  noatime  feature, then the inode access time is controlled by kernel defaults. See also the
          description for strictatime and reatime mount options.

   noatime
          Do not update inode access times on this filesystem (e.g., for faster access on the news spool  to  speed
          up news servers).[/code]

L’option sync n’ effacera pas l’erreur “device is busy” si tu as des processus ouverts par ailleurs.

ah bon! c’est quoi donc la meilleur solution ??je me sens totalement perdu ici.
une autre chose que j’ai remarqué: même apres avoir démonter correctement la clé, le voyant clignote toujours !!!

vraiment je n’ai rien compris

[code]cat /etc/fstab

/etc/fstab: static file system information.

Use ‘blkid’ to print the universally unique identifier for a

device; this may be used with UUID= as a more robust way to name devices

that works even if disks are added and removed. See fstab(5).

proc /proc proc defaults 0 0

/ was on /dev/sda7 during installation

UUID=3aa4537d-ff96-48ab-af32-a253ce42a010 / ext4 errors=remount-ro 0 1

/home was on /dev/sda5 during installation

UUID=377818dd-b0ae-471b-9ff7-1cb0e8ba643f /home ext4 defaults 0 2

swap was on /dev/sda6 during installation

UUID=ef078074-1d1c-4004-86fe-3ab5bb503291 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0
/dev/sdb1 /media/usb0 auto rw,user,noauto 0 0
[/code]

j’ai essayé avec un fichier d’environ 900Méga. avec l’option sync ajouté à /etc/fstab la copie est trop lente (estimé 85mn). mais il est à noter que le comportement normal de la clé est retrouvé: dés le début de la copie, le voyant commmence à clignoter et devient stable dés l’annulation de la copie.

Rq: j’ai essayé avec le même fichier, la même clé insérée dans le même port avec windows et la copie est achevé en seulement 2mn tout en ayant le comportement normal du voyant(devient stable juste à la fin de la copie)

qu’est ce que vous en pensez ???

Quel est le système de fichiers ?
Monte la clé et copie nous les retours des commandes

$ mount
$ df -hT

À la croisée de linux et Microsoft, les systèmes de fichiers Ntfs ou Fat32 (ext3 sous Microsoft, il ne vaut mieux pas …).
Ntfs sous linux, peu recommandable, ce qui pourrait expliquer ces lenteurs.

$ mount sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime) proc on /proc type proc (rw,nosuid,nodev,noexec,relatime) udev on /dev type devtmpfs (rw,relatime,size=10240k,nr_inodes=384529,mode=755) devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000) tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=308588k,mode=755) /dev/disk/by-uuid/3aa4537d-ff96-48ab-af32-a253ce42a010 on / type ext4 (rw,relatime,errors=remount-ro,barrier=1,data=ordered) tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k) tmpfs on /run/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=1248160k) /dev/sda5 on /home type ext4 (rw,relatime,barrier=1,data=ordered) binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,nosuid,nodev,noexec,relatime) /dev/sdb1 on /media/usb0 type vfat (rw,nosuid,nodev,noexec,relatime,uid=1000,fmask=0022,dmask=0022,codepage=cp437,iocharset=utf8,shortname=mixed,errors=remount-ro,user=micronet)

$ df -hT Sys. fich. Type Taille Util. Dispo Uti% Monté sur rootfs rootfs 13G 4,5G 7,1G 39% / udev devtmpfs 10M 0 10M 0% /dev tmpfs tmpfs 302M 404K 301M 1% /run /dev/disk/by-uuid/3aa4537d-ff96-48ab-af32-a253ce42a010 ext4 13G 4,5G 7,1G 39% / tmpfs tmpfs 5,0M 0 5,0M 0% /run/lock tmpfs tmpfs 1,2G 352K 1,2G 1% /run/shm /dev/sda5 ext4 239G 224G 2,9G 99% /home /dev/sdb1 vfat 3,8G 301M 3,5G 8% /media/usb0

a tout hasard, ce ne serait pas un port USB3, reconnu en tant que tel par windows, mais identifié en USB2 (voir USB1) par debian ?
un lsusb -v t’en dira plus.

non, il s’agit d’un usb2. Ma machine ne contient aucun port usb3.
Pour la commande lsusb -v:

Bus 003 Device 006: ID 0951:1607 Kingston Technology DataTraveler 100 Couldn't open device, some information will be missing Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x0951 Kingston Technology idProduct 0x1607 DataTraveler 100 bcdDevice 2.00 iManufacturer 1 iProduct 2 iSerial 3 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 32 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 200mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 8 Mass Storage bInterfaceSubClass 6 SCSI bInterfaceProtocol 80 Bulk-Only iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0

tout d’abord je veux remercier tout ceux qui ont essayé de m’aider.

Bon, je peux dire que j’ai presque résolu le problème. Maintenant, aprés la disparition de la “popup” de l’avancement de la copie, le voyant devient stable au bout de quelques secondes (presque 30 sec).

tout ce que j’ai fait c’est commenter la dernière ligne de /etc/fstab à savoir:
/dev/sdb1 /media/usb0 auto rw,user,noauto 0 0

j’ai cru que cette ligne est indispensable pou le montage !!! en plus elle a été créer automatiquement (c’est la première fois que je modifie fstab)

peut-être quelqu’un peut m’expliquer ce que ce passe exactement ??

Pour faire simple:

  • tu mets dans fstab les “partitions” que tu veux monter à chaque boot
    Ensuite, tu laisse ton gestionnaire de burau le soin de monter/démonter automatiquement les disques amovibles.
    L’ensemble se trouve dans le fichier /etc/mtab.
    Tu peux le vérifier en insérant ta clef, elle sera montée automatiquement, et apparaitra dans mtab.
    admin-debian.com/les-systeme … -etcfstab/