Bug #18686
closedtoo many on the wire revalidations from ceph_d_revalidate
0%
Description
Zheng says:
A user reported he saw ceph_d_revalidate() sends large volume getattr requests when running vdbench. I think the reason is that we recently made ceph_d_revalidate() use getattr request instead lookup request. Getattr request reply does not update dentry lease. So ceph_d_revalidate() sends a request each time it gets called. I had a quick look at code, it seems safely updating dentry lease also requires locked parent dir. Any idea how to fix this
He's correct the you do currently need r_locked_dir set in the request in order for the lease to be updated, but I don't think the dentry lease stuff really requires that the parent be locked.
I don't see why we need the parent dir locked in order to update the lease. We just need to ensure that the lease in the trace is for the correct parent before updating it.
Opening this bug to track reorganizing ceph_fill_trace to update the lease even when the parent isn't locked.