]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
Fix memstore free space caculation 3451/head
authorXiaoxi Chen <xiaoxi.chen@intel.com>
Thu, 22 Jan 2015 08:19:44 +0000 (16:19 +0800)
committerXiaoxi Chen <xiaoxi.chen@intel.com>
Thu, 22 Jan 2015 08:19:44 +0000 (16:19 +0800)
commit804deec15b6bd7b1f843405af65e2863e5655ef8
treeae3cfb90d0597a25bf6ebd5edcf9449bcb19e845
parent6f44f7a0a9847e419ce2783164633efa71218380
Fix memstore free space caculation

Originally if memstore run out of space, it will report a very
large positive number as free space. For example:

root@bigmem:~# rados df
pool name                 KB      objects       clones     degraded      unfound           rd        rd KB           wr        wr KB
rbd                 12366704        92240            0            0           0            0            0        92240     12366704
  total used        12375877        92240
  total avail   36028797009199167
  total space        2611076

st->f_bavail = st->f_blocks - used_bytes / st->f_bsize

This is due to used_bytes is an unsigned value, so compiler make the whole statement unsigned.

Fix it by adding explicit type cast,

st->f_bavail = long(st->f_blocks) - long(used_bytes / st->f_bsize)

Signed-off-by: Xiaoxi Chen <xiaoxi.chen@intel.com>
src/os/MemStore.cc