A file that's the target of links is normally counted once, in the first directory that is traversed. The -p option changes this accounting to spread the file across all of its directories by causing only 1/nth of the file to be counted per occurrence in a directory, where n is the number of references to the file.
The -l option restricts searches to the file system containing name. The -s option causes only the grand total to be given. The -a option causes an entry to be generated for each file. If neither -s or -a is specified, an entry is generated for each directory only.
If there are too many distinct linked files, du counts the excess files multiply.
If multiple names are specified, then du forks a separate process to handle each additional one. Because these processes don't share information, linked files might be counted more than once. For example, you can get different information from `du *' than from `du .'.