System calls are usually wrapped in the SYSCALL_DEFINEx() macro, which is why a simple grep doesn't find them:
fs/namei.c:SYSCALL_DEFINE2(mkdir, const char __user *, pathname, int, mode)
The final function name after the macro is expanded ends up being "sys_mkdir". The SYSCALL_DEFINEx() macro adds boilerplate like tracing code that each syscall definition needs to have.