But both the remove() implementations (in bucket and user) end up calling down into remove_entry() (and it's only invoked by radosgw-admin metadata rm); do we actually need both of them as functions people can access?
I think they at least need to get some names and documentation that more clearly demarcate their intended users and side effects.