rem: err = EINVAL;
add: err = FS_EINVAL;
context: rootfs_mount(nspace_id nsid, const char *device, ulong flags, void *parms,        size_t len, void **data, vnode_id *vnid){    int             err;    nspace          *ns;    vnode           *root;    vnode_id        rvnid;    if (device || parms || (len != 0)) {        err = EINVAL;        goto error1;    }    ns = (nspace *) malloc(sizeof(nspace));    if (!ns) {        err = ENOMEM;        goto error1;    }    root = (vnode *) malloc(sizeof(vnode));    if (!root) {        err = ENOMEM;        goto error2;    }    rvnid = 1;    ns->nsid = nsid;    ns->vnnum = 0;    ns->nxvnid = rvnid;    ns->root = root;    if (new_lock(&ns->lock, "rootfs") < 0) {        err = -1;        goto error3;    }    ns->skiplist = NewSL(&compare_vnode, NULL, NO_DUPLICATES);    if (!ns->skiplist) {        err = -1;        goto error4;    }    root->vnid = rvnid;    root->parent = root;    root->ns = ns;    root->removed = FALSE;    root->name = NULL;    root->next = root->prev = NULL;    root->head = NULL;    root->symlink = NULL;    /* ### do it for real */    root->uid = 0;    root->gid = 0;    root->mode = MY_S_IFDIR | 0777;    root->mtime = time(NULL);    err = new_vnode(nsid, rvnid, root);    if (err)        goto error5;    *data = ns;    *vnid = rvnid;    return 0;error5:    FreeSL(ns->skiplist);error4:    free_lock(&ns->lock);error3:    free(root);error2:    free(ns);error1:    return err;}