Lines Matching defs:gl

60  * @gl: The glock to update
62 * This assumes that gl->gl_dstamp has been set earlier.
75 static inline void gfs2_update_reply_times(struct gfs2_glock *gl)
78 const unsigned gltype = gl->gl_name.ln_type;
79 unsigned index = test_bit(GLF_BLOCKING, &gl->gl_flags) ?
84 rtt = ktime_to_ns(ktime_sub(ktime_get_real(), gl->gl_dstamp));
85 lks = this_cpu_ptr(gl->gl_name.ln_sbd->sd_lkstats);
86 gfs2_update_stats(&gl->gl_stats, index, rtt); /* Local */
90 trace_gfs2_glock_lock_time(gl, rtt);
95 * @gl: The glock to update
102 static inline void gfs2_update_request_times(struct gfs2_glock *gl)
105 const unsigned gltype = gl->gl_name.ln_type;
110 dstamp = gl->gl_dstamp;
111 gl->gl_dstamp = ktime_get_real();
112 irt = ktime_to_ns(ktime_sub(gl->gl_dstamp, dstamp));
113 lks = this_cpu_ptr(gl->gl_name.ln_sbd->sd_lkstats);
114 gfs2_update_stats(&gl->gl_stats, GFS2_LKS_SIRT, irt); /* Local */
121 struct gfs2_glock *gl = arg;
122 unsigned ret = gl->gl_state;
124 gfs2_update_reply_times(gl);
125 BUG_ON(gl->gl_lksb.sb_flags & DLM_SBF_DEMOTED);
127 if ((gl->gl_lksb.sb_flags & DLM_SBF_VALNOTVALID) && gl->gl_lksb.sb_lvbptr)
128 memset(gl->gl_lksb.sb_lvbptr, 0, GDLM_LVB_SIZE);
130 switch (gl->gl_lksb.sb_status) {
132 if (gl->gl_ops->go_free)
133 gl->gl_ops->go_free(gl);
134 gfs2_glock_free(gl);
151 ret = gl->gl_req;
152 if (gl->gl_lksb.sb_flags & DLM_SBF_ALTMODE) {
153 if (gl->gl_req == LM_ST_SHARED)
155 else if (gl->gl_req == LM_ST_DEFERRED)
161 set_bit(GLF_INITIAL, &gl->gl_flags);
162 gfs2_glock_complete(gl, ret);
165 if (!test_bit(GLF_INITIAL, &gl->gl_flags))
166 gl->gl_lksb.sb_lkid = 0;
167 gfs2_glock_complete(gl, ret);
172 struct gfs2_glock *gl = arg;
176 gfs2_glock_cb(gl, LM_ST_UNLOCKED);
179 gfs2_glock_cb(gl, LM_ST_DEFERRED);
182 gfs2_glock_cb(gl, LM_ST_SHARED);
185 fs_err(gl->gl_name.ln_sbd, "unknown bast mode %d\n", mode);
209 static u32 make_flags(struct gfs2_glock *gl, const unsigned int gfs_flags,
214 if (gl->gl_lksb.sb_lvbptr)
234 if (gl->gl_lksb.sb_lkid != 0) {
236 if (test_bit(GLF_BLOCKING, &gl->gl_flags))
252 static int gdlm_lock(struct gfs2_glock *gl, unsigned int req_state,
255 struct lm_lockstruct *ls = &gl->gl_name.ln_sbd->sd_lockstruct;
261 req = make_mode(gl->gl_name.ln_sbd, req_state);
262 lkf = make_flags(gl, flags, req);
263 gfs2_glstats_inc(gl, GFS2_LKS_DCOUNT);
264 gfs2_sbstats_inc(gl, GFS2_LKS_DCOUNT);
265 if (gl->gl_lksb.sb_lkid) {
266 gfs2_update_request_times(gl);
270 gfs2_reverse_hex(strname + 7, gl->gl_name.ln_type);
271 gfs2_reverse_hex(strname + 23, gl->gl_name.ln_number);
272 gl->gl_dstamp = ktime_get_real();
279 error = dlm_lock(ls->ls_dlm, req, &gl->gl_lksb, lkf, strname,
280 GDLM_STRNAME_BYTES - 1, 0, gdlm_ast, gl, gdlm_bast);
288 static void gdlm_put_lock(struct gfs2_glock *gl)
290 struct gfs2_sbd *sdp = gl->gl_name.ln_sbd;
294 if (gl->gl_lksb.sb_lkid == 0)
297 clear_bit(GLF_BLOCKING, &gl->gl_flags);
298 gfs2_glstats_inc(gl, GFS2_LKS_DCOUNT);
299 gfs2_sbstats_inc(gl, GFS2_LKS_DCOUNT);
300 gfs2_update_request_times(gl);
308 !gl->gl_lksb.sb_lvbptr)
312 error = dlm_unlock(ls->ls_dlm, gl->gl_lksb.sb_lkid, DLM_LKF_VALBLK,
313 NULL, gl);
321 gl->gl_name.ln_type,
322 (unsigned long long)gl->gl_name.ln_number, error);
327 gfs2_glock_free(gl);
330 static void gdlm_cancel(struct gfs2_glock *gl)
332 struct lm_lockstruct *ls = &gl->gl_name.ln_sbd->sd_lockstruct;
333 dlm_unlock(ls->ls_dlm, gl->gl_lksb.sb_lkid, DLM_LKF_CANCEL, NULL, gl);