From owner-freebsd-bugs@FreeBSD.ORG Sat Aug 16 09:10:53 2014 Return-Path: Delivered-To: freebsd-bugs@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8C8ACF09 for ; Sat, 16 Aug 2014 09:10:53 +0000 (UTC) Received: from kenobi.freebsd.org (kenobi.freebsd.org [IPv6:2001:1900:2254:206a::16:76]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 59E6A22A7 for ; Sat, 16 Aug 2014 09:10:53 +0000 (UTC) Received: from bugs.freebsd.org ([127.0.1.118]) by kenobi.freebsd.org (8.14.9/8.14.9) with ESMTP id s7G9ArCX095159 for ; Sat, 16 Aug 2014 09:10:53 GMT (envelope-from bugzilla-noreply@freebsd.org) From: bugzilla-noreply@freebsd.org To: freebsd-bugs@FreeBSD.org Subject: [Bug 192701] New: FOPEN_DIRECT_IO not honored by fuse module Date: Sat, 16 Aug 2014 09:10:53 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: kern X-Bugzilla-Version: 10.0-RELEASE X-Bugzilla-Keywords: X-Bugzilla-Severity: Affects Some People X-Bugzilla-Who: harsha@harshavardhana.net X-Bugzilla-Status: Needs Triage X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: freebsd-bugs@FreeBSD.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version rep_platform op_sys bug_status bug_severity priority component assigned_to reporter attachments.created Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 16 Aug 2014 09:10:53 -0000 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=192701 Bug ID: 192701 Summary: FOPEN_DIRECT_IO not honored by fuse module Product: Base System Version: 10.0-RELEASE Hardware: Any OS: Any Status: Needs Triage Severity: Affects Some People Priority: --- Component: kern Assignee: freebsd-bugs@FreeBSD.org Reporter: harsha@harshavardhana.net Created attachment 145860 --> https://bugs.freebsd.org/bugzilla/attachment.cgi?id=145860&action=edit FUSE honor FOPEN_DIRECT_IO FUSE module does not honor FOPEN_DIRECT_IO flags being set by the user space filesystem for example here is 'glusterfs' ------- fuse_vnode_open() ------------ * Funcation is called for every vnode open. * Merge fuse_open_flags it may be 0 * * XXXIP: Handle FOPEN_DIRECT_IO and FOPEN_KEEP_CACHE -------------------------------------- Currently just ignores this option. The necessity for this comes from the point of view of GlusterFS, with in GlusterFS there is a feature called 'meta' which provide meta information about the mounted filesystem and provides largely fine grained statistics about the the filesystem. IT is necessary to have this feature available for consistency and also for better portability on FreeBSD. The issue seems to be that VFS takes hint from the file size (returned in lookup/stat) to limit itself from not read()ing beyond that offset. So if a file size is returned 0 in lookup, read() is never received even by FUSE. In meta all file sizes are 0 (since the contents of the inode are generated dynamically on open()/read(), size is unknown during lookup() -- just like /proc (on linux)). And therefore all meta file open()s are forced into direct_io_mode so that read() requests are sent straight to FUSE/glusterfs bypassing VFS (size is ignored etc.) It requires for read/write requests over a vnode to be sent directly to FUSE not to VFS which would ignore a '0byte' file. Attaching a patch which fixes this and allows FreeBSD FUSE to honor FOPEN_DIRECT_IO flag and also helps getting 'meta' module working. -- You are receiving this mail because: You are the assignee for the bug.