The easy answer is that it was easier to implement. The per-process mount table knows nothing about the hierarchical structure of the bindings. When you bind something, it is to a file, not to a path. If you later bind to something higher in the tree, we don't know enough to change the lower binding. I do think that (b) is confusing.