aboutsummaryrefslogtreecommitdiffstats
path: root/fs/ceph/xattr.c
diff options
context:
space:
mode:
authorIlya Dryomov <idryomov@gmail.com>2016-04-28 10:07:26 -0400
committerIlya Dryomov <idryomov@gmail.com>2016-05-25 19:14:03 -0400
commit5aea3dcd50215fa9563270251ad7323e2f2490ee (patch)
tree1bcaaf4d5ff7b443c3776af771b228a5fad903b0 /fs/ceph/xattr.c
parent9dd2845ccb40452d4ac943231ea34aade4a02c68 (diff)
libceph: a major OSD client update
This is a major sync up, up to ~Jewel. The highlights are: - per-session request trees (vs a global per-client tree) - per-session locking (vs a global per-client rwlock) - homeless OSD session - no ad-hoc global per-client lists - support for pool quotas - foundation for watch/notify v2 support - foundation for map check (pool deletion detection) support The switchover is incomplete: lingering requests can be setup and teared down but aren't ever reestablished. This functionality is restored with the introduction of the new lingering infrastructure (ceph_osd_linger_request, linger_work, etc) in a later commit. Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Diffstat (limited to 'fs/ceph/xattr.c')
-rw-r--r--fs/ceph/xattr.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/fs/ceph/xattr.c b/fs/ceph/xattr.c
index 9410abdef3ce..5afabc4bf4c7 100644
--- a/fs/ceph/xattr.c
+++ b/fs/ceph/xattr.c
@@ -75,7 +75,7 @@ static size_t ceph_vxattrcb_layout(struct ceph_inode_info *ci, char *val,
75 char buf[128]; 75 char buf[128];
76 76
77 dout("ceph_vxattrcb_layout %p\n", &ci->vfs_inode); 77 dout("ceph_vxattrcb_layout %p\n", &ci->vfs_inode);
78 down_read(&osdc->map_sem); 78 down_read(&osdc->lock);
79 pool_name = ceph_pg_pool_name_by_id(osdc->osdmap, pool); 79 pool_name = ceph_pg_pool_name_by_id(osdc->osdmap, pool);
80 if (pool_name) { 80 if (pool_name) {
81 size_t len = strlen(pool_name); 81 size_t len = strlen(pool_name);
@@ -107,7 +107,7 @@ static size_t ceph_vxattrcb_layout(struct ceph_inode_info *ci, char *val,
107 ret = -ERANGE; 107 ret = -ERANGE;
108 } 108 }
109 } 109 }
110 up_read(&osdc->map_sem); 110 up_read(&osdc->lock);
111 return ret; 111 return ret;
112} 112}
113 113
@@ -141,13 +141,13 @@ static size_t ceph_vxattrcb_layout_pool(struct ceph_inode_info *ci,
141 s64 pool = ceph_file_layout_pg_pool(ci->i_layout); 141 s64 pool = ceph_file_layout_pg_pool(ci->i_layout);
142 const char *pool_name; 142 const char *pool_name;
143 143
144 down_read(&osdc->map_sem); 144 down_read(&osdc->lock);
145 pool_name = ceph_pg_pool_name_by_id(osdc->osdmap, pool); 145 pool_name = ceph_pg_pool_name_by_id(osdc->osdmap, pool);
146 if (pool_name) 146 if (pool_name)
147 ret = snprintf(val, size, "%s", pool_name); 147 ret = snprintf(val, size, "%s", pool_name);
148 else 148 else
149 ret = snprintf(val, size, "%lld", (unsigned long long)pool); 149 ret = snprintf(val, size, "%lld", (unsigned long long)pool);
150 up_read(&osdc->map_sem); 150 up_read(&osdc->lock);
151 return ret; 151 return ret;
152} 152}
153 153