};
/* get/set_info keys */
-#define KEY_MDS_CONN "mds_conn"
-#define KEY_NEXT_ID "next_id"
-#define KEY_LOVDESC "lovdesc"
-#define KEY_INIT_RECOV "initial_recov"
-#define KEY_INIT_RECOV_BACKUP "init_recov_bk"
+#define KEY_MDS_CONN "mds_conn"
+#define KEY_NEXT_ID "next_id"
+#define KEY_LOVDESC "lovdesc"
+#define KEY_INIT_RECOV "initial_recov"
+#define KEY_INIT_RECOV_BACKUP "init_recov_bk"
#define KEY_LOV_IDX "lov_idx"
#define KEY_LAST_ID "last_id"
+#define KEY_LOCK_TO_STRIPE "lock_to_stripe"
+#define KEY_CHECKSUM "checksum"
+#define KEY_READONLY "readonly"
+#define KEY_UNLINKED "unlinked"
+#define KEY_EVICT_BY_NID "evict_by_nid"
+#define KEY_REGISTER_TARGET "register_target"
+#define KEY_SET_FS "set_fs"
+#define KEY_CLEAR_FS "clear_fs"
+#define KEY_SET_INFO "set_info"
+#define KEY_BLOCKSIZE "blocksize"
+#define KEY_BLOCKSIZE_BITS "blocksize_bits"
+#define KEY_MAX_EASIZE "max_ea_size"
+/* XXX unused */
+#define KEY_ASYNC "async"
struct obd_ops {
struct module *o_owner;
#define OBD_SLAB_FREE_PTR(ptr, slab) \
OBD_SLAB_FREE((ptr), (slab), sizeof *(ptr))
-#define KEY_IS(str) (keylen >= strlen(str) && strcmp(key, str) == 0)
+#define KEY_IS(str) \
+ (keylen >= (sizeof(str) - 1) && memcmp(key, str, sizeof(str) - 1) == 0)
/* Wrapper for contiguous page frame allocation */
#define OBD_PAGES_ALLOC(ptr, order, gfp_mask) \
char name[16];
struct ldlm_lock *lock;
struct lov_stripe_md *lsm;
- } key = { .name = "lock_to_stripe", .lock = lock, .lsm = lsm };
+ } key = { .name = KEY_LOCK_TO_STRIPE, .lock = lock, .lsm = lsm };
__u32 stripe, vallen = sizeof(stripe);
int rc;
ENTRY;
CERROR("MDC %s: not setup or attached\n", mdc);
GOTO(out_free, err = -EINVAL);
}
- obd_set_info_async(obd->obd_self_export, strlen("async"), "async",
+ obd_set_info_async(obd->obd_self_export, sizeof(KEY_ASYNC), KEY_ASYNC,
sizeof(async), &async, NULL);
ocd.ocd_connect_flags = OBD_CONNECT_IBITS | OBD_CONNECT_VERSION |
CERROR("OSC %s: not setup or attached\n", osc);
GOTO(out_mdc, err = -EINVAL);
}
- obd_set_info_async(obd->obd_self_export, strlen("async"), "async",
+ obd_set_info_async(obd->obd_self_export, sizeof(KEY_ASYNC), KEY_ASYNC,
sizeof(async), &async, NULL);
obd->obd_upcall.onu_owner = &sbi->ll_lco;
return -ENOMEM;
strncpy(msp->mgs_param, string, MGS_PARAM_MAXLEN);
- rc = obd_set_info_async(mgc, strlen(KEY_SET_INFO), KEY_SET_INFO,
+ rc = obd_set_info_async(mgc, sizeof(KEY_SET_INFO), KEY_SET_INFO,
sizeof(struct mgs_send_param), msp, NULL);
if (rc)
CERROR("Failed to set parameter: %d\n", rc);
char name[16];
struct ldlm_lock *lock;
struct lov_stripe_md *lsm;
- } key = { .name = "lock_to_stripe", .lock = lock, .lsm = lsm };
+ } key = { .name = KEY_LOCK_TO_STRIPE, .lock = lock, .lsm = lsm };
__u32 stripe, vallen = sizeof(stripe);
int rc;
ENTRY;
}
checksum = sbi->ll_flags & LL_SBI_DATA_CHECKSUM;
- err = obd_set_info_async(sbi->ll_osc_exp, strlen("checksum"),
- "checksum", sizeof(checksum),
+ err = obd_set_info_async(sbi->ll_osc_exp, sizeof(KEY_CHECKSUM),
+ KEY_CHECKSUM, sizeof(checksum),
&checksum, NULL);
/* making vm readahead 0 for 2.4.x. In the case of 2.6.x,
*lmmsize = obd_size_diskmd(sbi->ll_osc_exp, NULL);
size = sizeof(int);
- rc = obd_get_info(sbi->ll_mdc_exp, strlen("max_easize"), "max_easize",
- &size, lmmsize);
+ rc = obd_get_info(sbi->ll_mdc_exp, sizeof(KEY_MAX_EASIZE),
+ KEY_MAX_EASIZE, &size, lmmsize);
if (rc)
CERROR("Get max mdsize error rc %d \n", rc);
/* Try all connections, but only once. */
rc = obd_set_info_async(obd->obd_self_export,
- strlen("init_recov_bk"), "init_recov_bk",
+ sizeof(KEY_INIT_RECOV_BACKUP), KEY_INIT_RECOV_BACKUP,
sizeof(recov_bk), &recov_bk, NULL);
if (rc)
GOTO(out_cleanup, rc);
if ((*flags & MS_RDONLY) != (sb->s_flags & MS_RDONLY)) {
read_only = *flags & MS_RDONLY;
- err = obd_set_info_async(sbi->ll_mdc_exp, strlen("read-only"),
- "read-only", sizeof(read_only),
+ err = obd_set_info_async(sbi->ll_mdc_exp, sizeof(KEY_READONLY),
+ KEY_READONLY, sizeof(read_only),
&read_only, NULL);
if (err) {
CERROR("Failed to change the read-only flag during "
else
sbi->ll_flags &= ~(LL_SBI_LLITE_CHECKSUM|LL_SBI_DATA_CHECKSUM);
- rc = obd_set_info_async(sbi->ll_osc_exp, strlen("checksum"), "checksum",
+ rc = obd_set_info_async(sbi->ll_osc_exp, sizeof(KEY_CHECKSUM), KEY_CHECKSUM,
sizeof(val), &val, NULL);
if (rc)
CWARN("Failed to set OSC checksum flags: %d\n", rc);
lov_getref(obddev);
- if (KEY_IS("lock_to_stripe")) {
+ if (KEY_IS(KEY_LOCK_TO_STRIPE)) {
struct {
char name[16];
struct ldlm_lock *lock;
incr = sizeof(struct obd_id_info);
do_inactive = 1;
next_id = 1;
- } else if (KEY_IS("checksum")) {
+ } else if (KEY_IS(KEY_CHECKSUM)) {
do_inactive = 1;
- } else if (KEY_IS(KEY_MDS_CONN) || KEY_IS("unlinked")) {
+ } else if (KEY_IS(KEY_MDS_CONN) || KEY_IS(KEY_UNLINKED)) {
check_uuid = val ? 1 : 0;
- } else if (KEY_IS("evict_by_nid")) {
+ } else if (KEY_IS(KEY_EVICT_BY_NID)) {
/* use defaults:
do_inactive = incr = 0;
*/
for (i = 0; i < lump->lmm_stripe_count; i++) {
__u32 len = sizeof(last_id);
oexp = lov->lov_tgts[lump->lmm_objects[i].l_ost_idx]->ltd_exp;
- rc = obd_get_info(oexp, strlen("last_id"), "last_id",
+ rc = obd_get_info(oexp, sizeof(KEY_LAST_ID), KEY_LAST_ID,
&len, &last_id);
if (rc)
RETURN(rc);
exp->exp_obd->obd_name, imp->imp_initial_recov_bk);
RETURN(0);
}
- if (KEY_IS("read-only")) {
+ if (KEY_IS(KEY_READONLY)) {
struct ptlrpc_request *req;
int size[3] = { sizeof(struct ptlrpc_body), keylen, vallen };
char *bufs[3] = { NULL, key, val };
{
int rc = -EINVAL;
- if (keylen == strlen("max_easize") &&
- memcmp(key, "max_easize", strlen("max_easize")) == 0) {
+ if (KEY_IS(KEY_MAX_EASIZE)) {
int mdsize, *max_easize;
if (*vallen != sizeof(int))
int rc, size;
ENTRY;
- rc = obd_get_info(lov_exp, strlen(KEY_LOVDESC) + 1, KEY_LOVDESC,
+ rc = obd_get_info(lov_exp, sizeof(KEY_LOVDESC), KEY_LOVDESC,
&valsize, &desc);
if (rc)
RETURN(rc);
lustre_msg_set_status(req->rq_repmsg, 0);
- if (KEY_IS("read-only")) {
+ if (KEY_IS(KEY_READONLY)) {
if (val == NULL || vallen < sizeof(__u32)) {
DEBUG_REQ(D_HA, req, "no set_info val");
RETURN(-EFAULT);
return -ENOMEM;
if (obd->u.mds.mds_evict_ost_nids) {
- rc = obd_set_info_async(mds->mds_osc_exp,strlen("evict_by_nid"),
- "evict_by_nid", strlen(tmpbuf + 4) + 1,
+ rc = obd_set_info_async(mds->mds_osc_exp,sizeof(KEY_EVICT_BY_NID),
+ KEY_EVICT_BY_NID, strlen(tmpbuf + 4) + 1,
tmpbuf + 4, set);
if (rc)
CERROR("Failed to evict nid %s from OSTs: rc %d\n",
info.idx = idx;
info.data = id;
-
rc = obd_set_info_async(mds->mds_osc_exp, sizeof(KEY_NEXT_ID),
KEY_NEXT_ID, sizeof(info), &info, NULL);
if (rc)
rc = mds_finish_transno(mds, dparent ? dparent->d_inode : NULL,
handle, req, rc, 0, 0);
if (!rc)
- (void)obd_set_info_async(mds->mds_osc_exp, strlen("unlinked"),
- "unlinked", 0, NULL, NULL);
+ (void)obd_set_info_async(mds->mds_osc_exp, sizeof(KEY_UNLINKED),
+ KEY_UNLINKED, 0, NULL, NULL);
switch(cleanup_phase) {
case 5: /* pending_dir semaphore */
UNLOCK_INODE_MUTEX(mds->mds_pending_dir->d_inode);
RETURN(0);
}
/* FIXME move this to mgc_process_config */
- if (KEY_IS("register_target")) {
+ if (KEY_IS(KEY_REGISTER_TARGET)) {
struct mgs_target_info *mti;
if (vallen != sizeof(struct mgs_target_info))
RETURN(-EINVAL);
rc = mgc_target_register(exp, mti);
RETURN(rc);
}
- if (KEY_IS("set_fs")) {
+ if (KEY_IS(KEY_SET_FS)) {
struct super_block *sb = (struct super_block *)val;
struct lustre_sb_info *lsi;
if (vallen != sizeof(struct super_block))
}
RETURN(rc);
}
- if (KEY_IS("clear_fs")) {
+ if (KEY_IS(KEY_CLEAR_FS)) {
if (vallen != 0)
RETURN(-EINVAL);
rc = mgc_fs_cleanup(exp->exp_obd);
recov_bk++;
CDEBUG(D_MOUNT, "%s: Set MGC reconnect %d\n", mgcname,recov_bk);
rc = obd_set_info_async(obd->obd_self_export,
- strlen(KEY_INIT_RECOV_BACKUP),
+ sizeof(KEY_INIT_RECOV_BACKUP),
KEY_INIT_RECOV_BACKUP,
sizeof(recov_bk), &recov_bk, NULL);
GOTO(out, rc = 0);
/* Try all connections, but only once. */
recov_bk = 1;
rc = obd_set_info_async(obd->obd_self_export,
- strlen(KEY_INIT_RECOV_BACKUP),
+ sizeof(KEY_INIT_RECOV_BACKUP),
KEY_INIT_RECOV_BACKUP,
sizeof(recov_bk), &recov_bk, NULL);
if (rc)
/* cl_mgc_sem in mgc insures we sleep if the mgc_fs is busy */
rc = obd_set_info_async(mgc->obd_self_export,
- strlen("set_fs"), "set_fs",
+ sizeof(KEY_SET_FS), KEY_SET_FS,
sizeof(*sb), sb, NULL);
if (rc) {
CERROR("can't set_fs %d\n", rc);
CDEBUG(D_MOUNT, "Unassign mgc disk\n");
rc = obd_set_info_async(mgc->obd_self_export,
- strlen("clear_fs"), "clear_fs",
+ sizeof(KEY_CLEAR_FS), KEY_CLEAR_FS,
0, NULL, NULL);
RETURN(rc);
}
/* Register the target */
/* FIXME use mgc_process_config instead */
rc = obd_set_info_async(mgc->u.cli.cl_mgc_mgsexp,
- strlen("register_target"), "register_target",
+ sizeof(KEY_REGISTER_TARGET), KEY_REGISTER_TARGET,
sizeof(*mti), mti, NULL);
if (rc)
GOTO(out, rc);
RETURN(-EINVAL);
}
- if (KEY_IS("blocksize")) {
+ if (KEY_IS(KEY_BLOCKSIZE)) {
__u32 *blocksize = val;
if (blocksize) {
if (*vallen < sizeof(*blocksize))
RETURN(0);
}
- if (KEY_IS("blocksize_bits")) {
+ if (KEY_IS(KEY_BLOCKSIZE_BITS)) {
__u32 *blocksize_bits = val;
if (blocksize_bits) {
if (*vallen < sizeof(*blocksize_bits))
RETURN(0);
}
- if (KEY_IS("last_id")) {
+ if (KEY_IS(KEY_LAST_ID)) {
obd_id *last_id = val;
/* FIXME: object groups */
if (last_id) {
if (!vallen || !val)
RETURN(-EFAULT);
- if (KEY_IS("lock_to_stripe")) {
+ if (KEY_IS(KEY_LOCK_TO_STRIPE)) {
__u32 *stripe = val;
*vallen = sizeof(*stripe);
*stripe = 0;
RETURN(0);
- } else if (KEY_IS("last_id")) {
+ } else if (KEY_IS(KEY_LAST_ID)) {
struct ptlrpc_request *req;
obd_id *reply;
char *bufs[2] = { NULL, key };
RETURN(0);
}
- if (KEY_IS("unlinked")) {
+ if (KEY_IS(KEY_UNLINKED)) {
struct osc_creator *oscc = &obd->u.cli.cl_oscc;
spin_lock(&oscc->oscc_lock);
oscc->oscc_flags &= ~OSCC_FLAG_NOSPC;
RETURN(0);
}
- if (KEY_IS("checksum")) {
+ if (KEY_IS(KEY_CHECKSUM)) {
if (vallen != sizeof(int))
RETURN(-EINVAL);
exp->exp_obd->u.cli.cl_checksum = (*(int *)val) ? 1 : 0;
if (vallen)
val = lustre_msg_buf(req->rq_reqmsg, REQ_REC_OFF + 1, 0);
- if (KEY_IS("evict_by_nid")) {
+ if (KEY_IS(KEY_EVICT_BY_NID)) {
if (val && vallen)
obd_export_evict_by_nid(exp->exp_obd, val);
/* Don't retry if connect fails */
rc = 0;
obd_set_info_async(obd->obd_self_export,
- strlen(KEY_INIT_RECOV),
+ sizeof(KEY_INIT_RECOV),
KEY_INIT_RECOV,
sizeof(rc), &rc, NULL);
}