mkdir() will fail and no directory will be created if:
[ENOTDIR]
A component of the path prefix is not a directory.
[ENAMETOOLONG]
A component of a pathname exceeded {NAME_MAX} characters, or an entire path name exceeded {PATH_MAX} characters.
[ENOENT]
A component of the path prefix does not exist.
[EACCES]
Search permission is denied for a component of the path prefix.
[ELOOP]
Too many symbolic links were encountered in translating the pathname.
[EROFS]
The named file resides on a read-only file system.
[EEXIST]
The named file exists.
[ENOSPC]
The new directory cannot be created because there is no space left on the file system that will contain the directory.
[ENOSPC]
There are no free inodes on the file system on which the directory is being created.
[EDQUOT]
The new directory cannot be created because the user's quota of disk blocks on the file system that will contain the directory has been exhausted.
[EDQUOT]
The user's quota of inodes on the file system on which the directory is being created has been exhausted.
[EIO]
An I/O error occurred while making the directory entry or allocating the inode.
[EIO]
An I/O error occurred while reading from or writing to the file system.
[EFAULT]
path points outside the process's allocated address space.