[Pvfs2-cvs] commit by mtmoore in pvfs2/src/io/trove/trove-dbpf:
dbpf-keyval.c
CVS commit program
cvs at parl.clemson.edu
Thu Aug 20 10:06:00 EDT 2009
Update of /projects/cvsroot/pvfs2/src/io/trove/trove-dbpf
In directory parlweb1:/tmp/cvs-serv6367/pvfs2/src/io/trove/trove-dbpf
Modified Files:
Tag: Orange-mtmoore
dbpf-keyval.c
Log Message:
minor dbpf-keyval.c changes
Index: dbpf-keyval.c
===================================================================
RCS file: /projects/cvsroot/pvfs2/src/io/trove/trove-dbpf/dbpf-keyval.c,v
diff -p -u -r1.94.24.2 -r1.94.24.3
--- dbpf-keyval.c 10 Aug 2009 15:30:09 -0000 1.94.24.2
+++ dbpf-keyval.c 20 Aug 2009 14:05:59 -0000 1.94.24.3
@@ -412,29 +412,25 @@ static int dbpf_keyval_read_value_op_svc
memset(&pkey, 0, sizeof(pkey));
memset(&key_entry, 0, sizeof(key_entry));
- /* size of key to lookup is length of the key and the value */
+ /* size of key is length of the attr and value (minus 1 null) */
lookup_key_sz = op_p->u.v_read.key->buffer_sz +
- op_p->u.v_read.val->buffer_sz;
+ op_p->u.v_read.val->buffer_sz - 1;
- if( (lookup_key = malloc( DBPF_MAX_KEY_LENGTH * 2 )) == 0 )
+ if( (lookup_key = calloc( 2, DBPF_MAX_KEY_LENGTH )) == 0 )
{
gossip_debug(GOSSIP_DBPF_KEYVAL_DEBUG, "[DBPF KEYVAL]: malloc for "
"key_data failed.\n");
return -TROVE_ENOMEM;
}
- if( (original_key = malloc( DBPF_MAX_KEY_LENGTH * 2 )) == 0 )
+ if( (original_key = calloc( 2, DBPF_MAX_KEY_LENGTH )) == 0 )
{
gossip_debug(GOSSIP_DBPF_KEYVAL_DEBUG, "[DBPF KEYVAL]: malloc for "
"key_data failed.\n");
free(lookup_key);
return -TROVE_ENOMEM;
}
- memset(lookup_key, 0, DBPF_MAX_KEY_LENGTH * 2 );
- memset(original_key, 0, DBPF_MAX_KEY_LENGTH * 2 );
- gossip_debug(GOSSIP_DBPF_KEYVAL_DEBUG, "[DBPF KEYVAL]: key buffer: %d\n",
- op_p->u.v_read.key->buffer_sz);
/* only copy data into key if buffer is greater than 1 (null-string) */
if( op_p->u.v_read.key->buffer_sz > 1 )
{
@@ -459,21 +455,18 @@ static int dbpf_keyval_read_value_op_svc
return -TROVE_EINVAL;
}
/* store the original lookup key based on key, val from v_read */
- memcpy(original_key, lookup_key,
- (op_p->u.v_read.key->buffer_sz + op_p->u.v_read.val->buffer_sz - 1) );
+ memcpy(original_key, lookup_key, lookup_key_sz );
/* malloc for largest possible datum as 'value' portion of query may be
* partial */
- if( (val_datum = malloc(DBPF_MAX_KEY_LENGTH)) == 0)
+ if( (val_datum = calloc(1, DBPF_MAX_KEY_LENGTH)) == 0)
{
gossip_debug(GOSSIP_DBPF_KEYVAL_DEBUG, "[DBPF KEYVAL]: malloc for "
" val_datum failed.\n");
free(lookup_key);
free(original_key);
return -TROVE_ENOMEM;
-
}
- memset(val_datum, 0, DBPF_MAX_KEY_LENGTH );
key.data = lookup_key;
key.ulen = (2 * DBPF_MAX_KEY_LENGTH);
@@ -759,6 +752,7 @@ return_error:
}
dbc_p->c_close(dbc_p);
free(lookup_key);
+ free(original_key);
free(val_datum);
return ret;
}
@@ -2739,10 +2733,11 @@ static int dbpf_build_path_of_handle( DB
else
{
gossip_debug(GOSSIP_DBPF_KEYVAL_DEBUG,
- "[DBPF KEYVAL]: Failed finding parent handle for: "
- "handle %llu, ulen: %d, size: %d, %s\n",
+ "[DBPF KEYVAL]: No parent handle for "
+ "%llu, ulen: %d, size: %d, had built: %s, "
+ "bdb error: %s\n",
llu( key_entry.handle), data.ulen, data.size,
- db_strerror(ret));
+ path, db_strerror(ret));
ret = -dbpf_db_error_to_trove_error(ret);
return ret;
}
@@ -2764,33 +2759,30 @@ int PINT_trove_dbpf_keyval_secondary_cal
/* for attributes prefixed with user create a secondary key of the form
* <attribute><value> */
- if( ( pkey->size > ((sizeof(PVFS_handle) + strlen("user."))) ) &&
- ( memcmp(k->key, "user.", 5) == 0) )
+ if( ( ( pkey->size-sizeof(PVFS_handle)) > strlen("user.")) &&
+ ( memcmp(k->key, "user.", 5) == 0 ) )
{
/* size of new key is length of the attribute plus length of value */
- if( (key_data = malloc(strlen(k->key)+strlen(pdata->data) + 1) ) == 0 )
+ if( (key_data = calloc( 1, (strlen(k->key) + pdata->size + 1) )) == 0 )
{
gossip_debug(GOSSIP_DBPF_KEYVAL_DEBUG,
"[DBPF KEYVAL]: malloc for secondary_callback "
"for new attribute/value key failed.\n");
return TROVE_ENOMEM;
}
- memset(key_data, 0, (strlen(k->key) + strlen(pdata->data)+1));
/* copy attribute to start of key */
memcpy(key_data, k->key, strlen(k->key) );
/* copy value directly after key */
- memcpy((key_data + strlen(k->key)), pdata->data, strlen(pdata->data));
- skey->ulen = skey->size = strlen(key_data) + 1;
+ memcpy((key_data + strlen(k->key)), pdata->data, pdata->size);
+ skey->ulen = skey->size = strlen(k->key) + pdata->size;
gossip_debug(GOSSIP_DBPF_KEYVAL_DEBUG, "[DBPF KEYVAL]: CREATING "
- "SECONDARY INDEX (%s) (%d) -> "
- "[(%llu)(%s) (%d)]:[(%s) (%d)]\n",
+ "SECONDARY INDEX [(%s) (%d)] -> "
+ "[(%llu)(%s) (%d)] : [(%s) (%d)]\n",
(char *)key_data, skey->size,
- llu(k->handle),
- (char *)k->key,
- pkey->size,
+ llu(k->handle), (char *)k->key, pkey->size,
(char *)pdata->data, pdata->size);
}
else if((pdata->size == sizeof(TROVE_handle)) && (strcmp("dh", k->key)!=0))
@@ -2862,13 +2854,14 @@ int PINT_trove_dbpf_keyval_secondary_nor
key_data[i+strlen(k->key)] = tolower( ((char *)pdata->data)[i] );
}
skey->ulen = skey->size = strlen(key_data) + 1;
-
+/*
gossip_debug(GOSSIP_DBPF_KEYVAL_DEBUG, "[DBPF KEYVAL]: CREATING "
"SECONDARY NORM INDEX (%s) (%d) -> "
"[(%llu)(%s) (%d)]:[(%s) (%d)]\n",
(char *)key_data, skey->size, llu(k->handle),
(char *)k->key, pkey->size,
(char *)pdata->data, pdata->size);
+ */
}
else
{
More information about the Pvfs2-cvs
mailing list