cofsでmountしたWindowsのファイルをemacsで保存する

coLinux上からemacsWindows上のファイルも編集したい!
ということで 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を使わないようにすると書き込み速度が速くなるとのこと。なんとなくTCPUDPの関係が思い浮かぶ。

ということで気にしないことにしました。