VFS rename
authorBarret Rhoden <brho@cs.berkeley.edu>
Wed, 20 Aug 2014 18:22:31 +0000 (11:22 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Wed, 20 Aug 2014 18:29:53 +0000 (11:29 -0700)
commit9441c894fd15e9bbaa3113c78abef8beeedad840
treee43c3ee60e84a5091f80fd286d6a96c242d26167
parent62bd713804740712b44f5bca705fa54d2dcb3a08
VFS rename

Works, but it's ridiculously racy, as is most all of the VFS.  If you
have renames concurrent with other renames or much of anything, you
could bust the dentry tree or who knows what else.

The VFS (and anything that does a similar task, like a 9ns device) needs
a serious overhaul for both concurrency protection and scalability.

I also don't bother checking if new_path contains old_path.  A check
would help, but we're still in "serious redesign" territory.  Check out
my comments for more info.

That being said, you can mv files and directories around with busybox.

I didn't use testrename much, mv worked quite well.  But I'll leave it
around for now for debugging with 9ns (which needs work).  Also, glibc's
rename work, and there is no need for a separate rename() for the test
program.  Calling the syscall directly means you had an old glibc
(either not compiled right, or not loaded in KFS).
kern/include/vfs.h
kern/src/kfs.c
kern/src/syscall.c
kern/src/vfs.c
tests/testrename.c