summaryrefslogtreecommitdiffstats
path: root/virt
diff options
context:
space:
mode:
authorXiaowei.Hu <xiaowei.hu@oracle.com>2011-10-19 09:34:19 +0800
committerJoel Becker <jlbec@evilplan.org>2011-11-17 01:46:48 -0800
commit0393afea31874947b1d149b82d17b7dccac4f210 (patch)
treef9eb50279c4a122d9483be097d41e7a4d8f20905 /virt
parente41d33af7c037a6f7350f8410b45ce83b50d1b80 (diff)
downloadop-kernel-dev-0393afea31874947b1d149b82d17b7dccac4f210.zip
op-kernel-dev-0393afea31874947b1d149b82d17b7dccac4f210.tar.gz
ocfs2: Add a missing journal credit in ocfs2_link_credits() -v2
With indexed_dir enabled, ocfs2 maintains a list of dirblocks having space. The credit calculation in ocfs2_link_credits() did not correctly account for adding an entry that exactly fills a dirblock that triggers removing that dirblock by changing the pointer in the previous block in the list. The credit calculation did not account for that previous block. To expose, do: mkfs.ocfs2 -b 512 -M local /dev/sdX mount /dev/sdX /ocfs2 mkdir /ocfs2/linkdir touch /ocfs2/linkdir/file1 for i in `seq 1 29` ; do link /ocfs2/linkdir/file1 /ocfs2/linkdir/linklinklinklinklinklink$i; done rm -f /ocfs2/linkdir/linklinklinklinklinklink10 sleep 8 link /ocfs2/linkdir/file1 /ocfs2/linkdir/linklinklinklinklinklinkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Note: The link names have been crafted for a 512 byte blocksize. Reproducing with a larger blocksize will require longer (or more) links. The sleep is important. We want jbd2 to commit the transaction so that the missing block does not piggy back on account of the previous transaction. Signed-off-by: XiaoweiHu <xiaowei.hu at oracle.com> Reviewed-by: WengangWang <wen.gang.wang at oracle.com> Reviewed-by: Sunil.Mushran <sunil.mushran at oracle.com> Signed-off-by: Joel Becker <jlbec@evilplan.org>
Diffstat (limited to 'virt')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud