|
|
d1681e |
From 54c7d29635ee284c0390260d4bececf917397bc7 Mon Sep 17 00:00:00 2001
|
|
|
d1681e |
From: Amar Tumballi <amarts@redhat.com>
|
|
|
d1681e |
Date: Thu, 2 Aug 2018 14:25:38 +0530
|
|
|
d1681e |
Subject: [PATCH 339/351] posix: remove not supported get/set content
|
|
|
d1681e |
|
|
|
d1681e |
getting and setting a file's content using extended
|
|
|
d1681e |
attribute worked great as a GET/PUT alternative when
|
|
|
d1681e |
an object storage is supported on top of Gluster. But
|
|
|
d1681e |
it needs application changes, and also, it skips some
|
|
|
d1681e |
caching layers. It is not used over years, and not
|
|
|
d1681e |
supported any more. Remove the dead code.
|
|
|
d1681e |
|
|
|
d1681e |
BUG: 1608363
|
|
|
d1681e |
BUG: 1608366
|
|
|
d1681e |
Change-Id: I6d4c135ca1bce5197c7cf749f9f3b481b91f2a95
|
|
|
d1681e |
Signed-off-by: Amar Tumballi <amarts@redhat.com>
|
|
|
d1681e |
Reviewed-on: https://code.engineering.redhat.com/gerrit/145896
|
|
|
d1681e |
Reviewed-by: Pranith Kumar Karampuri <pkarampu@redhat.com>
|
|
|
d1681e |
Reviewed-by: FNU Raghavendra Manjunath <raghavendra@redhat.com>
|
|
|
d1681e |
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
|
|
|
d1681e |
---
|
|
|
d1681e |
libglusterfs/src/glusterfs.h | 6 --
|
|
|
d1681e |
xlators/storage/posix/src/posix-helpers.c | 165 +-----------------------------
|
|
|
d1681e |
xlators/storage/posix/src/posix.c | 13 ---
|
|
|
d1681e |
xlators/storage/posix/src/posix.h | 4 -
|
|
|
d1681e |
4 files changed, 1 insertion(+), 187 deletions(-)
|
|
|
d1681e |
|
|
|
d1681e |
diff --git a/libglusterfs/src/glusterfs.h b/libglusterfs/src/glusterfs.h
|
|
|
d1681e |
index b161bf0..d71a9c1 100644
|
|
|
d1681e |
--- a/libglusterfs/src/glusterfs.h
|
|
|
d1681e |
+++ b/libglusterfs/src/glusterfs.h
|
|
|
d1681e |
@@ -185,9 +185,6 @@ enum gf_internal_fop_indicator {
|
|
|
d1681e |
|
|
|
d1681e |
#define DHT_CHANGELOG_RENAME_OP_KEY "changelog.rename-op"
|
|
|
d1681e |
|
|
|
d1681e |
-#define ZR_FILE_CONTENT_STR "glusterfs.file."
|
|
|
d1681e |
-#define ZR_FILE_CONTENT_STRLEN 15
|
|
|
d1681e |
-
|
|
|
d1681e |
#define GLUSTERFS_WRITE_IS_APPEND "glusterfs.write-is-append"
|
|
|
d1681e |
#define GLUSTERFS_WRITE_UPDATE_ATOMIC "glusterfs.write-update-atomic"
|
|
|
d1681e |
#define GLUSTERFS_OPEN_FD_COUNT "glusterfs.open-fd-count"
|
|
|
d1681e |
@@ -254,9 +251,6 @@ enum gf_internal_fop_indicator {
|
|
|
d1681e |
|
|
|
d1681e |
#define STARTING_EVENT_THREADS 1
|
|
|
d1681e |
|
|
|
d1681e |
-#define ZR_FILE_CONTENT_REQUEST(key) (!strncmp(key, ZR_FILE_CONTENT_STR, \
|
|
|
d1681e |
- ZR_FILE_CONTENT_STRLEN))
|
|
|
d1681e |
-
|
|
|
d1681e |
#define DEFAULT_VAR_RUN_DIRECTORY DATADIR "/run/gluster"
|
|
|
d1681e |
#define DEFAULT_GLUSTERFSD_MISC_DIRETORY DATADIR "/lib/misc/glusterfsd"
|
|
|
d1681e |
#ifdef GF_LINUX_HOST_OS
|
|
|
d1681e |
diff --git a/xlators/storage/posix/src/posix-helpers.c b/xlators/storage/posix/src/posix-helpers.c
|
|
|
d1681e |
index 49f9f46..cddf02e 100644
|
|
|
d1681e |
--- a/xlators/storage/posix/src/posix-helpers.c
|
|
|
d1681e |
+++ b/xlators/storage/posix/src/posix-helpers.c
|
|
|
d1681e |
@@ -919,165 +919,6 @@ out:
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
|
|
|
d1681e |
-int
|
|
|
d1681e |
-posix_set_file_contents (xlator_t *this, const char *path, char *keyp,
|
|
|
d1681e |
- data_t *value, int flags)
|
|
|
d1681e |
-{
|
|
|
d1681e |
- char * key = NULL;
|
|
|
d1681e |
- char real_path[PATH_MAX];
|
|
|
d1681e |
- int32_t file_fd = -1;
|
|
|
d1681e |
- int op_ret = 0;
|
|
|
d1681e |
- int ret = -1;
|
|
|
d1681e |
-
|
|
|
d1681e |
-
|
|
|
d1681e |
- /* XXX: does not handle assigning GFID to created files */
|
|
|
d1681e |
- return -1;
|
|
|
d1681e |
-
|
|
|
d1681e |
- key = &(keyp[15]);
|
|
|
d1681e |
- sprintf (real_path, "%s/%s", path, key);
|
|
|
d1681e |
-
|
|
|
d1681e |
- if (flags & XATTR_REPLACE) {
|
|
|
d1681e |
- /* if file exists, replace it
|
|
|
d1681e |
- * else, error out */
|
|
|
d1681e |
- file_fd = open (real_path, O_TRUNC|O_WRONLY);
|
|
|
d1681e |
-
|
|
|
d1681e |
- if (file_fd == -1) {
|
|
|
d1681e |
- goto create;
|
|
|
d1681e |
- }
|
|
|
d1681e |
-
|
|
|
d1681e |
- if (value->len) {
|
|
|
d1681e |
- ret = sys_write (file_fd, value->data, value->len);
|
|
|
d1681e |
- if (ret == -1) {
|
|
|
d1681e |
- op_ret = -errno;
|
|
|
d1681e |
- gf_msg (this->name, GF_LOG_ERROR, errno,
|
|
|
d1681e |
- P_MSG_SET_FILE_CONTENTS, "write failed"
|
|
|
d1681e |
- "while doing setxattr for key %s on"
|
|
|
d1681e |
- "path%s", key, real_path);
|
|
|
d1681e |
- goto out;
|
|
|
d1681e |
- }
|
|
|
d1681e |
-
|
|
|
d1681e |
- ret = sys_close (file_fd);
|
|
|
d1681e |
- if (ret == -1) {
|
|
|
d1681e |
- op_ret = -errno;
|
|
|
d1681e |
- gf_msg (this->name, GF_LOG_ERROR, errno,
|
|
|
d1681e |
- P_MSG_SET_FILE_CONTENTS,
|
|
|
d1681e |
- "close failed on %s",
|
|
|
d1681e |
- real_path);
|
|
|
d1681e |
- goto out;
|
|
|
d1681e |
- }
|
|
|
d1681e |
- }
|
|
|
d1681e |
-
|
|
|
d1681e |
- create: /* we know file doesn't exist, create it */
|
|
|
d1681e |
-
|
|
|
d1681e |
- file_fd = open (real_path, O_CREAT|O_WRONLY, 0644);
|
|
|
d1681e |
-
|
|
|
d1681e |
- if (file_fd == -1) {
|
|
|
d1681e |
- op_ret = -errno;
|
|
|
d1681e |
- gf_msg (this->name, GF_LOG_ERROR, errno,
|
|
|
d1681e |
- P_MSG_SET_FILE_CONTENTS, "failed to open file"
|
|
|
d1681e |
- "%s with O_CREAT", key);
|
|
|
d1681e |
- goto out;
|
|
|
d1681e |
- }
|
|
|
d1681e |
-
|
|
|
d1681e |
- ret = sys_write (file_fd, value->data, value->len);
|
|
|
d1681e |
- if (ret == -1) {
|
|
|
d1681e |
- op_ret = -errno;
|
|
|
d1681e |
- gf_msg (this->name, GF_LOG_ERROR, errno,
|
|
|
d1681e |
- P_MSG_SET_FILE_CONTENTS, "write failed on %s"
|
|
|
d1681e |
- "while setxattr with key %s", real_path, key);
|
|
|
d1681e |
- goto out;
|
|
|
d1681e |
- }
|
|
|
d1681e |
-
|
|
|
d1681e |
- ret = sys_close (file_fd);
|
|
|
d1681e |
- if (ret == -1) {
|
|
|
d1681e |
- op_ret = -errno;
|
|
|
d1681e |
- gf_msg (this->name, GF_LOG_ERROR, errno,
|
|
|
d1681e |
- P_MSG_SET_FILE_CONTENTS, "close failed on"
|
|
|
d1681e |
- " %s while setxattr with key %s",
|
|
|
d1681e |
- real_path, key);
|
|
|
d1681e |
- goto out;
|
|
|
d1681e |
- }
|
|
|
d1681e |
- }
|
|
|
d1681e |
-
|
|
|
d1681e |
-out:
|
|
|
d1681e |
- return op_ret;
|
|
|
d1681e |
-}
|
|
|
d1681e |
-
|
|
|
d1681e |
-
|
|
|
d1681e |
-int
|
|
|
d1681e |
-posix_get_file_contents (xlator_t *this, uuid_t pargfid,
|
|
|
d1681e |
- const char *name, char **contents)
|
|
|
d1681e |
-{
|
|
|
d1681e |
- char *real_path = NULL;
|
|
|
d1681e |
- int32_t file_fd = -1;
|
|
|
d1681e |
- struct iatt stbuf = {0,};
|
|
|
d1681e |
- int op_ret = 0;
|
|
|
d1681e |
- int ret = -1;
|
|
|
d1681e |
-
|
|
|
d1681e |
-
|
|
|
d1681e |
- MAKE_HANDLE_PATH (real_path, this, pargfid, name);
|
|
|
d1681e |
- if (!real_path) {
|
|
|
d1681e |
- op_ret = -ESTALE;
|
|
|
d1681e |
- gf_msg (this->name, GF_LOG_ERROR, ESTALE,
|
|
|
d1681e |
- P_MSG_XDATA_GETXATTR,
|
|
|
d1681e |
- "Failed to create handle path for %s/%s",
|
|
|
d1681e |
- uuid_utoa (pargfid), name);
|
|
|
d1681e |
- goto out;
|
|
|
d1681e |
- }
|
|
|
d1681e |
-
|
|
|
d1681e |
- op_ret = posix_istat (this, pargfid, name, &stbuf);
|
|
|
d1681e |
- if (op_ret == -1) {
|
|
|
d1681e |
- op_ret = -errno;
|
|
|
d1681e |
- gf_msg (this->name, GF_LOG_ERROR, errno, P_MSG_XDATA_GETXATTR,
|
|
|
d1681e |
- "lstat failed on %s", real_path);
|
|
|
d1681e |
- goto out;
|
|
|
d1681e |
- }
|
|
|
d1681e |
-
|
|
|
d1681e |
- file_fd = open (real_path, O_RDONLY);
|
|
|
d1681e |
-
|
|
|
d1681e |
- if (file_fd == -1) {
|
|
|
d1681e |
- op_ret = -errno;
|
|
|
d1681e |
- gf_msg (this->name, GF_LOG_ERROR, errno, P_MSG_XDATA_GETXATTR,
|
|
|
d1681e |
- "open failed on %s", real_path);
|
|
|
d1681e |
- goto out;
|
|
|
d1681e |
- }
|
|
|
d1681e |
-
|
|
|
d1681e |
- *contents = GF_CALLOC (stbuf.ia_size + 1, sizeof(char),
|
|
|
d1681e |
- gf_posix_mt_char);
|
|
|
d1681e |
- if (! *contents) {
|
|
|
d1681e |
- op_ret = -errno;
|
|
|
d1681e |
- goto out;
|
|
|
d1681e |
- }
|
|
|
d1681e |
-
|
|
|
d1681e |
- ret = sys_read (file_fd, *contents, stbuf.ia_size);
|
|
|
d1681e |
- if (ret <= 0) {
|
|
|
d1681e |
- op_ret = -1;
|
|
|
d1681e |
- gf_msg (this->name, GF_LOG_ERROR, errno, P_MSG_XDATA_GETXATTR,
|
|
|
d1681e |
- "read on %s failed", real_path);
|
|
|
d1681e |
- goto out;
|
|
|
d1681e |
- }
|
|
|
d1681e |
-
|
|
|
d1681e |
- *contents[stbuf.ia_size] = '\0';
|
|
|
d1681e |
-
|
|
|
d1681e |
- op_ret = sys_close (file_fd);
|
|
|
d1681e |
- file_fd = -1;
|
|
|
d1681e |
- if (op_ret == -1) {
|
|
|
d1681e |
- op_ret = -errno;
|
|
|
d1681e |
- gf_msg (this->name, GF_LOG_ERROR, errno, P_MSG_XDATA_GETXATTR,
|
|
|
d1681e |
- "close on %s failed", real_path);
|
|
|
d1681e |
- goto out;
|
|
|
d1681e |
- }
|
|
|
d1681e |
-
|
|
|
d1681e |
-out:
|
|
|
d1681e |
- if (op_ret < 0) {
|
|
|
d1681e |
- GF_FREE (*contents);
|
|
|
d1681e |
- if (file_fd != -1)
|
|
|
d1681e |
- sys_close (file_fd);
|
|
|
d1681e |
- }
|
|
|
d1681e |
-
|
|
|
d1681e |
- return op_ret;
|
|
|
d1681e |
-}
|
|
|
d1681e |
-
|
|
|
d1681e |
#ifdef HAVE_SYS_ACL_H
|
|
|
d1681e |
int
|
|
|
d1681e |
posix_pacl_set (const char *path, const char *key, const char *acl_s)
|
|
|
d1681e |
@@ -1190,9 +1031,6 @@ posix_handle_pair (xlator_t *this, const char *real_path,
|
|
|
d1681e |
} else if (posix_is_gfid2path_xattr (key)) {
|
|
|
d1681e |
ret = -ENOTSUP;
|
|
|
d1681e |
goto out;
|
|
|
d1681e |
- } else if (ZR_FILE_CONTENT_REQUEST(key)) {
|
|
|
d1681e |
- ret = posix_set_file_contents (this, real_path, key, value,
|
|
|
d1681e |
- flags);
|
|
|
d1681e |
} else if (GF_POSIX_ACL_REQUEST (key)) {
|
|
|
d1681e |
if (stbuf && IS_DHT_LINKFILE_MODE (stbuf))
|
|
|
d1681e |
goto out;
|
|
|
d1681e |
@@ -1635,8 +1473,7 @@ _handle_entry_create_keyvalue_pair (dict_t *d, char *k, data_t *v,
|
|
|
d1681e |
!strcmp ("gfid-req", k) ||
|
|
|
d1681e |
!strcmp (POSIX_ACL_DEFAULT_XATTR, k) ||
|
|
|
d1681e |
!strcmp (POSIX_ACL_ACCESS_XATTR, k) ||
|
|
|
d1681e |
- posix_xattr_ignorable (k) ||
|
|
|
d1681e |
- ZR_FILE_CONTENT_REQUEST(k)) {
|
|
|
d1681e |
+ posix_xattr_ignorable (k)) {
|
|
|
d1681e |
return 0;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
diff --git a/xlators/storage/posix/src/posix.c b/xlators/storage/posix/src/posix.c
|
|
|
d1681e |
index 5203068..5c6e103 100644
|
|
|
d1681e |
--- a/xlators/storage/posix/src/posix.c
|
|
|
d1681e |
+++ b/xlators/storage/posix/src/posix.c
|
|
|
d1681e |
@@ -4720,19 +4720,6 @@ posix_getxattr (call_frame_t *frame, xlator_t *this,
|
|
|
d1681e |
goto out;
|
|
|
d1681e |
}
|
|
|
d1681e |
|
|
|
d1681e |
- if (loc->inode && IA_ISDIR(loc->inode->ia_type) && name &&
|
|
|
d1681e |
- ZR_FILE_CONTENT_REQUEST(name)) {
|
|
|
d1681e |
- ret = posix_get_file_contents (this, loc->gfid, &name[15],
|
|
|
d1681e |
- &file_contents);
|
|
|
d1681e |
- if (ret < 0) {
|
|
|
d1681e |
- op_errno = -ret;
|
|
|
d1681e |
- gf_msg (this->name, GF_LOG_ERROR, op_errno,
|
|
|
d1681e |
- P_MSG_FILE_FAILED, "getting file contents"
|
|
|
d1681e |
- "failed");
|
|
|
d1681e |
- goto out;
|
|
|
d1681e |
- }
|
|
|
d1681e |
- }
|
|
|
d1681e |
-
|
|
|
d1681e |
dict = dict_new ();
|
|
|
d1681e |
if (!dict) {
|
|
|
d1681e |
op_errno = ENOMEM;
|
|
|
d1681e |
diff --git a/xlators/storage/posix/src/posix.h b/xlators/storage/posix/src/posix.h
|
|
|
d1681e |
index 8e40e6f..eaf4d0d 100644
|
|
|
d1681e |
--- a/xlators/storage/posix/src/posix.h
|
|
|
d1681e |
+++ b/xlators/storage/posix/src/posix.h
|
|
|
d1681e |
@@ -304,10 +304,6 @@ int posix_handle_pair (xlator_t *this, const char *real_path, char *key,
|
|
|
d1681e |
int posix_fhandle_pair (xlator_t *this, int fd, char *key, data_t *value,
|
|
|
d1681e |
int flags, struct iatt *stbuf);
|
|
|
d1681e |
void posix_spawn_janitor_thread (xlator_t *this);
|
|
|
d1681e |
-int posix_get_file_contents (xlator_t *this, uuid_t pargfid,
|
|
|
d1681e |
- const char *name, char **contents);
|
|
|
d1681e |
-int posix_set_file_contents (xlator_t *this, const char *path, char *key,
|
|
|
d1681e |
- data_t *value, int flags);
|
|
|
d1681e |
int posix_acl_xattr_set (xlator_t *this, const char *path, dict_t *xattr_req);
|
|
|
d1681e |
int posix_gfid_heal (xlator_t *this, const char *path, loc_t *loc, dict_t *xattr_req);
|
|
|
d1681e |
int posix_entry_create_xattr_set (xlator_t *this, const char *path,
|
|
|
d1681e |
--
|
|
|
d1681e |
1.8.3.1
|
|
|
d1681e |
|