Can someone tell me if for trunk links (between switches) should I trust COS or DSCP. Old QOS SRND says trust COS for all trunk links. But others are saying use trust dcscp on trunk links? Which is correct?
No - it does not have to be CoS, you need to decide what your global policy is.
If it were me, and I was performing QoS on some IP WAN links, then I would standardize to trust DSCP everywhere, and write my QoS polcies accordingly.
Added to the fact things like Video Conf units can be configured for QoS, and only use IP Precedence/DSCP markings, as they will often connect to a normal switch port, which will not have the CoS value marked etc.
Considering that the CoS is ONLY in the 802.1q tag means that if you are using ISL you need to trust the layer 3 marking.
You also need to consider - which ever one you trust, the switch will re-mark the other according to the mapping tables.
i.e if you trust CoS, when the switch recevies a frame with a CoS of say 5 (voice) the switch will remark/mark the layer 3 ToS to DSCP40. If you later perform QoS on DSCP and you are looking to prioritize voice DSCP EF - this will not work (You need to check the mapping tables to make sure this does not happen)
And vice versa if you are performing QoS on a layer 2 trunk elsewhere, it also depends on switching platform.
Read the new QoS SRND for more reference material:-