Stan obsługi xattr ZFS w FreeBSD

15

Próbuję ustalić, czy xattrs są obsługiwane we FreeBSD przy użyciu ZFS. Przeczytałem niektóre sprzeczne informacje.

  1. zfs get xattrWymienia się w nim jak on (default)za /, /usra /var, ale jak off (temporary)w przypadku wszystkich innych zbiorów danych, w tym dzieci z tych wymienionych powyżej.
  2. Uruchomiony zfs set xattr=on zroot/usr/homedostaję wiadomość

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

  3. Jest to zgodne ze stroną podręcznikazfs :

    Ta xattrwłaściwość nie jest obecnie obsługiwana w systemie FreeBSD.

  4. setextattr, getextattrI lsextattrwydają się działać wystarczająco dobrze.
  5. Udało mi się również zapisać i przywrócić węzeł pliku urządzenia za pomocą rsync --fake-superi widziałem jego dane za pomocą lsextattri getextattr.
  6. Wikipedia ma pewne dyskusje na stronie dyskusji xattr . Najwyraźniej kiedyś było twierdzenie, że ZFS obsługuje xattr od FreeBSD 8, ale zostało to później usunięte w odniesieniu do strony podręcznika (patrz 3.).

Obecnie mam wrażenie, że rozszerzone atrybuty ZFS działają w praktyce, ale xattrwłaściwość, która kontrolowałaby ich użycie, nie działa tak jak w innych dystrybucjach ZFS. Ale chciałbym usłyszeć to potwierdzone (lub poprawione), zanim zaufam dużej ilości danych kopii zapasowej rsync --fake-superdziałającej na takim komputerze. Wolę nie stracić wszystkich moich metadanych z powodu znanych problemów z xattr.

Jeśli to ważne, jest to bardzo świeża instalacja FreeBSD 10.2, którą właśnie skonfigurowałem, a ZFS został skonfigurowany przez instalatora.

MvG
źródło
1
I crosspostowane to forum FreeBSD . Miejmy nadzieję, że to, nagroda lub jedno i drugie pomogą uzyskać wiarygodną odpowiedź na ten temat.
MvG,
1
Ja również cross-pisał to FreeBSD-FS liście dyskusyjnej . Szkoda, że ​​wygrana wygasa bez odpowiedzi.
MvG,
Link do listy mailingowej jest martwy.
Mateusz Piotrowski
1
@Mateusz: Twórca gmane przerwał tę usługę , chociaż najwyraźniej istnieją negocjacje, aby ktoś inny mógł ją kontynuować. Oto post w archiwum FreeBSD lub tutaj, aby przeszukać mój identyfikator wiadomości .
MvG

Odpowiedzi:

5

Jak zauważyłeś, xattrs będzie działać, ale są nierówne krawędzie.

Czasami musisz podejść do kodu open source jak antropolog. Jeśli to nie jest pomocne samo w sobie, być może spowoduje to lepszy wkład (lub poprawki kodu!)

Znalazłem to w kodzie źródłowym:

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);

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

a to daje ci pauzę: https://github.com/freebsd/freebsd/blob/e95b1e137c604a612291fd223fce89c2095cddf2/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c#L38

Myślę, że tak naprawdę dzieje się to, że xattrs działają, ale funkcja ich wyłączania (lub włączania) przez właściwości zestawu danych ZFS jest zepsuta, więc komunikat „nieobsługiwany” oznacza „jesteś sam”.

Jest tam trochę kodu, który ustawia MNTOPT_XATTR, ale go nie odnalazłem. próba zmiany za pomocą zestawu zfs powoduje wyświetlenie nieobsługiwanej wiadomości. Domyślam się, że wyjaśnia to dziwność właściwości xattr zfs z /, / usr, / var oraz konfliktowe ustawienie / zachowanie / home.

To rzuca trochę światła na rzeczy. https://www.lesbonscomptes.com/pages/extattrs.html

Jeremy
źródło