func (f *Fid) Walk(name []string, fn WalkFunc) error {
	if len(name) > plan9.MAXWELEM {
		return perror("too many names in walk")
	}
	f.New.node = f.node
	return walk(f.node, name, func(n *node, p []string) error {
		f.New.node = n
		return fn(f.New, p)
	})
}
Walk walks the file tree.
package ramfs
import (
	"sync"
	"9fans.net/go/plan9"
)
type Fid struct {
	mu     sync.RWMutex
	num    uint32
	uid    string
	node   *node
	opened bool
	buf    []byte  
	ref    uint16
	New    *Fid
}
func (f *Fid) incRef() {
	f.mu.Lock()
	f.ref++
	f.mu.Unlock()
}
func (f *Fid) decRef() uint16 {
	f.mu.Lock()
	defer f.mu.Unlock()
	if f.ref == 0 {
		return 0
	}
	f.ref--
	return f.ref
}
func (f *Fid) refCount() uint16 {
	f.mu.RLock()
	defer f.mu.RUnlock()
	return f.ref
}
func (f *Fid) isOpen() bool {
	f.mu.RLock()
	defer f.mu.RUnlock()
	return f.opened
}
type WalkFunc func(fid *Fid, path []string) error