smb3: fix creating FIFOs when mounting with "sfu" mount option
authorSteve French <stfrench@microsoft.com>
Fri, 20 Oct 2023 04:01:49 +0000 (23:01 -0500)
committerSteve French <stfrench@microsoft.com>
Tue, 31 Oct 2023 17:23:11 +0000 (12:23 -0500)
commit72bc63f5e23a38b65ff2a201bdc11401d4223fa9
tree3b8a8201e71711667ae74744cfbd8d8ba3bc84a6
parent7588b83066db9b9dc10c1a43b8e52a028ad327d2
smb3: fix creating FIFOs when mounting with "sfu" mount option

Fixes some xfstests including generic/564 and generic/157

The "sfu" mount option can be useful for creating special files (character
and block devices in particular) but could not create FIFOs. It did
recognize existing empty files with the "system" attribute flag as FIFOs
but this is too general, so to support creating FIFOs more safely use a new
tag (but the same length as those for char and block devices ie "IntxLNK"
and "IntxBLK") "LnxFIFO" to indicate that the file should be treated as a
FIFO (when mounted with the "sfu").   For some additional context note that
"sfu" followed the way that "Services for Unix" on Windows handled these
special files (at least for character and block devices and symlinks),
which is different than newer Windows which can handle special files
as reparse points (which isn't an option to many servers).

Cc: stable@vger.kernel.org
Reviewed-by: Paulo Alcantara (SUSE) <pc@manguebit.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/client/cifspdu.h
fs/smb/client/inode.c
fs/smb/client/smb2ops.c