glusterd: really get the inode size for a brick
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: 1130462 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>
This commit is contained in:
parent
306e6bf33f
commit
b2ae71dbcf
@ -7310,30 +7310,35 @@ glusterd_add_inode_size_to_dict (dict_t *dict, int count)
|
||||
|
||||
for (fs = glusterd_fs ; glusterd_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
|
||||
@ -7341,7 +7346,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;
|
||||
}
|
||||
|
||||
@ -7388,7 +7393,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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user