I just had a very smelly guest stay with me for 5 nights, during which time he did not use the shower. He reeked of unwashed clothing and body odour, as well as a strong smell of cigarettes and weed. After he checked out, the bedroom stank and it has taken 48 hours to get rid of the smell from the rugs and curtains. On the bed I have 3 mattress protectors. I have an anti-bed bug protector closest to the mattress, then a water-proof protector and then an anti-allergy one (Protect-a-bed which is used in UK by retirement homes etc. where they have to deal with incontinence). I had to wash not only the bed linen but also wash the upper-most mattress protector and the middle layer of mattress protector as they were smelly and had sweat stains. However, my innermost mattress protector was fine, no odour, no stains. So although it might seem excessive, at least now I know my multi-layer mattress protection system works! What I may do is swap the layers so I have the water-proof protector on the top layer, directly under the sheet.
I used only 2 layers of protection on the pillows (no waterproof layer), and I had to wash the pillows as they smelled of B.O. I will be upgrading my pillow protection to 3 layers, including a water-proof layer.