From 70d7a96ae1359d88a762c9967ee044cb039ac73f Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Wed, 4 Mar 2009 16:09:15 -0800 Subject: [PATCH] kclient: small cleanup --- src/kernel/caps.c | 6 +++--- src/kernel/dir.c | 14 +++++++------- src/kernel/file.c | 8 ++++---- src/kernel/inode.c | 4 ++-- src/kernel/super.h | 9 ++++++--- 5 files changed, 22 insertions(+), 19 deletions(-) diff --git a/src/kernel/caps.c b/src/kernel/caps.c index fe7573e48cfea..e11717c8f1845 100644 --- a/src/kernel/caps.c +++ b/src/kernel/caps.c @@ -230,7 +230,7 @@ retry: /* move to tail of session rdcaps lru? */ if (!list_empty(&cap->session_rdcaps)) - list_del(&cap->session_rdcaps); + list_del_init(&cap->session_rdcaps); if ((cap->issued & ~CEPH_CAP_EXPIREABLE) == 0) list_add_tail(&cap->session_rdcaps, &session->s_rdcaps); @@ -980,7 +980,7 @@ static void __take_cap_refs(struct ceph_inode_info *ci, int got) * Note that caller is responsible for ensuring max_size increases are * requested from the MDS. */ -int ceph_get_cap_refs(struct ceph_inode_info *ci, int need, int want, int *got, +static int ceph_get_cap_refs(struct ceph_inode_info *ci, int need, int want, int *got, loff_t endoff) { struct inode *inode = &ci->vfs_inode; @@ -1821,7 +1821,7 @@ void ceph_trim_session_rdcaps(struct ceph_mds_session *session) } } -int ceph_wait_for_caps(struct ceph_inode_info *ci, int need, int want, int *got, +int ceph_get_caps(struct ceph_inode_info *ci, int need, int want, int *got, loff_t endoff) { return wait_event_interruptible(ci->i_cap_wq, diff --git a/src/kernel/dir.c b/src/kernel/dir.c index 4c8a52304c2ba..16730ed9b49ca 100644 --- a/src/kernel/dir.c +++ b/src/kernel/dir.c @@ -368,7 +368,7 @@ static int ceph_mknod(struct inode *dir, struct dentry *dentry, req->r_locked_dir = dir; req->r_args.mknod.mode = cpu_to_le32(mode); req->r_args.mknod.rdev = cpu_to_le32(rdev); - if ((ceph_caps_issued(ceph_inode(dir)) & CEPH_CAP_FILE_EXCL) == 0) + if (!ceph_caps_issued_mask(ceph_inode(dir), CEPH_CAP_FILE_EXCL)) ceph_release_caps(dir, CEPH_CAP_FILE_RDCACHE); err = ceph_mdsc_do_request(mdsc, dir, req); if (!err && req->r_reply_info.trace_numd == 0) { @@ -435,7 +435,7 @@ static int ceph_symlink(struct inode *dir, struct dentry *dentry, return PTR_ERR(req); } req->r_locked_dir = dir; - if ((ceph_caps_issued(ceph_inode(dir)) & CEPH_CAP_FILE_EXCL) == 0) + if (!ceph_caps_issued_mask(ceph_inode(dir), CEPH_CAP_FILE_EXCL)) ceph_release_caps(dir, CEPH_CAP_FILE_RDCACHE); err = ceph_mdsc_do_request(mdsc, dir, req); ceph_mdsc_put_request(req); @@ -481,7 +481,7 @@ static int ceph_mkdir(struct inode *dir, struct dentry *dentry, int mode) req->r_locked_dir = dir; req->r_args.mkdir.mode = cpu_to_le32(mode); - if ((ceph_caps_issued(ceph_inode(dir)) & CEPH_CAP_FILE_EXCL) == 0) + if (!ceph_caps_issued_mask(ceph_inode(dir), CEPH_CAP_FILE_EXCL)) ceph_release_caps(dir, CEPH_CAP_FILE_RDCACHE); err = ceph_mdsc_do_request(mdsc, dir, req); ceph_mdsc_put_request(req); @@ -512,7 +512,7 @@ static int ceph_link(struct dentry *old_dentry, struct inode *dir, req->r_locked_dir = old_dentry->d_inode; - if ((ceph_caps_issued(ceph_inode(dir)) & CEPH_CAP_FILE_EXCL) == 0) + if (!ceph_caps_issued_mask(ceph_inode(dir), CEPH_CAP_FILE_EXCL)) ceph_release_caps(dir, CEPH_CAP_FILE_RDCACHE); err = ceph_mdsc_do_request(mdsc, dir, req); if (err) { @@ -569,7 +569,7 @@ static int ceph_unlink(struct inode *dir, struct dentry *dentry) req->r_locked_dir = dir; /* by VFS */ - if ((ceph_caps_issued(ceph_inode(dir)) & CEPH_CAP_FILE_EXCL) == 0) + if (!ceph_caps_issued_mask(ceph_inode(dir), CEPH_CAP_FILE_EXCL)) ceph_release_caps(dir, CEPH_CAP_FILE_RDCACHE); ceph_mdsc_lease_release(mdsc, dir, dentry, CEPH_LOCK_DN); ceph_release_caps(inode, CEPH_CAP_LINK_RDCACHE); @@ -600,10 +600,10 @@ static int ceph_rename(struct inode *old_dir, struct dentry *old_dentry, if (IS_ERR(req)) return PTR_ERR(req); req->r_locked_dir = new_dir; - if ((ceph_caps_issued(ceph_inode(old_dir)) & CEPH_CAP_FILE_EXCL) == 0) + if (!ceph_caps_issued_mask(ceph_inode(old_dir), CEPH_CAP_FILE_EXCL)) ceph_release_caps(old_dir, CEPH_CAP_FILE_RDCACHE); ceph_mdsc_lease_release(mdsc, old_dir, old_dentry, CEPH_LOCK_DN); - if ((ceph_caps_issued(ceph_inode(new_dir)) & CEPH_CAP_FILE_EXCL) == 0) + if (!ceph_caps_issued_mask(ceph_inode(new_dir), CEPH_CAP_FILE_EXCL)) ceph_release_caps(new_dir, CEPH_CAP_FILE_RDCACHE); ceph_mdsc_lease_release(mdsc, new_dir, new_dentry, CEPH_LOCK_DN); err = ceph_mdsc_do_request(mdsc, old_dir, req); diff --git a/src/kernel/file.c b/src/kernel/file.c index 50b60c7844a12..ad008255329b7 100644 --- a/src/kernel/file.c +++ b/src/kernel/file.c @@ -121,7 +121,7 @@ int ceph_open(struct inode *inode, struct file *file) dentry = d_find_alias(inode); if (!dentry) return -ESTALE; /* yuck */ - if ((ceph_caps_issued(ceph_inode(inode)) & CEPH_CAP_FILE_EXCL) == 0) + if (!ceph_caps_issued_mask(ceph_inode(inode), CEPH_CAP_FILE_EXCL)) ceph_release_caps(inode, CEPH_CAP_FILE_RDCACHE); req = prepare_open_request(inode->i_sb, dentry, flags, 0); if (IS_ERR(req)) { @@ -171,7 +171,7 @@ struct dentry *ceph_lookup_open(struct inode *dir, struct dentry *dentry, if (IS_ERR(req)) return ERR_PTR(PTR_ERR(req)); if ((flags & O_CREAT) && - (ceph_caps_issued(ceph_inode(dir)) & CEPH_CAP_FILE_EXCL) == 0) + (!ceph_caps_issued_mask(ceph_inode(dir), CEPH_CAP_FILE_EXCL))) ceph_release_caps(dir, CEPH_CAP_FILE_RDCACHE); req->r_locked_dir = dir; /* caller holds dir->i_mutex */ err = ceph_mdsc_do_request(mdsc, parent_inode, req); @@ -277,7 +277,7 @@ static ssize_t ceph_aio_read(struct kiocb *iocb, const struct iovec *iov, dout(10, "aio_read %llx.%llx %llu~%u trying to get caps on %p\n", ceph_vinop(inode), pos, (unsigned)len, inode); - ret = ceph_wait_for_caps(ci, + ret = ceph_get_caps(ci, CEPH_CAP_FILE_RD, CEPH_CAP_FILE_RDCACHE, &got, -1); @@ -357,7 +357,7 @@ retry_snap: check_max_size(inode, endoff); dout(10, "aio_write %p %llu~%u getting caps. i_size %llu\n", inode, pos, (unsigned)iov->iov_len, inode->i_size); - ret = ceph_wait_for_caps(ci, + ret = ceph_get_caps(ci, CEPH_CAP_FILE_WR, CEPH_CAP_FILE_WRBUFFER, &got, endoff); diff --git a/src/kernel/inode.c b/src/kernel/inode.c index 3e5c08e2ea1bb..80059491cb02e 100644 --- a/src/kernel/inode.c +++ b/src/kernel/inode.c @@ -1556,7 +1556,7 @@ static int ceph_setattr_time(struct dentry *dentry, struct iattr *attr) int err; /* if i hold CAP_EXCL, i can change [am]time any way i like */ - if (ceph_caps_issued(ci) & CEPH_CAP_FILE_EXCL) { + if (ceph_caps_issued_mask(ci, CEPH_CAP_FILE_EXCL)) { dout(10, "utime holding EXCL, doing locally\n"); ci->i_time_warp_seq++; if (ia_valid & ATTR_ATIME) @@ -1569,7 +1569,7 @@ static int ceph_setattr_time(struct dentry *dentry, struct iattr *attr) } /* if i hold CAP_WR, i can _increase_ [am]time safely */ - if ((ceph_caps_issued(ci) & CEPH_CAP_FILE_WR) && + if (ceph_caps_issued_mask(ci, CEPH_CAP_FILE_WR) && ((ia_valid & ATTR_MTIME) == 0 || timespec_compare(&inode->i_mtime, &attr->ia_mtime) < 0) && ((ia_valid & ATTR_ATIME) == 0 || diff --git a/src/kernel/super.h b/src/kernel/super.h index 2dfe50cd53ec8..d7f0b14d3d597 100644 --- a/src/kernel/super.h +++ b/src/kernel/super.h @@ -443,6 +443,11 @@ static inline int ceph_caps_issued(struct ceph_inode_info *ci) return issued; } +static inline int ceph_caps_issued_mask(struct ceph_inode_info *ci, int mask) +{ + return (ceph_caps_issued(ci) & mask); +} + extern int __ceph_caps_dirty(struct ceph_inode_info *ci); extern int ceph_caps_revoking(struct ceph_inode_info *ci); @@ -722,8 +727,6 @@ extern int ceph_add_cap(struct inode *inode, struct ceph_cap *new_cap); extern void ceph_remove_cap(struct ceph_cap *cap); extern int ceph_get_cap_mds(struct inode *inode); -extern int ceph_get_cap_refs(struct ceph_inode_info *ci, int need, int want, - int *got, loff_t offset); extern void ceph_put_cap_refs(struct ceph_inode_info *ci, int had); extern void ceph_put_wrbuffer_cap_refs(struct ceph_inode_info *ci, int nr, struct ceph_snap_context *snapc); @@ -739,7 +742,7 @@ static inline void ceph_release_caps(struct inode *inode, int mask) ceph_check_caps(ceph_inode(inode), 1, mask, NULL); } -extern int ceph_wait_for_caps(struct ceph_inode_info *ci, int need, int want, int *got, +extern int ceph_get_caps(struct ceph_inode_info *ci, int need, int want, int *got, loff_t endoff); /* addr.c */ -- 2.39.5