[PATCH][CIFS] allow creating FIFOs when "sfu" mount option specified

Brown, James William jim.brown at miami.edu
Fri Oct 20 15:05:15 UTC 2023


On 10/20/2023 12:32 AM, Steve French via samba-technical wrote:
> CAUTION: This email originated from outside the organization. DO NOT CLICK ON LINKS or OPEN ATTACHMENTS unless you know and trust the sender.
>
> mb3: 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).
>
> @@ -5135,6 +5135,12 @@ smb2_make_node(unsigned int xid, struct inode *inode,
>   		pdev->minor = cpu_to_le64(MINOR(dev));
>   		rc = tcon->ses->server->ops->sync_write(xid, &fid, &io_parms,
>   							&bytes_written, iov, 1);
> +	} else if (S_ISBLK(mode)) {
> +		memcpy(pdev->type, "LnxFIFO", 8);
> +		pdev->major = 0;
> +		pdev->minor = 0;
> +		rc = tcon->ses->server->ops->sync_write(xid, &fid, &io_parms,
> +							&bytes_written, iov, 1);
>   	}
>   	tcon->ses->server->ops->close(xid, tcon, &fid);
>   	d_drop(dentry);
> -- 
Shouldn't "else if (S_ISBLK(mode))" be "S_ISFIFO"?

else if (S_ISBLK(mode))

else if (S_ISBLK(mode))



More information about the samba-technical mailing list