[RFC] Passing stream to userspace

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi there,

I was promised you (viro, hch) have a decided opinion on this topic. The
original mail ("Getting a lot of fs-generated information to user
space") contains a lot of background and is way too long. Point is: I
want to get a bunch of data generated by the kernel (btrfs) to userland
(really).

Matthew Wilcox suggested to use an ioctl changing f_ops.read. Userland
would be like:

> int fd = open("/mnt/btrfs");
> ioctl(fd, BTRFS_IOC_STREAM);
> while (...) {
> 	read(fd, buf, 4096);
> 	...
> }
> close(fd);

To avoid doing buffering myself, I suggested passing a fd to the kernel
where it is expected to dump the generated information, like:

> int fd;
> int pipefd[2];
> struct io_args io_args;
>
> fd = open("/mnt/btrfs");
> pipe(pipefd);
> io_agrs.dest = pipefd[0];
>
> /* thread 1 */
> ioctl(fd, BTRFS_IOC_STREAM, &io_args);
> /* thread 2 */
> while (...) {
> 	read(pipefd[1], buf, 4096);
> 	...
> }

Any opinions on those or different suggestions? Thanks,
-Jan
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux