rem: err = EXDEV;
add: err = FS_EXDEV;
context: sys_link(bool kernel, int ofd, const char *oldpath, int nfd,    const char *newpath){    int             err;    vnode           *vn, *dvn;    char            filename[FILE_NAME_LENGTH];    op_link         *op;        err = get_file_fd(kernel, ofd, oldpath, TRUE, &vn);    if (err)        goto error1;    err = get_dir_fd(kernel, nfd, newpath, filename, &dvn);    if (err)        goto error2;    if (vn->ns != dvn->ns) {        err = EXDEV;        goto error3;    }    op = dvn->ns->fs->ops.link;    if (!op) {        err = EINVAL;        goto error3;    }    err = (*op)(dvn->ns->data, dvn->data, filename, vn->data);    if (err)        goto error3;    dec_vnode(dvn, FALSE);    dec_vnode(vn, FALSE);    return 0;error3:    dec_vnode(dvn, FALSE);error2:    dec_vnode(vn, FALSE);error1:    return err;}