Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 1016000

Summary: Implementation of object handle based gfapi extensions
Product: [Community] GlusterFS Reporter: Shyamsundar <srangana>
Component: libgfapiAssignee: Ric Wheeler <rwheeler>
Status: CLOSED CURRENTRELEASE QA Contact: Sudhir D <sdharane>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: pre-releaseCC: gluster-bugs, rwheeler
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: glusterfs-3.5.0 Doc Type: Bug Fix
Doc Text:
Cause: Current gfapi implementation is path based for entry related operations. Consequence: Due to this, consumers that rely on inode like operations or POSIX *at variants (openat, etc.) would not be able to use the API effectively. Fix: Added object based APi extensions that operate like the POSIX *at variants. Result: Applications like NFS Ganesha integration to Gluster can now make use of these new APIs to provide access to Gluster via the Ganesha NFS implementation.
Story Points: ---
Clone Of:
: 1021857 (view as bug list) Environment:
Last Closed: 2014-04-17 11:49:14 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Shyamsundar 2013-10-07 09:16:28 UTC
Description of problem:

gfapi: object handle based API extensions

There is an ongoing effort to integrate NFS Ganesha (
https://github.com/nfs-ganesha/nfs-ganesha/wiki ) with GlusterFS as one of
the file system back ends.

Towards this we need extensions to gfapi that can handle object based
operations. Meaning, instead of using full paths or relative paths from
cwd, it is required that we can work with APIs, like the *at POSIX
variants, to be able to create, lookup, open etc. files and directories.
Hence the objects are the files or directories themselves and we give out
handles to these objects that can be used for further operations.

The new APIs are implemented as glfs_h_XXX variants in the file
glfs-handleops.c to mirror glfs-fops.c style. The code leverages holding
onto inode references and doling these out as opaque/cookie type objects to
the callers, to enable them to be used as handles in other operations.

An fd based approach was considered, but due to the extra footprint that
the fd structure and its counterparts would incur, this was dropped to take
the approach of holding inode references themselves.

Tested by extending glfsxmp.c to invoke and exercise the added APIs, and
further tested with a reference integration of the same as an FSAL with NFS
Ganesha.

Initial code drop for the same can be seen here, http://review.gluster.com/#/c/5936/

Version-Release number of selected component (if applicable):


How reproducible:


Steps to Reproduce:
1.
2.
3.

Actual results:


Expected results:


Additional info:

Comment 1 Anand Avati 2013-10-07 10:34:17 UTC
REVIEW: http://review.gluster.org/5936 (gfapi: object handle based API extensions) posted (#6) for review on master by Shyamsundar Ranganathan (srangana)

Comment 2 Anand Avati 2013-10-09 10:51:35 UTC
REVIEW: http://review.gluster.org/5936 (gfapi: object handle based API extensions) posted (#7) for review on master by Shyamsundar Ranganathan (srangana)

Comment 3 Anand Avati 2013-10-11 09:35:22 UTC
REVIEW: http://review.gluster.org/5936 (gfapi: object handle based API extensions) posted (#8) for review on master by Shyamsundar Ranganathan (srangana)

Comment 4 Anand Avati 2013-10-11 19:16:58 UTC
COMMIT: http://review.gluster.org/5936 committed in master by Anand Avati (avati) 
------
commit d573f170cf3305c066f8b191f872d2d2f22f2025
Author: R.Shyamsundar <srangana>
Date:   Mon Sep 16 16:39:24 2013 +0530

    gfapi: object handle based API extensions
    
    There is an ongoing effort to integrate NFS Ganesha (
    https://github.com/nfs-ganesha/nfs-ganesha/wiki ) with GlusterFS as one of
    the file system back ends.
    
    Towards this we need extensions to gfapi that can handle object based
    operations. Meaning, instead of using full paths or relative paths from
    cwd, it is required that we can work with APIs, like the *at POSIX
    variants, to be able to create, lookup, open etc. files and directories.
    Hence the objects are the files or directories themselves and we give out
    handles to these objects that can be used for further operations.
    
    This code drop is an initial implementation of the proposed APIs.
    
    The new APIs are implemented as glfs_h_XXX variants in the file
    glfs-handleops.c to mirror glfs-fops.c style. The code leverages holding
    onto inode references and doling these out as opaque/cookie type objects to
    the callers, to enable them to be used as handles in other operations.
    
    An fd based approach was considered, but due to the extra footprint that
    the fd structure and its counterparts would incur, this was dropped to take
    the approach of holding inode references themselves.
    
    Tested by extending glfsxmp.c to invoke and exercise the added APIs, and
    further tested with a reference integration of the same as an FSAL with NFS
    Ganesha.
    
    Change-Id: I23629c99e905b54070fa2e6565147812e5f3fa5d
    BUG: 1016000
    Signed-off-by: R.Shyamsundar <srangana>
    Reviewed-on: http://review.gluster.org/5936
    Tested-by: Gluster Build System <jenkins.com>
    Reviewed-by: Anand Avati <avati>

Comment 8 Niels de Vos 2014-04-17 11:49:14 UTC
This bug is getting closed because a release has been made available that should address the reported issue. In case the problem is still not fixed with glusterfs-3.5.0, please reopen this bug report.

glusterfs-3.5.0 has been announced on the Gluster Developers mailinglist [1], packages for several distributions should become available in the near future. Keep an eye on the Gluster Users mailinglist [2] and the update infrastructure for your distribution.

[1] http://thread.gmane.org/gmane.comp.file-systems.gluster.devel/6137
[2] http://thread.gmane.org/gmane.comp.file-systems.gluster.user