(Illustration by Gaich Muramatsu)
Hi folks. I'm still trying to push forward the coda kernel extension for MacOS, but this has shown to be more troublesome than I expected. I have been struggling quite a while with the problem of losing all my vnodes when copying lots of files, making the system hang or crash. Loking at the FreeBSD code in coda_fsync, I see that whoever wrote this was unsure if it was wise to do an upcall into venus_fsync or not. The code goes like this: /* 850 * We can expect fsync on any vnode at all if venus is pruging it. 851 * Venus can't very well answer the fsync request, now can it? 852 * Hopefully, it won't have to, because hopefully, venus preserves 853 * the (possibly untrue) invariant that it never purges an open 854 * vnode. Hopefully. 855 */ 856 if (cp->c_flags & C_PURGING) { 857 return(0); 858 } 859 860 /* needs research */ 861 return 0; 862 error = venus_fsync(vtomi(vp), &cp->c_fid, cred, p); 863 864 CODADEBUG(CODA_FSYNC, myprintf(("in fsync result %d\n",error)); ); 865 return(error); 866 } Note the return(0) before calling venus_fsync. Can anybody explain this to me. Do we still need research ? Is is safe to do the upcall or not? The linux code seems to do the upcall. -- ChristerReceived on 2004-11-25 20:34:30