Lines Matching refs:sm

1192 	struct ceph_snapid_map *sm, *exist;  in ceph_get_snapid_map()  local
1219 sm = kmalloc(sizeof(*sm), GFP_NOFS); in ceph_get_snapid_map()
1220 if (!sm) in ceph_get_snapid_map()
1223 ret = get_anon_bdev(&sm->dev); in ceph_get_snapid_map()
1225 kfree(sm); in ceph_get_snapid_map()
1229 INIT_LIST_HEAD(&sm->lru); in ceph_get_snapid_map()
1230 atomic_set(&sm->ref, 1); in ceph_get_snapid_map()
1231 sm->snap = snap; in ceph_get_snapid_map()
1252 rb_link_node(&sm->node, parent, p); in ceph_get_snapid_map()
1253 rb_insert_color(&sm->node, &mdsc->snapid_map_tree); in ceph_get_snapid_map()
1257 free_anon_bdev(sm->dev); in ceph_get_snapid_map()
1258 kfree(sm); in ceph_get_snapid_map()
1264 doutc(cl, "create snapid map %llx -> %x\n", sm->snap, sm->dev); in ceph_get_snapid_map()
1265 return sm; in ceph_get_snapid_map()
1269 struct ceph_snapid_map *sm) in ceph_put_snapid_map() argument
1271 if (!sm) in ceph_put_snapid_map()
1273 if (atomic_dec_and_lock(&sm->ref, &mdsc->snapid_map_lock)) { in ceph_put_snapid_map()
1274 if (!RB_EMPTY_NODE(&sm->node)) { in ceph_put_snapid_map()
1275 sm->last_used = jiffies; in ceph_put_snapid_map()
1276 list_add_tail(&sm->lru, &mdsc->snapid_map_lru); in ceph_put_snapid_map()
1282 kfree(sm); in ceph_put_snapid_map()
1290 struct ceph_snapid_map *sm; in ceph_trim_snapid_map() local
1298 sm = list_first_entry(&mdsc->snapid_map_lru, in ceph_trim_snapid_map()
1300 if (time_after(sm->last_used + CEPH_SNAPID_MAP_TIMEOUT, now)) in ceph_trim_snapid_map()
1303 rb_erase(&sm->node, &mdsc->snapid_map_tree); in ceph_trim_snapid_map()
1304 list_move(&sm->lru, &to_free); in ceph_trim_snapid_map()
1309 sm = list_first_entry(&to_free, struct ceph_snapid_map, lru); in ceph_trim_snapid_map()
1310 list_del(&sm->lru); in ceph_trim_snapid_map()
1311 doutc(cl, "trim snapid map %llx -> %x\n", sm->snap, sm->dev); in ceph_trim_snapid_map()
1312 free_anon_bdev(sm->dev); in ceph_trim_snapid_map()
1313 kfree(sm); in ceph_trim_snapid_map()
1320 struct ceph_snapid_map *sm; in ceph_cleanup_snapid_map() local
1326 sm = rb_entry(p, struct ceph_snapid_map, node); in ceph_cleanup_snapid_map()
1329 list_move(&sm->lru, &to_free); in ceph_cleanup_snapid_map()
1334 sm = list_first_entry(&to_free, struct ceph_snapid_map, lru); in ceph_cleanup_snapid_map()
1335 list_del(&sm->lru); in ceph_cleanup_snapid_map()
1336 free_anon_bdev(sm->dev); in ceph_cleanup_snapid_map()
1337 if (WARN_ON_ONCE(atomic_read(&sm->ref))) { in ceph_cleanup_snapid_map()
1339 sm->snap, sm->dev); in ceph_cleanup_snapid_map()
1341 kfree(sm); in ceph_cleanup_snapid_map()