Solving problems regarding the optimal control of partial differential equations (PDEs) - also known as PDE-constrained optimization - is a frontier area of numerical analysis. Of particular interest is the problem of flow control, where one would like to effect some desired flow by exerting, for example, an external force. The bottleneck in many current algorithms is the solution of the optimality system - a system of equations in saddle point form that is usually very large and ill-conditioned. In this talk I will describe a block-diagonal preconditioner for the minimal residual method which can be applied to such problems where the PDEs are the Stokes equations. We will consider only distributed control here, although other problems - for example boundary control - can be solved in a similar way. I will present numerical results, and compare these with those obtained by solving the equivalent forward problem using similar techniques.