aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ceph/dir.c
diff options
context:
space:
mode:
authorSage Weil <sage@newdream.net>2011-02-04 20:45:58 -0800
committerSage Weil <sage@newdream.net>2011-02-04 20:45:58 -0800
commite8e1ba96b207deba1339b09983f8b29f92cb1497 (patch)
tree281f255e549ec247699d9860117c3b684c472997 /fs/ceph/dir.c
parent42961d2333a1855c649fa3790e258ab4f0fa66a4 (diff)
downloadkernel_samsung_smdk4412-e8e1ba96b207deba1339b09983f8b29f92cb1497.tar.gz
kernel_samsung_smdk4412-e8e1ba96b207deba1339b09983f8b29f92cb1497.tar.bz2
kernel_samsung_smdk4412-e8e1ba96b207deba1339b09983f8b29f92cb1497.zip
ceph: queue cap_snaps once per realm
We were forming a dirty list, and then queueing cap_snaps for each realm _and_ its children, regardless of whether the children were already in the dirty list. This meant we did it twice for some realms. Which in turn meant we corrupted mdsc->snap_flush_list when the cap_snap was re-added to the list it was already on, and could trigger an infinite loop. We were also using recursion to do reach all the children, a no-no when stack is limited. Instead, (re)queue any children on the dirty list, avoiding processing anything twice and avoiding any recursion. Signed-off-by: Sage Weil <sage@newdream.net>
Diffstat (limited to 'fs/ceph/dir.c')
0 files changed, 0 insertions, 0 deletions