diff options
| author | Niels de Vos <ndevos@redhat.com> | 2014-08-15 11:13:46 +0200 | 
|---|---|---|
| committer | Raghavendra Bhat <raghavendra@redhat.com> | 2015-08-18 05:55:17 -0700 | 
| commit | aefd42fdb74a9b276d07a51a84194805169e632e (patch) | |
| tree | b684a289189f5db3bde095d951d83bca2acd7de7 | |
| parent | df3f1d9926bf3e7a481391182aa967f0154634a3 (diff) | |
glusterd: really get the inode size for a brick
backport of http://review.gluster.org/#/c/8492/
The device to get the inode size from does not get passed to the tool
(tune2fs, xfs_info or the like) that is called. This is probably just an
oversight. While correcting this, cleanup some bits of the function too.
Change-Id: Ida45852cba061631fb304bc7dd5286df1a808010
BUG: 1254421
Signed-off-by: Niels de Vos <ndevos@redhat.com>
Reviewed-on: http://review.gluster.org/8492
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Kaleb KEITHLEY <kkeithle@redhat.com>
Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com>
Tested-by: Krishnan Parthasarathi <kparthas@redhat.com>
Reviewed-on: http://review.gluster.org/11941
Reviewed-by: Raghavendra Bhat <raghavendra@redhat.com>
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 29 | 
1 files changed, 17 insertions, 12 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index b8934c45ab6..6275ae9a761 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -7353,30 +7353,35 @@ glusterd_add_inode_size_to_dict (dict_t *dict, int count)          for (fs = glusterd_fs ; fs->fs_type_name; fs++) {                  if (strcmp (fs_name, fs->fs_type_name) == 0) { -                        snprintf (fs_tool_name, sizeof fs_tool_name, +                        snprintf (fs_tool_name, sizeof (fs_tool_name),                                    "/usr/sbin/%s", fs->fs_tool_name);                          if (access (fs_tool_name, R_OK|X_OK) == 0)                                  runner_add_arg (&runner, fs_tool_name);                          else { -                                snprintf (fs_tool_name, sizeof fs_tool_name, +                                snprintf (fs_tool_name, sizeof (fs_tool_name),                                            "/sbin/%s", fs->fs_tool_name);                                  if (access (fs_tool_name, R_OK|X_OK) == 0)                                          runner_add_arg (&runner, fs_tool_name);                          } -                        if (runner.argv[0]) { -                                if (fs->fs_tool_arg) -                                        runner_add_arg (&runner, fs->fs_tool_arg); -                        }                          break;                  }          } +        if (runner.argv[0]) { +                if (fs->fs_tool_arg) +                        runner_add_arg (&runner, fs->fs_tool_arg); +                runner_add_arg (&runner, device); +        } else { +                gf_log (THIS->name, GF_LOG_ERROR, "could not find %s to get" +                        "inode size for %s (%s): %s package missing?", +                        fs->fs_tool_name, device, fs_name, fs->fs_tool_pkg); +                goto out; +        } +          ret = runner_start (&runner);          if (ret) { -                gf_log (THIS->name, GF_LOG_ERROR, "could not get inode " -                        "size for %s : %s package missing", fs_name, -                        ((strcmp (fs_name, "xfs")) ? -                         "e2fsprogs" : "xfsprogs")); +                gf_log (THIS->name, GF_LOG_ERROR, "failed to execute " +                        "\"%s\": %s", fs->fs_tool_name, strerror (errno));                  /*                   * Runner_start might return an error after the child has                   * been forked, e.g. if the program isn't there.  In that @@ -7384,7 +7389,7 @@ glusterd_add_inode_size_to_dict (dict_t *dict, int count)                   * child and free resources.  Fortunately, that seems to                   * be harmless for other kinds of failures.                   */ -                (void) runner_end(&runner); +                (void) runner_end (&runner);                  goto out;          } @@ -7431,7 +7436,7 @@ cached:          ret = dict_set_dynstr_with_alloc (dict, key, cur_word); - out: +out:          if (ret)                  gf_log (THIS->name, GF_LOG_ERROR, "failed to get inode size");          return ret;  | 
