Proposal for an extended READDIRPLUS operation via gfAPI

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

We currently have readdirplus operation to fetch stat for each of the dirents. But that may not be sufficient and often applications may need extra information, like for eg., NFS-Ganesha like applications which operate on handles need to generate handles for each of those dirents returned. So this would require extra calls to the backend, in this case LOOKUP (which is very expensive operation) resulting in quite slow
readdir performance.

To address that, introducing this new API using which applications can
request for any extra information to be returned as part of
readdirplus response [1]

Patch: https://review.gluster.org/#/c/15663
Bug: https://bugzilla.redhat.com/show_bug.cgi?id=1442950
Github issue#  https://github.com/gluster/glusterfs/issues/174

The interface is designed to be a bit aligned with xstat [2] format as suggested by Niels. This helps in extending this operation in future.

The synopsis of this new API - the arguments to be passed and how it can be used is mentioned in the patch [3].

Since the initial requirement is to return handles, I have defined it with glfs_h_* prefix for now, but it may well be used by applications not having to use them (like SMB). Suggestions are welcome.

The current changes are POC and need to tested extensively but we had seen a huge performance improvement (with initial patch-set, at least on a single brick volume).

Request for comments/suggestions on any improvements needed on the interface.

Thanks,
Soumya

[1] https://review.gluster.org/#/c/15663
[2] https://lwn.net/Articles/394298/
[3] https://review.gluster.org/#/c/15663/8/api/src/glfs-handles.h
_______________________________________________
Gluster-devel mailing list
Gluster-devel@xxxxxxxxxxx
http://lists.gluster.org/mailman/listinfo/gluster-devel



[Index of Archives]     [Gluster Users]     [Ceph Users]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux