Deployment of shared storage systems is increasing with rapid adoption of virtualization technologies to provide isolation, better management and high utilization of resources. Quality of service (QoS) in such environments is quite desirable for meeting IO demands of virtual machines. The lack of QoS support at typical storage arrays, simultaneous access by multiple hosts and concerns regarding underutilization of resources makes this problem quite challenging. In this paper, we study the problem of providing fairness among hosts accessing a storage array in a distributed manner while maintaining high efficiency. Towards this goal, we investigate whether local latency estimates at each host can be used to detect overload and whether limiting host issue queue lengths can provide fairness across hosts. In principle, the approach is similar to mechanisms used by TCP at each host for flow control. Initial experiments provide encouragement to develop a complete framework.