人生という名の酷道で遭難中
https://www.caspernet.net/~wata/?m=20171209#p01
投稿日: 2017年12月9日
netatalk3.1.11&FreeBSD11.1/zfsのEAはいけてない
投稿日: 2017年12月9日
2019/11/7 追記
netatalk3.1.12&FreeBSD12.0では、3番目以降のEAが「読めたり、読めなかったり」します。ワケワカラン…。
プレビューやらXcodeやらのApple謹製アプリで上書き保存がエラーになる件、ea=auto|sys|sambaだとやっぱりnetatalk壊れてました。
FreeBSD/zfsにおける、netatalkのea=auto|sys|sambaについてまとめると…、
Apple謹製アプリの保存時、3つのEAが付けられる。
Netatalkは自身が扱うmeta情報としてFinderinfo?をorg.netatalk.MetadataとしてEAに保存する。
macOSからの書込みだと全てのEAはきちんと保存(FreeBSD内で確認)される。
macOSで読み出す時に「3番目以降のEA」が読めない。
EAにはファイルシステムとして格納順があるが、netatalkが保存するとランダム?な順で保存される。
1番目/2番目にどのEAが格納されるかによって、上書き保存がエラーになったりならなかったりする。
ea=adでは問題無く全てのEAが読める。(finderinfoだけは、なぜかorg.netatalk.Metadataとして勝手にEAに保存される。)
元ファイルのEA
com.apple.lastuseddate#PS 16
com.apple.metadata:_kMDItemUserTags 42
com.apple.metadata:kMDLabel_m7fhm3f5avipv53sr4adlox73i 89
↑をnetatalkへコピーしたファイルのEA(FreeBSD内からlsextattr)↓
com.apple.lastuseddate#PS
org.netatalk.Metadata
com.apple.metadata:_kMDItemUserTags
com.apple.metadata:kMDLabel_m7fhm3f5avipv53sr4adlox73i
↑をnetatalk経由でmacOSから見えるEA(ls -l@)↓
com.apple.lastuseddate#PS 16
com.apple.metadata:_kMDItemUserTags 42
com.apple.metadata:kMDLabe -1
_m7fhm3f5avipv53sr4adlox73i -1
他のOSやUFSは知らんけど、FreeBSD/zfsでnetatalkでマトモにEA扱うには._ファイルばらまきながらea=adで運用するしかないっぽい。
ただ制限として、dbdコマンドが使えなくなります。afp.confの内容見ずに、FilesystemがEA対応なら問答無用にAppleDoubleをEAに変換してぶち込んでしまいます。
ea=adとしても、org.netatalk.Metadataが勝手にEAに保存される件といい、EA対応のFilesystem上でのea=adのテストが十分に行われていないっぽい感じ。一方でFreeBSD/zfs側は、EAのon/offを制御出来ないというね…。
2017/12/20追記:
ea=adで使ってると,logに下記のようなエラーが大量に…。どないせーっちゅうねん。
afpd[xxx] {ad_open.c:547} (warn:ad): ad_valid_header_osx(“/hoge/._hoge::EA::com.apple.quarantine”): not an adouble:osx file

コメント