43 /*
44 * t_lowat - integer percentage of table entries /etc/system only
45 * t_hiwat - integer percentage of table entries /etc/system only
46 * t_lreap - integer percentage of table reap time mdb or /etc/system
47 * t_hreap - integer percentage of table reap time mdb or /etc/system
48 */
49 uint32_t t_lowat = 50; /* reap at t_lreap when id's in use hit 50% */
50 uint32_t t_hiwat = 75; /* reap at t_hreap when id's in use hit 75% */
51 time_t t_lreap = 50; /* default to 50% of table's reap interval */
52 time_t t_hreap = 10; /* default to 10% of table's reap interval */
53
54 id_t
55 rfs4_dbe_getid(rfs4_dbe_t *entry)
56 {
57 return (entry->dbe_id);
58 }
59
60 void
61 rfs4_dbe_hold(rfs4_dbe_t *entry)
62 {
63 atomic_add_32(&entry->dbe_refcnt, 1);
64 }
65
66 /*
67 * rfs4_dbe_rele_nolock only decrements the reference count of the entry.
68 */
69 void
70 rfs4_dbe_rele_nolock(rfs4_dbe_t *entry)
71 {
72 atomic_add_32(&entry->dbe_refcnt, -1);
73 }
74
75
76 uint32_t
77 rfs4_dbe_refcnt(rfs4_dbe_t *entry)
78 {
79 return (entry->dbe_refcnt);
80 }
81
82 /*
83 * Mark an entry such that the dbsearch will skip it.
84 * Caller does not want this entry to be found any longer
85 */
86 void
87 rfs4_dbe_invalidate(rfs4_dbe_t *entry)
88 {
89 entry->dbe_invalid = TRUE;
90 entry->dbe_skipsearch = TRUE;
91 }
92
112 rfs4_dbe_hide(rfs4_dbe_t *entry)
113 {
114 rfs4_dbe_lock(entry);
115 entry->dbe_skipsearch = TRUE;
116 rfs4_dbe_unlock(entry);
117 }
118
119 void
120 rfs4_dbe_unhide(rfs4_dbe_t *entry)
121 {
122 rfs4_dbe_lock(entry);
123 entry->dbe_skipsearch = FALSE;
124 rfs4_dbe_unlock(entry);
125 }
126
127 void
128 rfs4_dbe_rele(rfs4_dbe_t *entry)
129 {
130 mutex_enter(entry->dbe_lock);
131 ASSERT(entry->dbe_refcnt > 1);
132 atomic_add_32(&entry->dbe_refcnt, -1);
133 entry->dbe_time_rele = gethrestime_sec();
134 mutex_exit(entry->dbe_lock);
135 }
136
137 void
138 rfs4_dbe_lock(rfs4_dbe_t *entry)
139 {
140 mutex_enter(entry->dbe_lock);
141 }
142
143 void
144 rfs4_dbe_unlock(rfs4_dbe_t *entry)
145 {
146 mutex_exit(entry->dbe_lock);
147 }
148
149 bool_t
150 rfs4_dbe_islocked(rfs4_dbe_t *entry)
151 {
152 return (mutex_owned(entry->dbe_lock));
|
43 /*
44 * t_lowat - integer percentage of table entries /etc/system only
45 * t_hiwat - integer percentage of table entries /etc/system only
46 * t_lreap - integer percentage of table reap time mdb or /etc/system
47 * t_hreap - integer percentage of table reap time mdb or /etc/system
48 */
49 uint32_t t_lowat = 50; /* reap at t_lreap when id's in use hit 50% */
50 uint32_t t_hiwat = 75; /* reap at t_hreap when id's in use hit 75% */
51 time_t t_lreap = 50; /* default to 50% of table's reap interval */
52 time_t t_hreap = 10; /* default to 10% of table's reap interval */
53
54 id_t
55 rfs4_dbe_getid(rfs4_dbe_t *entry)
56 {
57 return (entry->dbe_id);
58 }
59
60 void
61 rfs4_dbe_hold(rfs4_dbe_t *entry)
62 {
63 atomic_inc_32(&entry->dbe_refcnt);
64 }
65
66 /*
67 * rfs4_dbe_rele_nolock only decrements the reference count of the entry.
68 */
69 void
70 rfs4_dbe_rele_nolock(rfs4_dbe_t *entry)
71 {
72 atomic_dec_32(&entry->dbe_refcnt);
73 }
74
75
76 uint32_t
77 rfs4_dbe_refcnt(rfs4_dbe_t *entry)
78 {
79 return (entry->dbe_refcnt);
80 }
81
82 /*
83 * Mark an entry such that the dbsearch will skip it.
84 * Caller does not want this entry to be found any longer
85 */
86 void
87 rfs4_dbe_invalidate(rfs4_dbe_t *entry)
88 {
89 entry->dbe_invalid = TRUE;
90 entry->dbe_skipsearch = TRUE;
91 }
92
112 rfs4_dbe_hide(rfs4_dbe_t *entry)
113 {
114 rfs4_dbe_lock(entry);
115 entry->dbe_skipsearch = TRUE;
116 rfs4_dbe_unlock(entry);
117 }
118
119 void
120 rfs4_dbe_unhide(rfs4_dbe_t *entry)
121 {
122 rfs4_dbe_lock(entry);
123 entry->dbe_skipsearch = FALSE;
124 rfs4_dbe_unlock(entry);
125 }
126
127 void
128 rfs4_dbe_rele(rfs4_dbe_t *entry)
129 {
130 mutex_enter(entry->dbe_lock);
131 ASSERT(entry->dbe_refcnt > 1);
132 atomic_dec_32(&entry->dbe_refcnt);
133 entry->dbe_time_rele = gethrestime_sec();
134 mutex_exit(entry->dbe_lock);
135 }
136
137 void
138 rfs4_dbe_lock(rfs4_dbe_t *entry)
139 {
140 mutex_enter(entry->dbe_lock);
141 }
142
143 void
144 rfs4_dbe_unlock(rfs4_dbe_t *entry)
145 {
146 mutex_exit(entry->dbe_lock);
147 }
148
149 bool_t
150 rfs4_dbe_islocked(rfs4_dbe_t *entry)
151 {
152 return (mutex_owned(entry->dbe_lock));
|