Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, Bruce Momjian <bruce(at)momjian(dot)us>, Robert Haas <robertmhaas(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
>> Another thing worth considering is to have pg_upgrade init, stop and >> start clusters as necessary instead of requesting the user to do it. >> I think this is two less steps. > > Then you'd need to expose the entire pg_ctl shutdown mode logic through pg_upgrade, which might not make things simpler.
What about having single user mode talk fe/be protocol, and talk to it via a UNIX pipe, with pg_upgrade starting the single user backend as a subprocess?