The cifs code will attempt to open files on lookup under certaincircumstances. What happens though if we find that the file we openedwas actually a FIFO or other special file?

Currently, the open filehandle just ends up being leaked leading toa dentry refcount mismatch and oops on umount. Fix this by having thecode close the filehandle on the server if it turns out not to be aregular file. While we're at it, change this spaghetti if statementinto a switch too.