1. A method of data transfer in a data processing system having a shared data resource and a network of a plurality of nodes, the shared data resource accessible by a plurality of request nodes of the network via a home node of the network, where a home node serves as a home for data associated with a set of data addresses where the plurality of nodes access the shared data resource via the home node, the method comprising: receiving, by the home node, a read request for data stored at a system address in the shared data resource, where the read request is sent to the home node by a first request node of the plurality of request nodes; responsive to the read request, the home node: determining, by a snoop filter controller of the home node, if the requested data is stored in a cache of the home node or in a local cache of one or more second request nodes of the plurality of request nodes; when the requested data is not stored in a cache of the home node but is stored in a local cache of one or more second request nodes: sending, by the snoop filter controller of the home node, a snoop to the one or more second request nodes to request the requested data; when requested data is returned to the home node in response to the snoop, filling the cache of the home node with the returned requested data, marking the returned requested data in the cache as ‘dirty’ to indicate that the returned requested data has not been written back to the shared data resource in response to the read request and updating a snoop filter of the home node to indicate that the first request node has a copy of the requested data; and forwarding the returned requested data to the first request node, when the requested data is not stored in the cache of the home node or in a local cache of one or more second request nodes: retrieving the requested data from the shared data resource; updating the snoop filter of the home node to indicate that the first request node has a copy of the requested data; and forwarding the retrieved requested data to the first request node, and when the requested data is stored in the cache of the home node: updating the snoop filter of the home node to indicate that the first request node has a copy of the requested data; and forwarding the retrieved requested data to the first request node.