Lines Matching refs:sg

103 sharefs_remove(sharetab_globals_t *sg, share_t *sh, sharefs_lens_t *shl)  in sharefs_remove()  argument
113 rw_enter(&sg->sharetab_lock, RW_WRITER); in sharefs_remove()
114 for (sht = sg->sharefs_sharetab; sht != NULL; sht = sht->s_next) { in sharefs_remove()
124 rw_exit(&sg->sharetab_lock); in sharefs_remove()
149 atomic_dec_32(&sg->sharetab_count); in sharefs_remove()
151 ASSERT(sg->sharetab_size >= s->sh_size); in sharefs_remove()
152 sg->sharetab_size -= s->sh_size; in sharefs_remove()
154 gethrestime(&sg->sharetab_mtime); in sharefs_remove()
155 atomic_inc_32(&sg->sharetab_generation); in sharefs_remove()
163 rw_exit(&sg->sharetab_lock); in sharefs_remove()
181 sharefs_add(sharetab_globals_t *sg, share_t *sh, sharefs_lens_t *shl) in sharefs_add() argument
193 rw_enter(&sg->sharetab_lock, RW_WRITER); in sharefs_add()
194 for (sht = sg->sharefs_sharetab; sht != NULL; sht = sht->s_next) { in sharefs_add()
206 sht->s_next = sg->sharefs_sharetab; in sharefs_add()
207 sg->sharefs_sharetab = sht; in sharefs_add()
245 ASSERT(sg->sharetab_size >= s->sh_size); in sharefs_add()
246 sg->sharetab_size -= s->sh_size; in sharefs_add()
247 sg->sharetab_size += sh->sh_size; in sharefs_add()
252 gethrestime(&sg->sharetab_mtime); in sharefs_add()
253 atomic_inc_32(&sg->sharetab_generation); in sharefs_add()
256 rw_exit(&sg->sharetab_lock); in sharefs_add()
272 atomic_inc_32(&sg->sharetab_count); in sharefs_add()
273 sg->sharetab_size += sh->sh_size; in sharefs_add()
275 gethrestime(&sg->sharetab_mtime); in sharefs_add()
276 atomic_inc_32(&sg->sharetab_generation); in sharefs_add()
278 rw_exit(&sg->sharetab_lock); in sharefs_add()
287 sharetab_globals_t *sg; in sharetab_zone_init() local
289 sg = kmem_zalloc(sizeof (*sg), KM_SLEEP); in sharetab_zone_init()
291 rw_init(&sg->sharetab_lock, NULL, RW_DEFAULT, NULL); in sharetab_zone_init()
292 rw_init(&sg->sharefs_lock, NULL, RW_DEFAULT, NULL); in sharetab_zone_init()
294 sg->sharetab_size = 0; in sharetab_zone_init()
295 sg->sharetab_count = 0; in sharetab_zone_init()
296 sg->sharetab_generation = 1; in sharetab_zone_init()
298 gethrestime(&sg->sharetab_mtime); in sharetab_zone_init()
299 gethrestime(&sg->sharetab_snap_time); in sharetab_zone_init()
301 return (sg); in sharetab_zone_init()
308 sharetab_globals_t *sg = data; in sharetab_zone_fini() local
310 rw_destroy(&sg->sharefs_lock); in sharetab_zone_fini()
311 rw_destroy(&sg->sharetab_lock); in sharetab_zone_fini()
314 while (sg->sharefs_sharetab != NULL) { in sharetab_zone_fini()
316 sharetab_t *freeing = sg->sharefs_sharetab; in sharetab_zone_fini()
318 sg->sharefs_sharetab = freeing->s_next; in sharetab_zone_fini()
334 kmem_free(sg, sizeof (*sg)); in sharetab_zone_fini()
360 sharetab_globals_t *sg = sharetab_get_globals(curzone); in sharefs_impl() local
370 rw_enter(&sg->sharetab_lock, RW_READER); in sharefs_impl()
374 if (!sg->sharefs_sharetab) { in sharefs_impl()
375 rw_exit(&sg->sharetab_lock); in sharefs_impl()
383 rw_exit(&sg->sharetab_lock); in sharefs_impl()
411 error = sharefs_add(sg, sh, &shl); in sharefs_impl()
414 error = sharefs_remove(sg, sh, &shl); in sharefs_impl()