The cdrom driver does an order-4 allocation and the open will fail if that
allocation does not succeed. This happened to me on an unstressed 900MB
machine.
So add the __GFP_REPEAT flag in there - this will cause the page allocator to
keep on freeing pages until the allocation succeeds.
It can in theory livelock but in practice I expect it is OK: the user should
just stop running dbench or whatever it is which is gobbling all the memory
and the mount/open will then succeed.