Streams support in Linux

Jeremy Allison jra at samba.org
Tue Aug 28 19:47:42 UTC 2018


On Tue, Aug 28, 2018 at 02:43:12PM -0500, Steve French wrote:
> > > On Tue, Aug 28, 2018 at 1:12 PM Jeremy Allison <jra at samba.org> wrote:
> >
> > You shouldn't need a read stream ioctl. You only need 3 I think.
> >
> > struct open_stream {
> >         const char *stream_name;
> >         int open_flags,
> >         int stream_fd;
> > };
> >
> > struct open_stream os = {
> >                 "MyStreamName",
> >                 O_CREAT,
> >                 -1
> > };
> >
> > 1). ioctl(file_or_dir_fd, FIO_OPEN_STREAM, &os);
> >
> > Now read/write the os->stream_fd for the created
> > stream as desired. Use O_RDONLY|O_WRONLY|O_RDWR
> > in the flags field as needed.
> >
> > 2). ioctl(file_or_dir_fd, FIO_ENUM_STREAMS_DIR, &new_fd);
> >
> > Now use readdir() to get the list.
> >
> > 3). ioctl(stream_fd, FIO_DELETE_STREAM, 0);
> >
> > Delete the stream opened on stream_fd.
> >
> > Doesn't that cover everything ?
> 
> This would be trickier to code than you might think.
> 
> In particular I think the reaadir to list streams is going to be
> harder than the ioctl
> I had coded for it.   I also had code at one point to convert streams
> to xattrs etc.

Why is that ? You control any fd's you return,
so you can vector any readdir call into an
enum_streams request ?

I wouldn't return streams as xattrs, as they
are separately exposed and already have meaning
in SMB1/2/3.



More information about the samba-technical mailing list