Hi,

I am trying to understand **Straw2** bucket used in **CRUSH algorithm** of **Ceph**. I have some specific questions. The code is given below:

**Questions:**

- Why there is a need of taking **log** of **hash value**?
- Is **x** the **placement ps** calculated by **crush_hash32_2** function?
- What function **crush_ln()** in the given code (mapper.c) is actually computing? I am confused by the comment **2^44*log2(input+1)**.
- Why there is a need of creating a negative number based on **ln (natural log)** of hash value? 

Please help me understand these points.

Thanks in advance