Etat de la prise en charge de XFS XFS dans FreeBSD

15

J'essaie de déterminer si ou non, ou plutôt dans quelle mesure, les xattrs sont pris en charge dans FreeBSD en utilisant ZFS. J'ai lu des informations contradictoires.

  1. zfs get xattrlistes comme il on (default)pour /, /usret /var, mais comme off (temporary)pour tous les autres ensembles de données, y compris les enfants de ceux qui sont mentionnés ci - dessus.
  2. En cours d'exécution, zfs set xattr=on zroot/usr/homeje reçois le message

    property 'xattr' not supported on FreeBSD: permission denied.

  3. Cela correspond à la zfspage de manuel :

    La xattrpropriété n'est actuellement pas prise en charge sur FreeBSD.

  4. setextattr, getextattrEt lsextattrsemblent fonctionner assez bien.
  5. J'ai également réussi à enregistrer et à restaurer un nœud de fichier de périphérique à l'aide de rsync --fake-super, et j'ai pu voir ses données à l'aide de lsextattret getextattr.
  6. Wikipedia a quelques discussions dans la page de discussion de xattr . Apparemment, il y avait une fois que ZFS soutenait xattr depuis FreeBSD 8, mais cela a été supprimé plus tard, en référence à la page de manuel (voir 3.).

Actuellement, j'ai l'impression que les attributs étendus sur zfs fonctionnent dans la pratique, mais que la xattrpropriété qui contrôlerait leur utilisation ne fonctionne pas comme dans les autres distributions zfs. Mais j'aimerais entendre cela confirmé (ou corrigé) avant de confier de grandes quantités de données de sauvegarde à un rsync --fake-superfonctionnement sur une telle machine. Je préfère ne pas perdre toutes mes métadonnées en raison de problèmes connus de xattr.

Si cela est important, il s'agit d'une toute nouvelle installation de FreeBSD 10.2 que je viens de configurer, avec ZFS configuré par le programme d'installation.

MvG
la source
1
Je l'ai posté sur le forum FreeBSD . Espérons que cela, ou la prime, ou les deux, aidera à obtenir une réponse faisant autorité à ce sujet.
MvG
1
J'ai également posté cela sur la liste de diffusion freebsd-fs . Il serait dommage que la prime expire sans réponse.
MvG
Le lien de la liste de diffusion est mort.
Mateusz Piotrowski
1
@Mateusz: Le créateur de gmane a interrompu ce service , bien qu'apparemment il y ait des négociations pour que quelqu'un d'autre le poursuive. Voici le post dans les archives FreeBSD, ou ici pour rechercher mon identifiant de message .
MvG

Réponses:

5

Comme vous l'avez trouvé, les xattrs fonctionneront, mais il y a des bords rugueux.

Parfois, vous devez aborder le code open source comme un anthropologue. Si cela n'est pas utile en soi, cela provoquera peut-être de meilleures contributions (ou éventuellement des corrections de code!)

J'ai trouvé cela dans le code source:

https://github.com/freebsd/freebsd/blob/c829c2411ae5da594814773175c728ea816d9a12/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c#L514

/*
 * Register property callbacks.
 *
 * It would probably be fine to just check for i/o error from
 * the first prop_register(), but I guess I like to go
 * overboard...
 */
error = dsl_prop_register(ds,
    zfs_prop_to_name(ZFS_PROP_ATIME), atime_changed_cb, zfsvfs);
error = error ? error : dsl_prop_register(ds,
    zfs_prop_to_name(ZFS_PROP_XATTR), xattr_changed_cb, zfsvfs);
error = error ? error : dsl_prop_register(ds,
    zfs_prop_to_name(ZFS_PROP_RECORDSIZE), blksz_changed_cb, zfsvfs);

et ce https://github.com/freebsd/freebsd/blob/386ddae58459341ec567604707805814a2128a57/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c#L302

et pourtant cela vous donne une pause: https://github.com/freebsd/freebsd/blob/e95b1e137c604a612291fd223fce89c2095cddf2/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c#L1638

Donc, je pense que ce qui se passe réellement, c'est que les xattrs fonctionnent mais la fonctionnalité pour les désactiver (ou les activer) par les propriétés de l'ensemble de données ZFS est cassée, donc le message "non pris en charge" signifie "vous êtes seul".

Il y a du code qui définit MNTOPT_XATTR mais je ne l'ai pas tracé. essayer de le changer à l'aide de zfs set vous obtient le message non pris en charge. Je suppose que cela explique la bizarrerie de la propriété zfs xattr avec /, / usr, / var et le paramètre / comportement conflictuel de / home.

Cela met en lumière les choses. https://www.lesbonscomptes.com/pages/extattrs.html

Jeremy
la source