On Solaris 10, when only openat() is called (for accessing EA data) on a file this updates the mtime of the file to the current time even if no extended attribute is being read or written. This is definetely a (not very well known) Solaris bug. Solaris 11 is less broken in the respect, here an openat() call does not update the mtime but the mtime of the file *is* being updated when an extended attribute is being written. For the way EAs are implmented in Solaris this might the intended behaviour though. mtime updates when EAs are modified are not desired by Samba though. We might consider to save and reset the mtime on EA changes. Thoughts ?
small correction: modification of EAs does not update the mtime on Solaris, don't know why I had in mind that it would. On the Solaris 11 machines I had access to there where also pre-existing EAs, maybe just for that reason the mtime update issues do not pop up there and would pop up if there were files without any pre-existing EAs.