cofsでmountしたWindowsのファイルをemacsで保存する
coLinux上からemacsでWindows上のファイルも編集したい!
ということで cofs を導入。
まず、前記事(http://d.hatena.ne.jp/tokorom/20071125:before)でやったようにcoLinuxのconfファイルでcofs0の設定があらかじめされていることが前提。
mountは
mount -t cofs 0 /mnt/c -o uid=xxxx,gid=xxxx
これだとユーザxxxxに対してフルアクセス権が与えられる。
権限を調整したいなら fmask dmask オプションを使うとのこと。
で、最終的には fstab に
cofs0 /mnt/c cofs uid=user00,gid=user00 0 0
とした。
これで、/mnt/c にアクセスすることで、WindowsのCドライブ以下のファイルを直接読み込み、書き込みできるようになった♪
問題発生!!
しかし、いざ emacs でファイル編集してみると・・・
emacsから/mnt/c以下のファイルが保存できない!
これじゃー意味ねー!!
ググってみると
http://d.hatena.ne.jp/KGA/20070903/1188799784
に、fsyncというのがWindowsで使えないからダメとの記述を発見。
さらにググって、
write-region-inhibit-fsync
という変数をtにしておけば、emacsくんがfsyncを呼ばないということが判明。
この設定をしたら無事にemacsから保存できたーっ!
fsyncをOFFにするとどうなる?
しかし、fsyncが使われなくなったことによってどうなるかが微妙に不安。
http://merges.ubuntu.com/e/emacs22/emacs22_22.1+1-2.1.patch
には「write-region-inhibit-fsyncを使うとデータ破損の危険があるため注意して使ってね」と書いてあった(英語の理解が間違ってたらごめんなさい)。
なんかこわいなー。
fsyncについて少し調べてみると、
http://www.postgresql.jp/document/current/html/runtime-config-wal.html
に記述を発見。
たぶんここに書かれているfsyncと同等と思うのだが、どうやら、書き込み途中にOSが止まったりしてもファイルが壊れないとか、より信頼性を高めるためのものらしい。
そういう事態はレアケースということで、個人で遊ぶぶんには気にしなくてよいでしょう。
ついでに、DBとかでもfsyncを使わないようにすると書き込み速度が速くなるとのこと。なんとなくTCPとUDPの関係が思い浮かぶ。
ということで気にしないことにしました。