diff options
Diffstat (limited to 'xlators/storage')
| -rw-r--r-- | xlators/storage/posix/src/posix.c | 14 | 
1 files changed, 14 insertions, 0 deletions
diff --git a/xlators/storage/posix/src/posix.c b/xlators/storage/posix/src/posix.c index 3c7816cfb8c..fc7c259e948 100644 --- a/xlators/storage/posix/src/posix.c +++ b/xlators/storage/posix/src/posix.c @@ -842,6 +842,7 @@ posix_mknod (call_frame_t *frame, xlator_t *this,          struct iatt           preparent = {0,};          struct iatt           postparent = {0,};          void *                uuid_req  = NULL; +        mode_t                st_mode   = 0;          DECLARE_OLD_FS_ID_VAR; @@ -917,6 +918,19 @@ real_op:                                  strerror (op_errno));                          goto out;                  } +        } else { +                op_ret = dict_get_uint32 (xdata, GLUSTERFS_CREATE_MODE_KEY, +                                          &st_mode); + +                if (op_ret >= 0) { +                        op_ret = chmod (real_path, st_mode); +                        if (op_ret < 0) { +                                gf_log (this->name, GF_LOG_WARNING, +                                        "chmod failed (%s)", strerror (errno)); +                        } + +                        dict_del (xdata, GLUSTERFS_CREATE_MODE_KEY); +                }          }          op_ret = posix_gfid_set (this, real_path, loc, xdata);  | 
