From: Maxim V. P. <mpa...@pa...> - 2012-09-28 09:24:27
|
Hi Lyndon, I think fusexmp and fusexmp_fh are just simple examples, something like 'hello world!'. IMHO, they are not supposed to support all possible use-cases. As for fusexmp, it should work 'as is' because it re-opens file on each write w/o O_DIRECT. See its xmp_write. It's strange that it doesn't work for you. As for fusexmp_fh, you can either patch fusexmp_fh to realloc data buffer by posix_memalign, fill it with data and pass it to pwrite. Or locate where userspace fuse library allocates data-buffer for write and substitute malloc with posix_memalign there. Thanks, Maxim 09/28/2012 12:44 PM, Lyndon Clarke пишет: > Hi Mi Jinlong, > > Thanks - the kernel is 3.4.6 (latest and greatest open suse). > > So, is this the expected behaviour? Is there anything I can do to get these buffers aligned? Or perhaps is there some known reason I am should not be thinking about O_DIRECT through FUSE in a recent kernel? > > Best Wishes, > Lyndon > > -----Original Message----- > From: Mi Jinlong [mailto:kin...@gm...] > Sent: 28 September 2012 02:54 > To: fus...@li... > Subject: Re: [fuse-devel] fusexmp, O_DIRECT, pwrite, EINVAL > > 于 2012-9-27 21:50, Lyndon Clarke 写道: >> Hello, >> >> I've been experimenting with fusexmp and fusexmp_fh as a learning exercise. I have a small query about writes to files opened with O_DIRECT ... >> >> I have a 4KB aligned buffer in a simple little program which opens with O_DIRECT and does some writes (or reads). It runs fine against ext4. When I bring fusexmp[_fh] into the loop, the writes fail with EINVAL. >> >> I can see that xmp_write_buf in fusexmp_fh is being invoked, and fuse_buf_copy is returning -EINVAL. For a little more information, if I remove the registration of xmp_write_buf, then I can see that xmp_write is being invoked, and the down-call of pwrite sets errno to EINVAL. I think this is happening because the buf parameter is not sector aligned. >> >> Is this the expected behaviour? Is there anything I can do to get these buffers aligned? Or perhaps is there some known reason I am should not be thinking about O_DIRECT through FUSE? > As I known, FUSE supports O_DIRECT at the following patch, http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=4273b793ec68753cc3fcf5be7cbfd88c2be2058d > > If your kernel is older, O_DIRECT isnot supported. > > thanks, > Mi Jinlong > > > ------------------------------------------------------------------------------ > Got visibility? > Most devs has no idea what their production app looks like. > Find out how fast your code is with AppDynamics Lite. > http://ad.doubleclick.net/clk;262219671;13503038;y? > http://info.appdynamics.com/FreeJavaPerformanceDownload.html > _______________________________________________ > fuse-devel mailing list > fus...@li... > https://lists.sourceforge.net/lists/listinfo/fuse-devel > > This message has been scanned by MailController - portal1.mailcontroller.co.uk > > This message has been scanned by MailController - portal1.mailcontroller.co.uk > ------------------------------------------------------------------------------ > Got visibility? > Most devs has no idea what their production app looks like. > Find out how fast your code is with AppDynamics Lite. > http://ad.doubleclick.net/clk;262219671;13503038;y? > http://info.appdynamics.com/FreeJavaPerformanceDownload.html > _______________________________________________ > fuse-devel mailing list > fus...@li... > https://lists.sourceforge.net/lists/listinfo/fuse-devel |