From 4a31509c5ae7e40dd1538b2075287d8cc202f159 Mon Sep 17 00:00:00 2001 From: Matt Benjamin Date: Fri, 12 Aug 2016 16:52:51 -0400 Subject: [PATCH] rgw_file: fix/update rgw_create flag arguments Allow passing POSIX open flags as well as api call flags. Needed for NFS3 support. Signed-off-by: Matt Benjamin (cherry picked from commit 2d0ea2b4649e76cbbb87f44c57754d7ea9c46dce) --- src/include/rados/rgw_file.h | 5 +++-- src/rgw/rgw_file.cc | 8 ++++---- src/test/librgw_file_nfsns.cc | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/include/rados/rgw_file.h b/src/include/rados/rgw_file.h index d3dba290c524f..5fac51acba16b 100644 --- a/src/include/rados/rgw_file.h +++ b/src/include/rados/rgw_file.h @@ -143,8 +143,9 @@ int rgw_statfs(struct rgw_fs *rgw_fs, #define RGW_CREATE_FLAG_NONE 0x0000 int rgw_create(struct rgw_fs *rgw_fs, struct rgw_file_handle *parent_fh, - const char *name, struct stat *st, uint32_t mask, - struct rgw_file_handle **fh, uint32_t flags); + const char *name, struct stat *st, uint32_t mask, + struct rgw_file_handle **fh, uint32_t posix_flags, + uint32_t flags); /* create a new directory diff --git a/src/rgw/rgw_file.cc b/src/rgw/rgw_file.cc index 2925e43dcc12b..8491b77013235 100644 --- a/src/rgw/rgw_file.cc +++ b/src/rgw/rgw_file.cc @@ -1114,10 +1114,10 @@ int rgw_statfs(struct rgw_fs *rgw_fs, /* generic create -- create an empty regular file */ -int rgw_create(struct rgw_fs *rgw_fs, - struct rgw_file_handle *parent_fh, - const char *name, struct stat *st, uint32_t mask, - struct rgw_file_handle **fh, uint32_t flags) +int rgw_create(struct rgw_fs *rgw_fs, struct rgw_file_handle *parent_fh, + const char *name, struct stat *st, uint32_t mask, + struct rgw_file_handle **fh, uint32_t posix_flags, + uint32_t flags) { using std::get; diff --git a/src/test/librgw_file_nfsns.cc b/src/test/librgw_file_nfsns.cc index 6fee01d9d6448..ebac187ae9936 100644 --- a/src/test/librgw_file_nfsns.cc +++ b/src/test/librgw_file_nfsns.cc @@ -498,7 +498,7 @@ TEST(LibRGW, RGW_CREATE_DIRS1) { RGW_LOOKUP_FLAG_NONE); if (! sf.fh) { rc = rgw_create(fs, sf.parent_fh, sf.name.c_str(), &st, create_mask, - &sf.fh, RGW_CREATE_FLAG_NONE); + &sf.fh, 0 /* posix flags */, RGW_CREATE_FLAG_NONE); ASSERT_EQ(rc, 0); } sf.sync(); @@ -545,7 +545,7 @@ TEST(LibRGW, RGW_SETUP_RENAME1) { RGW_LOOKUP_FLAG_NONE); if (! rf.fh) { rc = rgw_create(fs, rf.parent_fh, rf.name.c_str(), &st, create_mask, - &rf.fh, RGW_CREATE_FLAG_NONE); + &rf.fh, 0 /* posix flags */, RGW_CREATE_FLAG_NONE); ASSERT_EQ(rc, 0); } rf.sync(); -- 2.39.5