The following function document is incorrect:
/* @param mtime new modification time or 0 for only set access time in seconds
@param atime new access time or 0 for only set modification time in seconds
int hdfsUtime(hdfsFS fs, const char* path, tTime mtime, tTime atime);
Currently, setting mtime or atime to 0 has no special meaning. That is, file last modified time will change to 0 if the mtime argument is 0.
libhdfs should translate mtime = 0 or atime = 0 to the special value -1, which in HDFS means "don't change this time."