<div dir="ltr">Hi.<div><br></div><div>I'm working through the process of converting the libvirt driver in Nova to privsep with the assistance of Tony Breeds. For various reasons, I started with removing all the calls to the chown binary and am replacing them with privsep equivalents. You can see this work at:</div><div><br></div><div>    <a href="https://review.openstack.org/#/q/topic:hurrah-for-privsep">https://review.openstack.org/#/q/topic:hurrah-for-privsep</a></div><div><br></div><div>The one remaining use of chown in libvirt in that topic is now a tool called idmapshift, which is used by the lxc container support to rearrange file ownership for filesystems mapped into containers. The tool is a separate binary, which the libvirt driver then runs as root.</div><div><br></div><div>This binary is relatively easy to replace with python code inside the main nova binary in a privsep world -- its basically a refactor with low impact. That would be nice because it means we could stop building and shipping an extra binary.</div><div><br></div><div>However, that binary appears to do a whole bunch of extra things which nova itself doesn't use.</div><div><br></div><div>So... Do we keep carrying a binary that we wouldn't be using because it might be useful to someone? Do you throw away the unused bits of code and just refactor the bit we use? Do I bravely run away? If we remove the binary, do we do some form of deprecation first? Or because its "internal only" just remove it?</div><div><br></div><div>Discuss.</div><div><br></div><div>Michael</div></div>