diff options
Diffstat (limited to 'lib/assoc_array.c')
| -rw-r--r-- | lib/assoc_array.c | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/assoc_array.c b/lib/assoc_array.c index c6659cb37033..59875eb278ea 100644 --- a/lib/assoc_array.c +++ b/lib/assoc_array.c @@ -768,9 +768,11 @@ all_leaves_cluster_together:  		new_s0->index_key[i] =  			ops->get_key_chunk(index_key, i * ASSOC_ARRAY_KEY_CHUNK_SIZE); -	blank = ULONG_MAX << (level & ASSOC_ARRAY_KEY_CHUNK_MASK); -	pr_devel("blank off [%zu] %d: %lx\n", keylen - 1, level, blank); -	new_s0->index_key[keylen - 1] &= ~blank; +	if (level & ASSOC_ARRAY_KEY_CHUNK_MASK) { +		blank = ULONG_MAX << (level & ASSOC_ARRAY_KEY_CHUNK_MASK); +		pr_devel("blank off [%zu] %d: %lx\n", keylen - 1, level, blank); +		new_s0->index_key[keylen - 1] &= ~blank; +	}  	/* This now reduces to a node splitting exercise for which we'll need  	 * to regenerate the disparity table.  |