Bug #18041 » 0001-ceph-don-t-set-req-r_locked_dir-in-ceph_d_revalidate.patch
fs/ceph/dir.c | ||
---|---|---|
mask |= CEPH_CAP_XATTR_SHARED;
|
||
req->r_args.getattr.mask = mask;
|
||
req->r_locked_dir = dir;
|
||
err = ceph_mdsc_do_request(mdsc, NULL, req);
|
||
if (err == 0 || err == -ENOENT) {
|
||
if (dentry == req->r_dentry) {
|
||
switch (err) {
|
||
case 0:
|
||
if (d_really_is_positive(dentry) &&
|
||
d_inode(dentry) == req->r_target_inode)
|
||
valid = !d_unhashed(dentry);
|
||
} else {
|
||
d_invalidate(req->r_dentry);
|
||
err = -EAGAIN;
|
||
}
|
||
break;
|
||
case -ENOENT:
|
||
if (d_really_is_negative(dentry))
|
||
valid = 1;
|
||
/* Fallthrough */
|
||
default:
|
||
break;
|
||
}
|
||
ceph_mdsc_put_request(req);
|
||
dout("d_revalidate %p lookup result=%d\n",
|
- « Previous
- 1
- …
- 5
- 6
- 7
- Next »