rem: return EBADF;
add: return FS_EBADF;
context: release_block(int dev, fs_off_t bnum){    cache_ent *ce;    /* printf("rlsb: %ld\n", bnum); */    LOCK(bc.lock);        ce = block_lookup(dev, bnum);    if (ce) {        if (bnum != ce->block_num || dev != ce->dev) {            panic("*** error3: looked up dev %d block %ld but found %d %ld\n",                    dev, bnum, ce->dev, ce->block_num);            UNLOCK(bc.lock);            return EBADF;        }        ce->lock--;        if (ce->lock < 0) {            printf("rlsb: whoa nellie! ce %Ld has lock == %d\n",                   ce->block_num, ce->lock);        }                    if (ce->lock == 0) {            delete_from_list(&bc.locked, ce);            add_to_head(&bc.normal, ce);        }    } else {     /* hmmm, that's odd, didn't find it */        panic("** release_block asked to find %ld but it's not here\n",               bnum);    }        UNLOCK(bc.lock);    return 0;}