From 203f05490b404ff3fe3d5354a47c452905bb5b81 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 31 Mar 2008 10:27:12 -0700 Subject: [PATCH] kclient: drop leases for setattr --- src/TODO | 14 +++----------- src/kernel/inode.c | 4 ++++ 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/src/TODO b/src/TODO index e6745fd67d236..5f29b371e3ed5 100644 --- a/src/TODO +++ b/src/TODO @@ -4,17 +4,6 @@ code cleanup - probably kill base case in encoder.h, replace with int types, with appropriate swabbing? - addr=? -client leases -- lease length heuristics - - mds lock last_change stamp? -- client: preemptively release lease on dentry we are unlinking, renaming from/to, etc. - - ICONTENT on file open - - DN on unlink, rename - - IAUTH on setattr - - ICONTENT on utimes - - or inode fields we are chmodding, etc. -- lease renewals (to avoid blocking client ops?) - userspace client - validate dn leases - clean up ll_ interface, now that we have leases! @@ -92,6 +81,9 @@ mds mustfix - rerun destro trace against latest, with various journal lengths mds +- lease length heuristics + - mds lock last_change stamp? + - fix file_data_version - on recovery, validate file sizes when max_size > size diff --git a/src/kernel/inode.c b/src/kernel/inode.c index b3f7fd0dda0eb..6ad935ca13236 100644 --- a/src/kernel/inode.c +++ b/src/kernel/inode.c @@ -959,6 +959,7 @@ int ceph_setattr(struct dentry *dentry, struct iattr *attr) reqh->args.chown.gid = cpu_to_le32(attr->ia_gid); else reqh->args.chown.gid = cpu_to_le32(-1); + ceph_mdsc_lease_release(mdsc, inode, 0, CEPH_LOCK_IAUTH); err = ceph_mdsc_do_request(mdsc, req); ceph_mdsc_put_request(req); dout(10, "chown result %d\n", err); @@ -973,6 +974,7 @@ int ceph_setattr(struct dentry *dentry, struct iattr *attr) return PTR_ERR(req); reqh = req->r_request->front.iov_base; reqh->args.chmod.mode = cpu_to_le32(attr->ia_mode); + ceph_mdsc_lease_release(mdsc, inode, 0, CEPH_LOCK_IAUTH); err = ceph_mdsc_do_request(mdsc, req); ceph_mdsc_put_request(req); dout(10, "chmod result %d\n", err); @@ -998,6 +1000,7 @@ int ceph_setattr(struct dentry *dentry, struct iattr *attr) reqh = req->r_request->front.iov_base; ceph_encode_timespec(&reqh->args.utime.mtime, &attr->ia_mtime); ceph_encode_timespec(&reqh->args.utime.atime, &attr->ia_atime); + ceph_mdsc_lease_release(mdsc, inode, 0, CEPH_LOCK_ICONTENT); err = ceph_mdsc_do_request(mdsc, req); ceph_mdsc_put_request(req); dout(10, "utime result %d\n", err); @@ -1019,6 +1022,7 @@ int ceph_setattr(struct dentry *dentry, struct iattr *attr) return PTR_ERR(req); reqh = req->r_request->front.iov_base; reqh->args.truncate.length = cpu_to_le64(attr->ia_size); + ceph_mdsc_lease_release(mdsc, inode, 0, CEPH_LOCK_ICONTENT); err = ceph_mdsc_do_request(mdsc, req); ceph_mdsc_put_request(req); dout(10, "truncate result %d\n", err); -- 2.39.5