When a char * is statically initialized to a literal string, it is
best if the char is declared 'const' to ensure that literal string can
never be changed, and to allow it to be stored in read-only memory.
Unfortunately this is not possible for strings used as module
parameters. Similarly osd_0copy_tag in osd-zfs cannot be made const,
so that is change to a simple array (no pointer).
But in many other places it is possible, and it requires all ultimate
users of the string to declare that they are working with const chars.
This patch changes a collection of static char*s to const, and in many
cases arrays of char * to "const char * const", and then propagates
the 'const' annotion as needed.
Test-Parameters: trivial
Signed-off-by: Mr NeilBrown <neilb@suse.de>
Change-Id: I3185a6cd0d1b8a7dbd83698f456f65f47b4f2954
Reviewed-on: https://review.whamcloud.com/38421
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Reviewed-by: Shaun Tancheff <shaun.tancheff@hpe.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
struct lnet_handle_md *mdh);
void lnet_peer_push_event(struct lnet_event *ev);
struct lnet_handle_md *mdh);
void lnet_peer_push_event(struct lnet_event *ev);
-int lnet_parse_ip2nets(char **networksp, char *ip2nets);
-int lnet_parse_routes(char *route_str, int *im_a_router);
-int lnet_parse_networks(struct list_head *nilist, char *networks,
+int lnet_parse_ip2nets(const char **networksp, const char *ip2nets);
+int lnet_parse_routes(const char *route_str, int *im_a_router);
+int lnet_parse_networks(struct list_head *nilist, const char *networks,
bool use_tcp_bonding);
bool lnet_net_unique(__u32 net_id, struct list_head *nilist,
struct lnet_net **net);
bool use_tcp_bonding);
bool lnet_net_unique(__u32 net_id, struct list_head *nilist,
struct lnet_net **net);
lnet_get_routes(void)
{
return routes;
}
lnet_get_routes(void)
{
return routes;
}
lnet_get_networks(void)
{
lnet_get_networks(void)
{
+ const char *nets;
+ int rc;
if (*networks != 0 && *ip2nets != 0) {
LCONSOLE_ERROR_MSG(0x101, "Please specify EITHER 'networks' or "
if (*networks != 0 && *ip2nets != 0) {
LCONSOLE_ERROR_MSG(0x101, "Please specify EITHER 'networks' or "
struct lnet_ioctl_config_lnd_tunables *tun)
{
struct lnet_net *net;
struct lnet_ioctl_config_lnd_tunables *tun)
{
struct lnet_net *net;
int rc;
LIST_HEAD(net_head);
int rc;
LIST_HEAD(net_head);
LIST_HEAD(net_head);
int rc;
struct lnet_ioctl_config_lnd_tunables tun;
LIST_HEAD(net_head);
int rc;
struct lnet_ioctl_config_lnd_tunables tun;
- char *nets = conf->cfg_config_u.cfg_net.net_intf;
+ const char *nets = conf->cfg_config_u.cfg_net.net_intf;
/* Create a net/ni structures for the network string */
rc = lnet_parse_networks(&net_head, nets, use_tcp_bonding);
/* Create a net/ni structures for the network string */
rc = lnet_parse_networks(&net_head, nets, use_tcp_bonding);
-lnet_parse_networks(struct list_head *netlist, char *networks,
+lnet_parse_networks(struct list_head *netlist, const char *networks,
bool use_tcp_bonding)
{
struct cfs_expr_list *net_el = NULL;
bool use_tcp_bonding)
{
struct cfs_expr_list *net_el = NULL;
-lnet_str2tbs_sep(struct list_head *tbs, char *str)
+lnet_str2tbs_sep(struct list_head *tbs, const char *str)
int nob;
int i;
struct lnet_text_buf *ltb;
int nob;
int i;
struct lnet_text_buf *ltb;
-lnet_parse_routes (char *routes, int *im_a_router)
+lnet_parse_routes(const char *routes, int *im_a_router)
{
LIST_HEAD(tbs);
int rc = 0;
{
LIST_HEAD(tbs);
int rc = 0;
-lnet_match_networks (char **networksp, char *ip2nets, __u32 *ipaddrs, int nip)
+lnet_match_networks(const char **networksp, const char *ip2nets,
+ __u32 *ipaddrs, int nip)
{
static char networks[LNET_SINGLE_TEXTBUF_NOB];
static char source[LNET_SINGLE_TEXTBUF_NOB];
{
static char networks[LNET_SINGLE_TEXTBUF_NOB];
static char source[LNET_SINGLE_TEXTBUF_NOB];
EXPORT_SYMBOL(lnet_inet_enumerate);
int
EXPORT_SYMBOL(lnet_inet_enumerate);
int
-lnet_parse_ip2nets (char **networksp, char *ip2nets)
+lnet_parse_ip2nets(const char **networksp, const char *ip2nets)
{
struct lnet_inetdev *ifaces = NULL;
__u32 *ipaddrs = NULL;
{
struct lnet_inetdev *ifaces = NULL;
__u32 *ipaddrs = NULL;
-static char *token_type_string[] = {
+static const char * const token_type_string[] = {
[YAML_NO_TOKEN] = "YAML_NO_TOKEN",
[YAML_STREAM_START_TOKEN] = "YAML_STREAM_START_TOKEN",
[YAML_STREAM_END_TOKEN] = "YAML_STREAM_END_TOKEN",
[YAML_NO_TOKEN] = "YAML_NO_TOKEN",
[YAML_STREAM_START_TOKEN] = "YAML_STREAM_START_TOKEN",
[YAML_STREAM_END_TOKEN] = "YAML_STREAM_END_TOKEN",
[YAML_SCALAR_TOKEN] = "YAML_SCALAR_TOKEN",
};
[YAML_SCALAR_TOKEN] = "YAML_SCALAR_TOKEN",
};
-static char *state_string[] = {
+static const char * const state_string[] = {
[TREE_STATE_COMPLETE] = "COMPLETE",
[TREE_STATE_INITED] = "INITED",
[TREE_STATE_TREE_STARTED] = "TREE_STARTED",
[TREE_STATE_COMPLETE] = "COMPLETE",
[TREE_STATE_INITED] = "INITED",
[TREE_STATE_TREE_STARTED] = "TREE_STARTED",
};
/** Returns test string representation of numeric import state \a state */
};
/** Returns test string representation of numeric import state \a state */
-static inline char * ptlrpc_import_state_name(enum lustre_imp_state state)
+static inline const char *ptlrpc_import_state_name(enum lustre_imp_state state)
- static char *import_state_names[] = {
+ static const char * const import_state_names[] = {
"<UNKNOWN>", "CLOSED", "NEW", "DISCONN",
"CONNECTING", "REPLAY", "REPLAY_LOCKS", "REPLAY_WAIT",
"RECOVER", "FULL", "EVICTED", "IDLE",
"<UNKNOWN>", "CLOSED", "NEW", "DISCONN",
"CONNECTING", "REPLAY", "REPLAY_LOCKS", "REPLAY_WAIT",
"RECOVER", "FULL", "EVICTED", "IDLE",
}
LUSTRE_RW_ATTR(sync_count);
}
LUSTRE_RW_ATTR(sync_count);
-static char *dom_open_lock_modes[NUM_DOM_LOCK_ON_OPEN_MODES] = {
+static const char *dom_open_lock_modes[NUM_DOM_LOCK_ON_OPEN_MODES] = {
[NO_DOM_LOCK_ON_OPEN] = "never",
[TRYLOCK_DOM_ON_OPEN] = "trylock",
[ALWAYS_DOM_LOCK_ON_OPEN] = "always",
[NO_DOM_LOCK_ON_OPEN] = "never",
[TRYLOCK_DOM_ON_OPEN] = "trylock",
[ALWAYS_DOM_LOCK_ON_OPEN] = "always",
{
struct obd_device *obd = data;
struct obd_import *imp;
{
struct obd_device *obd = data;
struct obd_import *imp;
- char *imp_state_name = NULL;
+ const char *imp_state_name = NULL;
int rc = 0;
LASSERT(obd != NULL);
int rc = 0;
LASSERT(obd != NULL);
*options = '\0';
if (opts != NULL) {
/* strip out the options for back compatiblity */
*options = '\0';
if (opts != NULL) {
/* strip out the options for back compatiblity */
- static char *sout[] = {
+ static const char * const sout[] = {
"mballoc",
"iopen",
"noiopen",
"mballoc",
"iopen",
"noiopen",
#include <sys/sa_impl.h>
#include <sys/txg.h>
#include <sys/sa_impl.h>
#include <sys/txg.h>
-static char *osd_0copy_tag = "zerocopy";
-
+static char osd_0copy_tag[] = "zerocopy";
static void dbuf_set_pending_evict(dmu_buf_t *db)
{
static void dbuf_set_pending_evict(dmu_buf_t *db)
{
/* This must be longer than the longest string below */
#define SYNC_STATES_MAXLEN 16
/* This must be longer than the longest string below */
#define SYNC_STATES_MAXLEN 16
-static char *sync_lock_cancel_states[] = {
+static const char * const sync_lock_cancel_states[] = {
[SYNC_LOCK_CANCEL_NEVER] = "never",
[SYNC_LOCK_CANCEL_BLOCKING] = "blocking",
[SYNC_LOCK_CANCEL_ALWAYS] = "always",
[SYNC_LOCK_CANCEL_NEVER] = "never",
[SYNC_LOCK_CANCEL_BLOCKING] = "blocking",
[SYNC_LOCK_CANCEL_ALWAYS] = "always",
#ifdef HAVE_SERVER_SUPPORT
int get_mountdata(char *, struct lustre_disk_data *);
#ifdef HAVE_SERVER_SUPPORT
int get_mountdata(char *, struct lustre_disk_data *);
-static inline char *mt_str(enum ldd_mount_type mt)
+static inline const char *mt_str(enum ldd_mount_type mt)
- static char *mount_type_string[] = {
+ static const char * const mount_type_string[] = {
"ext3",
"ldiskfs",
"smfs",
"ext3",
"ldiskfs",
"smfs",
return mount_type_string[mt];
}
return mount_type_string[mt];
}
-static inline char *mt_type(enum ldd_mount_type mt)
+static inline const char *mt_type(enum ldd_mount_type mt)
- static char *mount_type_string[] = {
+ static const char * const mount_type_string[] = {
"osd-ldiskfs",
"osd-ldiskfs",
"osd-smfs",
"osd-ldiskfs",
"osd-ldiskfs",
"osd-smfs",