simply creates a file /forcefsck. This file will cause the system to run fsck on the next reboot before the filesystem is mounted. Its similar to when you try to run chkdsk in Windows and it says it can't but it will do it on the next reboot.
So its pretty safe and with any luck it will fix your problem.
There is a specific difference which when we read it twice might make more sense.
-p - Automatically repair the file system without any questions.
-y - Assume an answer of `yes' to all questions.
So fsck -p will try to fix the file system automatically without any user intervention. It is most likely to take decisions such as yes or no by itself.
However, fsck -y will just assume yes for all questions.
An example can be thought like,
If some changes need to be made in a partition, fsck -y will just go ahead and assume yes and make the changes.
However, fsck -p will take the correct decision which can be either yes or no.
http://unix.stackexchange.com/questions ... ns-y-and-p