luvit/luvit — pull request #223 by philips (2012-05-15 23:49:10+00:00)
Title: luv_fs: fix gc of string during a fs.write

In virgo we hit a bug that only revealed itself when we were writing out to a
file over NFS. This is likely because the NFS write out took a relatively long
time and revealed a race. Example corrupted text file:

#
ch0002
tests/tmp/0002.chk
OK
»A¿7—A
ch0003
tests/tmp/0003.chk
OK
1337118370

Notice that the fifth line is garbage. That is because the string was getting
GC'd before it was written to disk. So, we need to ref the string so this
doesn't happen just as we ref the callback function.