func (gpf *GoPathFs) GetAttr(name string, context *fuse.Context) (*fuse.Attr, fuse.Status) {
	if name == "" {
		return gpf.getTopDirAttr()
	}
	if name == gpf.cfg.GoPkgPrefix {
		return gpf.getFirstPartyDirAttr()
	}
	prefix := gpf.cfg.GoPkgPrefix + pathSeparator
	if strings.HasPrefix(name, prefix) {
		name = name[len(prefix):]
		attr, status := gpf.getFirstPartyChildDirAttr(name)
		if status == fuse.OK {
			return attr, fuse.OK
		}
	}
	for _, v := range gpf.cfg.FallThrough {
		if name == v || strings.HasPrefix(name, v) {
			return gpf.getRealDirAttr(filepath.Join(gpf.dirs.Workspace, name))
		}
	}
	for _, v := range gpf.cfg.Vendors {
		fname := filepath.Join(gpf.dirs.Workspace, v, name)
		attr, status := gpf.getRealDirAttr(fname)
		if status == fuse.OK {
			return attr, fuse.OK
		}
		fname = filepath.Join(gpf.dirs.Workspace, "bazel-genfiles", v, name)
		attr, status = gpf.getRealDirAttr(fname)
		if status == fuse.OK {
			return attr, fuse.OK
		}
	}
	return nil, fuse.ENOENT
}
GetAttr overwrites the parent's GetAttr method.
package gopathfs
import (
	"path/filepath"
	"strings"
	"github.com/hanwen/go-fuse/fuse"
	"golang.org/x/sys/unix"
)