[PATCH v3 11/12] fs/ceph: use ceph_vino() etc. instead of accessing i_vino directly
Max Kellermann <[email protected]>
| Newsgroups | org.kernel.vger.ceph-devel,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Prepare to remove (optimize) `i_vino`. Signed-off-by: Max Kellermann <[email protected]> --- fs/ceph/addr.c | 5 ++--- fs/ceph/caps.c | 4 ++-- fs/ceph/file.c | 14 +++++++------- fs/ceph/mds_client.c | 2 +- fs/ceph/quota.c | 2 +- fs/ceph/snap.c | 4 ++-- fs/ceph/super.h | 7 +++---- fs/ceph/xattr.c | 4 ++-- 8 files changed, 20 insertions(+), 22 deletions(-) diff --git a/fs/ceph/addr.c b/fs/ceph/addr.c index ecfd0fed3471..7beb1b4d1cd9 100644 --- a/fs/ceph/addr.c +++ b/fs/ceph/addr.c @@ -282,7 +282,6 @@ static bool ceph_netfs_issue_op_inline(struct netfs_io_subrequest *subreq) struct ceph_mds_reply_info_in *iinfo; struct ceph_mds_request *req; struct ceph_mds_client *mdsc = ceph_sb_to_mdsc(inode->i_sb); - struct ceph_inode_info *ci = ceph_inode(inode); ssize_t err = 0; size_t len; int mode; @@ -302,7 +301,7 @@ static bool ceph_netfs_issue_op_inline(struct netfs_io_subrequest *subreq) err = PTR_ERR(req); goto out; } - req->r_ino1 = ci->i_vino; + req->r_ino1 = ceph_vino(inode); req->r_args.getattr.mask = cpu_to_le32(CEPH_STAT_CAP_INLINE_DATA); req->r_num_caps = 2; @@ -2475,7 +2474,7 @@ static int __ceph_pool_perm_get(struct ceph_inode_info *ci, rd_req->r_base_oloc.pool = pool; if (pool_ns) rd_req->r_base_oloc.pool_ns = ceph_get_string(pool_ns); - ceph_oid_printf(&rd_req->r_base_oid, "%llx.00000000", ci->i_vino.ino); + ceph_oid_printf(&rd_req->r_base_oid, "%llx.00000000", ceph_ino(&ci->netfs.inode)); err = ceph_osdc_alloc_messages(rd_req, GFP_NOFS); if (err) diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c index 51ed5aee193f..49213c320d7f 100644 --- a/fs/ceph/caps.c +++ b/fs/ceph/caps.c @@ -730,7 +730,7 @@ void ceph_add_cap(struct inode *inode, ceph_change_snap_realm(inode, realm); else WARN(1, "%s: couldn't find snap realm 0x%llx (ino 0x%llx oldrealm 0x%llx)\n", - __func__, realmino, ci->i_vino.ino, + __func__, realmino, ceph_ino(inode), ci->i_snap_realm ? ci->i_snap_realm->ino : 0); } @@ -1176,7 +1176,7 @@ void __ceph_remove_cap(struct ceph_cap *cap, bool queue_release) } else { cap->queue_release = 0; } - cap->cap_ino = ci->i_vino.ino; + cap->cap_ino = ceph_ino(inode); spin_unlock(&session->s_cap_lock); diff --git a/fs/ceph/file.c b/fs/ceph/file.c index e79c18aee78d..bf4e888905a5 100644 --- a/fs/ceph/file.c +++ b/fs/ceph/file.c @@ -1119,7 +1119,7 @@ ssize_t __ceph_sync_read(struct inode *inode, loff_t *ki_pos, read_off, read_len); req = ceph_osdc_new_request(osdc, &ci->i_layout, - ci->i_vino, read_off, &read_len, 0, 1, + ceph_vino(inode), read_off, &read_len, 0, 1, sparse ? CEPH_OSD_OP_SPARSE_READ : CEPH_OSD_OP_READ, CEPH_OSD_FLAG_READ, @@ -1825,7 +1825,7 @@ ceph_sync_write(struct kiocb *iocb, struct iov_iter *from, loff_t pos, rmw = first || last; doutc(cl, "ino %llx %lld~%llu adjusted %lld~%llu -- %srmw\n", - ci->i_vino.ino, pos, len, write_pos, write_len, + ceph_ino(inode), pos, len, write_pos, write_len, rmw ? "" : "no "); /* @@ -1858,7 +1858,7 @@ ceph_sync_write(struct kiocb *iocb, struct iov_iter *from, loff_t pos, * depending on how the request was aligned. */ req = ceph_osdc_new_request(osdc, &ci->i_layout, - ci->i_vino, first ? first_pos : last_pos, + ceph_vino(inode), first ? first_pos : last_pos, &read_len, 0, (first && last) ? 2 : 1, CEPH_OSD_OP_SPARSE_READ, CEPH_OSD_FLAG_READ, NULL, ci->i_truncate_seq, @@ -2056,7 +2056,7 @@ ceph_sync_write(struct kiocb *iocb, struct iov_iter *from, loff_t pos, } req = ceph_osdc_new_request(osdc, &ci->i_layout, - ci->i_vino, write_pos, &write_len, + ceph_vino(inode), write_pos, &write_len, rmw ? 1 : 0, rmw ? 2 : 1, CEPH_OSD_OP_WRITE, CEPH_OSD_FLAG_WRITE, @@ -2981,12 +2981,12 @@ static ssize_t ceph_do_objects_copy(struct ceph_inode_info *src_ci, u64 *src_off &dst_objoff, &dst_objlen); ceph_oid_init(&src_oid); ceph_oid_printf(&src_oid, "%llx.%08llx", - src_ci->i_vino.ino, src_objnum); + ceph_ino(&src_ci->netfs.inode), src_objnum); ceph_oid_init(&dst_oid); ceph_oid_printf(&dst_oid, "%llx.%08llx", - dst_ci->i_vino.ino, dst_objnum); + ceph_ino(&dst_ci->netfs.inode), dst_objnum); /* Do an object remote copy */ - req = ceph_alloc_copyfrom_request(osdc, src_ci->i_vino.snap, + req = ceph_alloc_copyfrom_request(osdc, ceph_snap(&src_ci->netfs.inode), &src_oid, &src_oloc, &dst_oid, &dst_oloc, dst_ci->i_truncate_seq, diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c index 30f8430b2825..e5fb39913a4b 100644 --- a/fs/ceph/mds_client.c +++ b/fs/ceph/mds_client.c @@ -1989,7 +1989,7 @@ static void remove_session_caps(struct ceph_mds_session *session) if (cap == prev) break; prev = cap; - vino = cap->ci->i_vino; + vino = ceph_vino(&cap->ci->netfs.inode); spin_unlock(&session->s_cap_lock); inode = ceph_find_inode(sb, vino); diff --git a/fs/ceph/quota.c b/fs/ceph/quota.c index 08641d578a0b..02d7a3062f2d 100644 --- a/fs/ceph/quota.c +++ b/fs/ceph/quota.c @@ -31,7 +31,7 @@ static inline bool ceph_has_realms_with_quotas(struct inode *inode) if (root && ceph_ino(root) == CEPH_INO_ROOT) return false; /* MDS stray dirs have no quota realms */ - if (ceph_vino_is_reserved(ceph_inode(inode)->i_vino)) + if (ceph_vino_is_reserved(ceph_vino(inode))) return false; /* otherwise, we can't know for sure */ return true; diff --git a/fs/ceph/snap.c b/fs/ceph/snap.c index 94964e0952bd..f064b5ad3bf4 100644 --- a/fs/ceph/snap.c +++ b/fs/ceph/snap.c @@ -985,7 +985,7 @@ void ceph_change_snap_realm(struct inode *inode, struct ceph_snap_realm *realm) if (oldrealm) { spin_lock(&oldrealm->inodes_with_caps_lock); list_del_init(&ci->i_snap_realm_item); - if (oldrealm->ino == ci->i_vino.ino) + if (oldrealm->ino == ceph_ino(inode)) oldrealm->inode = NULL; spin_unlock(&oldrealm->inodes_with_caps_lock); ceph_put_snap_realm(mdsc, oldrealm); @@ -996,7 +996,7 @@ void ceph_change_snap_realm(struct inode *inode, struct ceph_snap_realm *realm) if (realm) { spin_lock(&realm->inodes_with_caps_lock); list_add(&ci->i_snap_realm_item, &realm->inodes_with_caps); - if (realm->ino == ci->i_vino.ino) + if (realm->ino == ceph_ino(inode)) realm->inode = inode; spin_unlock(&realm->inodes_with_caps_lock); } diff --git a/fs/ceph/super.h b/fs/ceph/super.h index b0b8d04b594f..660125d94f8e 100644 --- a/fs/ceph/super.h +++ b/fs/ceph/super.h @@ -596,7 +596,7 @@ static inline ino_t ceph_vino_to_ino_t(const struct ceph_vino vino) } /* for printf-style formatting */ -#define ceph_vinop(i) ceph_inode(i)->i_vino.ino, ceph_inode(i)->i_vino.snap +#define ceph_vinop(i) ceph_ino(i), ceph_snap(i) static inline u64 ceph_ino(const struct inode *inode) { @@ -641,9 +641,8 @@ static inline u64 ceph_present_inode(struct inode *inode) static inline int ceph_ino_compare(struct inode *inode, void *data) { struct ceph_vino *pvino = (struct ceph_vino *)data; - struct ceph_inode_info *ci = ceph_inode(inode); - return ci->i_vino.ino == pvino->ino && - ci->i_vino.snap == pvino->snap; + return ceph_ino(inode) == pvino->ino && + ceph_snap(inode) == pvino->snap; } /* diff --git a/fs/ceph/xattr.c b/fs/ceph/xattr.c index af54480d9254..b8416afd4901 100644 --- a/fs/ceph/xattr.c +++ b/fs/ceph/xattr.c @@ -272,7 +272,7 @@ static bool ceph_vxattrcb_quota_exists(struct ceph_inode_info *ci) if ((ci->i_max_files || ci->i_max_bytes) && !ceph_in_snap(&ci->netfs.inode) && ci->i_snap_realm && - ci->i_snap_realm->ino == ci->i_vino.ino) + ci->i_snap_realm->ino == ceph_ino(&ci->netfs.inode)) ret = true; spin_unlock(&ci->i_ceph_lock); return ret; @@ -1328,7 +1328,7 @@ int __ceph_setxattr(struct inode *inode, const char *name, spin_lock(&ci->i_ceph_lock); if ((ci->i_max_files || ci->i_max_bytes) && !(ci->i_snap_realm && - ci->i_snap_realm->ino == ci->i_vino.ino)) + ci->i_snap_realm->ino == ceph_ino(&ci->netfs.inode))) err = -EOPNOTSUPP; spin_unlock(&ci->i_ceph_lock); } -- 2.47.3