On Wed, 20 Jul 2011, huang jun wrote: > hi,all > we do test about "rm directories" repeatedly, and the result confused us a lot. > build ceph v0.30 on linux-2.6.37 > folllow below steps: > $ mount -t ceph 192.168.0.11:/ /mnt > $ mkdir /mnt/a > $ cd /mnt > $ rm -rf a > from the kernel client debug log, in the process "readdir a", we can't > read directory "a" in client's cache, > trace to soruce code , we find "(ci->i_ceph_flags & > CEPH_I_COMPLETE)" is false, so client can't do "__dcache_readdir" > function(Dir.c line 262),which was used to read data from cache. > so client sends a request to MDS to get infomation of dir "a", that > consumes much time, we can not tolerate if it needs 10s to remove 10 > dirs. we are not clear that why client can't read dir "a" from it > local cache? This is blocked by the addition of a d_prune dentry operation in the upstream kernel. Hopefully that will get merged during this next window. See my July 8 email to linux-fsdevel and LKML. Previously we were hooked into the d_release callback, but that was racy: it was possible for ceph to think the directory was complete when in fact it was not. ->d_prune() will fix that when it's merged and this capability will get turned back on. sage -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html