diff options
author | Krutika Dhananjay <kdhananj@redhat.com> | 2016-06-07 16:27:34 +0530 |
---|---|---|
committer | Pranith Kumar Karampuri <pkarampu@redhat.com> | 2016-06-29 21:37:08 -0700 |
commit | af1ab7266edf91216e27484c505c78401f092e13 (patch) | |
tree | 3fe0f59fb515fe3ae946c9d02d7a3dd762dda32c /libglusterfs/src/iobuf.h | |
parent | 4d62806d3031cea33bab1641e0c14a1a8cb11c46 (diff) |
libglusterfs: Implement API that provides page-aligned iobufs
Backport of: http://review.gluster.org/14672
One of the consumers of a page aligned buffer would be posix's
readv fop on O_DIRECT fds. Today the way it works is by getting
a page-aligned buffer through calloc, pread()ing into this buffer
and then copying its contents into a newly created iobuf's ptr.
This results in an extra memcpy() which can be avoided if we could
implement an api that would return an iobuf whose ptr is
page-aligned. That way the iobuf->ptr can be directly passed to
sys_pread() as a parameter by posix translator.
Change-Id: Ie44c300dc773fef8e1669d609987d47dbd340ac2
BUG: 1351024
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
Reviewed-on: http://review.gluster.org/14826
Smoke: Gluster Build System <jenkins@build.gluster.org>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Reviewed-by: Zhou Zhengping <johnzzpcrystal@gmail.com>
Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
Diffstat (limited to 'libglusterfs/src/iobuf.h')
-rw-r--r-- | libglusterfs/src/iobuf.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/libglusterfs/src/iobuf.h b/libglusterfs/src/iobuf.h index 7e5cfe37a28..1578ceb84dd 100644 --- a/libglusterfs/src/iobuf.h +++ b/libglusterfs/src/iobuf.h @@ -169,4 +169,8 @@ void iobuf_stats_dump (struct iobuf_pool *iobuf_pool); struct iobuf * iobuf_get2 (struct iobuf_pool *iobuf_pool, size_t page_size); + +struct iobuf * +iobuf_get_page_aligned (struct iobuf_pool *iobuf_pool, size_t page_size, + size_t align_size); #endif /* !_IOBUF_H_ */ |