First, the system call handler
 file:/usr/src/linux/arch/i386/kernel/entry.S , look for ENTRY(sys_call_table) and ENTRY(sys_call)
Next, the actual system call
 file:/usr/src/linux/fs/read_write.c look for sys_read
Which gets vectord by the struct in
 file:/usr/src/linux/fs/ext2/file.c look for generic_file_read
to generic_file_read in
 file:/usr/src/linux/mm/filemap.c , look for generic_file_read