From 2bc50259fa0aa1868f8b2ba1d374406cb3c57f72 Mon Sep 17 00:00:00 2001 From: Greg Farnum Date: Wed, 30 Jun 2010 12:44:34 -0700 Subject: [PATCH] ceph: add ceph_get_cap_for_mds function. Signed-off-by: Greg Farnum Signed-off-by: Sage Weil --- fs/ceph/caps.c | 10 ++++++++++ fs/ceph/super.h | 2 ++ 2 files changed, 12 insertions(+) diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c index 52befa65fbf7..e3b848d7698d 100644 --- a/fs/ceph/caps.c +++ b/fs/ceph/caps.c @@ -327,6 +327,16 @@ static struct ceph_cap *__get_cap_for_mds(struct ceph_inode_info *ci, int mds) return NULL; } +struct ceph_cap *ceph_get_cap_for_mds(struct ceph_inode_info *ci, int mds) +{ + struct ceph_cap *cap; + + spin_lock(&ci->vfs_inode.i_lock); + cap = __get_cap_for_mds(ci, mds); + spin_unlock(&ci->vfs_inode.i_lock); + return cap; +} + /* * Return id of any MDS with a cap, preferably FILE_WR|BUFFER|EXCL, else -1. */ diff --git a/fs/ceph/super.h b/fs/ceph/super.h index 44d10cb0aeca..8ceb62380d3f 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -816,6 +816,8 @@ extern int ceph_write_inode(struct inode *inode, struct writeback_control *wbc); extern int ceph_fsync(struct file *file, int datasync); extern void ceph_kick_flushing_caps(struct ceph_mds_client *mdsc, struct ceph_mds_session *session); +extern struct ceph_cap *ceph_get_cap_for_mds(struct ceph_inode_info *ci, + int mds); extern int ceph_get_cap_mds(struct inode *inode); extern void ceph_get_cap_refs(struct ceph_inode_info *ci, int caps); extern void ceph_put_cap_refs(struct ceph_inode_info *ci, int had); -- 2.39.2