rem: return ENOMEM;
add: return FS_ENOMEM;
context: grow_hash_table(hash_table *ht){    int        i, omax, newsize, newmask;    fs_off_t      hash;    hash_ent **new_table, *he, *next;        if (ht->max & ht->mask) {        printf("*** hashtable size %d or mask %d looks weird!\n", ht->max,               ht->mask);    }    omax    = ht->max;    newsize = omax * 2;        /* have to grow in powers of two */    newmask = newsize - 1;    new_table = (hash_ent **)calloc(newsize, sizeof(hash_ent *));    if (new_table == NULL)        return ENOMEM;    for(i=0; i < omax; i++) {        for(he=ht->table[i]; he; he=next) {            hash = he->hash_val & newmask;            next = he->next;                        he->next        = new_table[hash];            new_table[hash] = he;        }    }        free(ht->table);    ht->table = new_table;    ht->max   = newsize;    ht->mask  = newmask;            return 0;}