From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anand Jain Subject: Re: [RFC] Passing stream to userspace Date: Tue, 16 Aug 2011 10:49:31 +0800 Message-ID: <4E49DABB.5000404@oracle.com> References: <4E454718.6000206@jan-o-sch.net> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Cc: Al Viro , Christoph Hellwig , Chris Mason , Matthew Wilcox , linux-btrfs , linux-fsdevel@vger.kernel.org To: Jan Schmidt Return-path: In-Reply-To: <4E454718.6000206@jan-o-sch.net> List-ID: Jan, I personally like the way we interact with the kernel using the /sys or /proc that's a cool way, mainly because no C code is required. A generic interface like that (or btrfs-control with more commands supported) will enhance troubleshooting and debugging, application interface. or did I miss anything ? Cheers, Anand On 08/12/2011 11:30 PM, Jan Schmidt wrote: > 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@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html