Reference counting is not always correct. For example, in unlinkat
if (res < 0)
return posix_error();
Py_DECREF(opath);
(return None)
the DECREF should be before the error check. (Note that you can use the Py_RETURN_NONE macro to save INCREF'ing Py_None explicitly.)
Sometimes you use posix_error, sometimes posix_error_with_allocated_filename; is that deliberate?
Also, the documentation for each function should get ".. versionadded:: 3.3" tags.
Otherwise, this looks good and ready for inclusion when py3k is open for new features again.