Forum Linux.redhat Bug (?) de redirection shell (>>) sur CIFS après upgrade vers CentOS 6.5

Posté par . Licence CC by-sa
8
16
déc.
2013

Bonjour.

Je viens de me rendre compte de quelque chose d'assez surprenant après une mise à jour de CentOS 6.4 vers 6.5, et je voulais vous en faire part car je ne sais pas si c'est "normal" ou bien carrément un bug.

Le problème vient quand je souhaite écrire dans un fichier monté sur partage CIFS. Imaginons ceci :
$ echo "hello" >> /mnt/cifs/output.log
$ echo "hello2" >> /mnt/cifs/output.log
$ echo "hello3" >> /mnt/cifs/output.log

On devrait avoir évidemment dans le fichier output.log ceci :
hello
hello2
hello3

Eh bien moi j'ai :
hello3

Le shell réécrit au début du fichier par dessus les anciennes données !

Ce problème est apparu depuis CentOS 6.5, avec le kernel 2.6.32-431.el6.x86_64 (pareil avec le dernier 2.6.32-431.1.2.0.1.el6.x86_64).
Quand je reboot sur le 2.6.32-358.23.2.el6.x86_64 (CentOS 6.4) pas de soucis.

Par ailleurs, j'ai testé la redirection sur un partage CIFS Windows 7 et NetApp, c'est pareil dans les 2 cas.

Le problème semble en fait venir du paramètre "cache" lors du montage CIFS. J'utilisais le mode "cache=none". Quand j'utilise le mode "cache=strict" j'ai le même soucis. Par contre si j'utilise le mode "cache=loose" ou bien que je ne spécifie rien, là ça marche !

J'ai lu le paragraphe CACHE COHERENCY dans le man "mount.cifs" mais je ne suis pas plus avancé quant à savoir si ce problème est "normal" compte tenu du mode cache choisi ou non, ou si c'est un bug.

  • # gestion d'erreur

    Posté par . Évalué à 3.

    Récupère le code d'erreur des deux premières lignes ? Une erreur en écriture est toujours possible.

    • [^] # Re: gestion d'erreur

      Posté par . Évalué à 2.

      Je me suis aperçu de ce soucis lorsque mes scripts ne marchaient plus après màj, donc a priori ce n'est pas une erreur de frappe de ma part.

      Quoi qu'il en soit, j'ai bien un code retour "0" à chaque fois.

  • # intéressant...

    Posté par . Évalué à 2.

    Et si tu mets un sleep de mettons 2s entre chaque commande ?

    • [^] # Re: intéressant...

      Posté par . Évalué à 2.

      Ça ne change rien, je peux même mettre en sync ou un umount/mount entre chaque echo.

  • # idées

    Posté par (page perso) . Évalué à 2.

    Je présume que rien n'a changé du côté serveur.

    En regardant les release/technical notes de RHEL 6.5 je vois rien qui soit directement en rapport mais il y a eu pas mal de changements dans la gestion du cache relatif à NFS. Peut-être que ces changements ne sont pas si spécifiques à NFS qu'on pourrait le penser…

    Si tu ne veux pas éplucher tous les patches (ce qui n'est plus vraiment faisable sans être un employé Red Hat de toute façon), tu peux peut-être investiguer le problème autrement. Quelques idées :
    - effectuer une capture réseau lorsque tu reproduis le problème et lorsque le problème n'existe pas et comparer les deux ;
    - confirmer que le problème n'arrive pas si tu fais un sync(1) entre les deux echo ;
    - vérifier si le problème est aussi présent avec NFS.

    pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

    • [^] # Re: idées

      Posté par . Évalué à 2.

      Merci pour tes recommandations.

      • Je vais faire une capture réseau avec tcpdump pour voir
      • Des sync entre chaque echo ne change rien
      • Je ne pense pas que NFS y soit pour quelque chose, car le problème avec CIFS se pose avec l'option "cache" qui ne semble pas exister pour NFS
      • [^] # side channel support

        Posté par (page perso) . Évalué à 3.

        Si tu as quelque chose à rajouter, tu peux te créer un compte sur le Bugzilla Red Hat et contribuer https://bugzilla.redhat.com/1044438
        Mais a priori, Sachin (qui est familier avec le code concerné) est en train d'investiguer.

        <Krunch> Sachin: if you could read french i think this would be of interest to you https://linuxfr.org/forums/linux-redhat/posts/bug-de-redirection-shell-sur-cifs-apres-upgrade-vers-centos-6-5
        <Sachin> Krunch, What does this mean.. Le problème semble en fait venir du paramètre "cache" lors du montage CIFS. J'utilisais le mode "cache=none". Quand j'utilise le mode "cache=strict" j'ai le même soucis. Par contre si j'utilise le mode "cache=loose" ou bien que je ne spécifie rien, là ça marche ! 
        <Sachin> nm, used google translate
        <Sachin> ohh.. damn.. I can reproduce
        <Sachin> Krunch, good thing we didn't set cache=none or strict to default.. left it at cache=loose as before.
        <Sachin> Upstream cache=strict is default.
        <Sachin> Krunch, can you please create a redhat bz... meanwhile I'll debug it.
        <Sachin> Can you also please add a pointer to it in the forum.
        <Krunch> Sachin: i don't have a rhbz account any more; if you do create a bug, please let me know and i'll reply on the forum
        <Sachin> Krunch, On testing again, I see the problem only in cache=none mode.
        <Krunch> Sachin: the guy replied on the forum; sync(1)ing between the echo's doesn't change anything
        <Krunch> even umount/mount doesn't change anything apparently
        <Sachin> Krunch, in cache=none mode, we don't use pagecache at all.. so there is no point to sync
        <Krunch> oh, *that* pagecache
        <Sachin> https://bugzilla.redhat.com/show_bug.cgi?id=1044438
        

        pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

        • [^] # Re: side channel support

          Posté par (page perso) . Évalué à 2.

          Bon bah il y a un patch dans le Bugzilla. Tu peux attendre que ça soit releasé ou tu peux rebuilder ta quenelle.

          pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

        • [^] # Re: side channel support

          Posté par . Évalué à 2.

          Nikel ! Merci d'avoir reporté ça.
          J'ai effectivement déjà un compte Bugzilla (j'ai déjà reporté pas mal de bugs) et je comptais justement en créer un.
          Ce matin je viens de bien formaliser mes tests, et c'est encore différent selon que j'écris sur NetApp (SMB1) ou Win 7 (SMB2/3).

          Je vais mettre tout ça dans le ticket créer par Sachin.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.