This might be a question asked before, but I just couldn't effectively search the whole archives, So please bear me and kindly advise. We have a 3rd party application (video streaming kind of) which uses directIO (O_DIRECT). On the server side, in the posix translator, we added the "option o-direct enable" On the client side, we mounted as "mount -t glusterfs -o direct-io-mode=enable server1:/test-volume /mnt/glusterfs" But the application still fails with error (cannot create/open file with O_DIRECT). Then we trace to the fuse module in the kernel, which has following checking: int fuse_open_common(struct inode *inode, struct file *file, bool isdir) { struct fuse_conn *fc = get_fuse_conn(inode); int err; /* VFS checks this, but only _after_ ->open() */ if (file->f_flags & O_DIRECT) return -EINVAL; err = generic_file_open(inode, file); looks like regardless what we configure on the gluster side, the FUSE still rejects the O_DIRECT. Could someone shed light ? we're also trying to take out the O_DIRECT checking in FUSE module, to see what will happen, will report soon. Bill Bao -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://supercolony.gluster.org/pipermail/gluster-users/attachments/20120314/e6686c39/attachment.html>
Currently, FUSE doesn't support O_DIRECT, If you need to use O_DIRECT with a FUSE mounted volume, you should check out liboindirect. https://github.com/avati/liboindirect There have been patches submitted to the FUSE project to properly support O_DIRECT, but they have not been accepted yet. -- Adam Tygart Beocat Sysadmin On Tue, Mar 13, 2012 at 20:59, Bill Bao <bill at uit.com.cn> wrote:> This might be a question asked before, but I just couldn?t effectively > search the whole archives, > > So please bear me and kindly advise. > > > > We have a 3rd party application (video streaming kind of) which uses > directIO (O_DIRECT). > > On the server side, in the posix translator, we added the ?option o-direct > enable? > > On the client side, we mounted as ?mount -t glusterfs -o > direct-io-mode=enable server1:/test-volume /mnt/glusterfs? > > > > But the application still fails with error (cannot create/open file with > O_DIRECT). > > > > Then we trace to the fuse module in the kernel, which has following > checking: > > > > int?fuse_open_common(struct?inode?*inode,?struct?file?*file,?bool?isdir) > > { > > ????????struct?fuse_conn?*fc?=?get_fuse_conn(inode); > > ????????int?err; > > ????????/*?VFS?checks?this,?but?only?_after_?->open()?*/ > > ????????if?(file->f_flags?&?O_DIRECT) > > ????????????????return?-EINVAL; > > ????????err?=?generic_file_open(inode,?file); > > > > looks like regardless what we configure on the gluster side, the FUSE still > rejects the O_DIRECT. > > Could someone shed light ? we?re also trying to take out the O_DIRECT > checking in FUSE module, > > to see what will happen, will report soon. > > > > Bill Bao > > > > > > > > > > > > > _______________________________________________ > Gluster-users mailing list > Gluster-users at gluster.org > http://gluster.org/cgi-bin/mailman/listinfo/gluster-users >
On 03/14/2012 07:29 AM, Bill Bao wrote:> > This might be a question asked before, but I just couldn't effectively > search the whole archives, > > So please bear me and kindly advise. > > We have a 3^rd party application (video streaming kind of) which uses > directIO (O_DIRECT). > > On the server side, in the posix translator, we added the "option > o-direct enable" > > On the client side, we mounted as "mount -t glusterfs -o > direct-io-mode=enable server1:/test-volume /mnt/glusterfs" > > But the application still fails with error (cannot create/open file > with O_DIRECT). > > Then we trace to the fuse module in the kernel, which has following > checking: > > int fuse_open_common(struct inode *inode, struct file *file, bool isdir) > > { > > struct fuse_conn *fc = get_fuse_conn(inode); > > int err; > > /* VFS checks this, but only _after_ ->open() */ > > * if (file->f_flags & O_DIRECT)* > > * return -EINVAL;* > > err = generic_file_open(inode, file); > > looks like regardless what we configure on the gluster side, the FUSE > still rejects the O_DIRECT. > > Could someone shed light ? we're also trying to take out the O_DIRECT > checking in FUSE module, > > to see what will happen, will report soon. > > Bill Bao >O_DIRECT support for fuse was added recently. Check the fsdevel archives.> > > _______________________________________________ > Gluster-users mailing list > Gluster-users at gluster.org > http://gluster.org/cgi-bin/mailman/listinfo/gluster-users-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://supercolony.gluster.org/pipermail/gluster-users/attachments/20120314/df90cad4/attachment.html>