xref: /openbmc/linux/fs/gfs2/glock.c (revision 4cff79e9)
1 /*
2  * Copyright (C) Sistina Software, Inc.  1997-2003 All rights reserved.
3  * Copyright (C) 2004-2008 Red Hat, Inc.  All rights reserved.
4  *
5  * This copyrighted material is made available to anyone wishing to use,
6  * modify, copy, or redistribute it subject to the terms and conditions
7  * of the GNU General Public License version 2.
8  */
9 
10 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
11 
12 #include <linux/sched.h>
13 #include <linux/slab.h>
14 #include <linux/spinlock.h>
15 #include <linux/buffer_head.h>
16 #include <linux/delay.h>
17 #include <linux/sort.h>
18 #include <linux/hash.h>
19 #include <linux/jhash.h>
20 #include <linux/kallsyms.h>
21 #include <linux/gfs2_ondisk.h>
22 #include <linux/list.h>
23 #include <linux/wait.h>
24 #include <linux/module.h>
25 #include <linux/uaccess.h>
26 #include <linux/seq_file.h>
27 #include <linux/debugfs.h>
28 #include <linux/kthread.h>
29 #include <linux/freezer.h>
30 #include <linux/workqueue.h>
31 #include <linux/jiffies.h>
32 #include <linux/rcupdate.h>
33 #include <linux/rculist_bl.h>
34 #include <linux/bit_spinlock.h>
35 #include <linux/percpu.h>
36 #include <linux/list_sort.h>
37 #include <linux/lockref.h>
38 #include <linux/rhashtable.h>
39 
40 #include "gfs2.h"
41 #include "incore.h"
42 #include "glock.h"
43 #include "glops.h"
44 #include "inode.h"
45 #include "lops.h"
46 #include "meta_io.h"
47 #include "quota.h"
48 #include "super.h"
49 #include "util.h"
50 #include "bmap.h"
51 #define CREATE_TRACE_POINTS
52 #include "trace_gfs2.h"
53 
54 struct gfs2_glock_iter {
55 	struct gfs2_sbd *sdp;		/* incore superblock           */
56 	struct rhashtable_iter hti;	/* rhashtable iterator         */
57 	struct gfs2_glock *gl;		/* current glock struct        */
58 	loff_t last_pos;		/* last position               */
59 };
60 
61 typedef void (*glock_examiner) (struct gfs2_glock * gl);
62 
63 static void do_xmote(struct gfs2_glock *gl, struct gfs2_holder *gh, unsigned int target);
64 
65 static struct dentry *gfs2_root;
66 static struct workqueue_struct *glock_workqueue;
67 struct workqueue_struct *gfs2_delete_workqueue;
68 static LIST_HEAD(lru_list);
69 static atomic_t lru_count = ATOMIC_INIT(0);
70 static DEFINE_SPINLOCK(lru_lock);
71 
72 #define GFS2_GL_HASH_SHIFT      15
73 #define GFS2_GL_HASH_SIZE       BIT(GFS2_GL_HASH_SHIFT)
74 
75 static const struct rhashtable_params ht_parms = {
76 	.nelem_hint = GFS2_GL_HASH_SIZE * 3 / 4,
77 	.key_len = offsetofend(struct lm_lockname, ln_type),
78 	.key_offset = offsetof(struct gfs2_glock, gl_name),
79 	.head_offset = offsetof(struct gfs2_glock, gl_node),
80 };
81 
82 static struct rhashtable gl_hash_table;
83 
84 #define GLOCK_WAIT_TABLE_BITS 12
85 #define GLOCK_WAIT_TABLE_SIZE (1 << GLOCK_WAIT_TABLE_BITS)
86 static wait_queue_head_t glock_wait_table[GLOCK_WAIT_TABLE_SIZE] __cacheline_aligned;
87 
88 struct wait_glock_queue {
89 	struct lm_lockname *name;
90 	wait_queue_entry_t wait;
91 };
92 
93 static int glock_wake_function(wait_queue_entry_t *wait, unsigned int mode,
94 			       int sync, void *key)
95 {
96 	struct wait_glock_queue *wait_glock =
97 		container_of(wait, struct wait_glock_queue, wait);
98 	struct lm_lockname *wait_name = wait_glock->name;
99 	struct lm_lockname *wake_name = key;
100 
101 	if (wake_name->ln_sbd != wait_name->ln_sbd ||
102 	    wake_name->ln_number != wait_name->ln_number ||
103 	    wake_name->ln_type != wait_name->ln_type)
104 		return 0;
105 	return autoremove_wake_function(wait, mode, sync, key);
106 }
107 
108 static wait_queue_head_t *glock_waitqueue(struct lm_lockname *name)
109 {
110 	u32 hash = jhash2((u32 *)name, sizeof(*name) / 4, 0);
111 
112 	return glock_wait_table + hash_32(hash, GLOCK_WAIT_TABLE_BITS);
113 }
114 
115 /**
116  * wake_up_glock  -  Wake up waiters on a glock
117  * @gl: the glock
118  */
119 static void wake_up_glock(struct gfs2_glock *gl)
120 {
121 	wait_queue_head_t *wq = glock_waitqueue(&gl->gl_name);
122 
123 	if (waitqueue_active(wq))
124 		__wake_up(wq, TASK_NORMAL, 1, &gl->gl_name);
125 }
126 
127 static void gfs2_glock_dealloc(struct rcu_head *rcu)
128 {
129 	struct gfs2_glock *gl = container_of(rcu, struct gfs2_glock, gl_rcu);
130 
131 	if (gl->gl_ops->go_flags & GLOF_ASPACE) {
132 		kmem_cache_free(gfs2_glock_aspace_cachep, gl);
133 	} else {
134 		kfree(gl->gl_lksb.sb_lvbptr);
135 		kmem_cache_free(gfs2_glock_cachep, gl);
136 	}
137 }
138 
139 void gfs2_glock_free(struct gfs2_glock *gl)
140 {
141 	struct gfs2_sbd *sdp = gl->gl_name.ln_sbd;
142 
143 	rhashtable_remove_fast(&gl_hash_table, &gl->gl_node, ht_parms);
144 	smp_mb();
145 	wake_up_glock(gl);
146 	call_rcu(&gl->gl_rcu, gfs2_glock_dealloc);
147 	if (atomic_dec_and_test(&sdp->sd_glock_disposal))
148 		wake_up(&sdp->sd_glock_wait);
149 }
150 
151 /**
152  * gfs2_glock_hold() - increment reference count on glock
153  * @gl: The glock to hold
154  *
155  */
156 
157 void gfs2_glock_hold(struct gfs2_glock *gl)
158 {
159 	GLOCK_BUG_ON(gl, __lockref_is_dead(&gl->gl_lockref));
160 	lockref_get(&gl->gl_lockref);
161 }
162 
163 /**
164  * demote_ok - Check to see if it's ok to unlock a glock
165  * @gl: the glock
166  *
167  * Returns: 1 if it's ok
168  */
169 
170 static int demote_ok(const struct gfs2_glock *gl)
171 {
172 	const struct gfs2_glock_operations *glops = gl->gl_ops;
173 
174 	if (gl->gl_state == LM_ST_UNLOCKED)
175 		return 0;
176 	if (!list_empty(&gl->gl_holders))
177 		return 0;
178 	if (glops->go_demote_ok)
179 		return glops->go_demote_ok(gl);
180 	return 1;
181 }
182 
183 
184 void gfs2_glock_add_to_lru(struct gfs2_glock *gl)
185 {
186 	spin_lock(&lru_lock);
187 
188 	if (!list_empty(&gl->gl_lru))
189 		list_del_init(&gl->gl_lru);
190 	else
191 		atomic_inc(&lru_count);
192 
193 	list_add_tail(&gl->gl_lru, &lru_list);
194 	set_bit(GLF_LRU, &gl->gl_flags);
195 	spin_unlock(&lru_lock);
196 }
197 
198 static void gfs2_glock_remove_from_lru(struct gfs2_glock *gl)
199 {
200 	if (!(gl->gl_ops->go_flags & GLOF_LRU))
201 		return;
202 
203 	spin_lock(&lru_lock);
204 	if (!list_empty(&gl->gl_lru)) {
205 		list_del_init(&gl->gl_lru);
206 		atomic_dec(&lru_count);
207 		clear_bit(GLF_LRU, &gl->gl_flags);
208 	}
209 	spin_unlock(&lru_lock);
210 }
211 
212 /*
213  * Enqueue the glock on the work queue.  Passes one glock reference on to the
214  * work queue.
215  */
216 static void __gfs2_glock_queue_work(struct gfs2_glock *gl, unsigned long delay) {
217 	if (!queue_delayed_work(glock_workqueue, &gl->gl_work, delay)) {
218 		/*
219 		 * We are holding the lockref spinlock, and the work was still
220 		 * queued above.  The queued work (glock_work_func) takes that
221 		 * spinlock before dropping its glock reference(s), so it
222 		 * cannot have dropped them in the meantime.
223 		 */
224 		GLOCK_BUG_ON(gl, gl->gl_lockref.count < 2);
225 		gl->gl_lockref.count--;
226 	}
227 }
228 
229 static void gfs2_glock_queue_work(struct gfs2_glock *gl, unsigned long delay) {
230 	spin_lock(&gl->gl_lockref.lock);
231 	__gfs2_glock_queue_work(gl, delay);
232 	spin_unlock(&gl->gl_lockref.lock);
233 }
234 
235 static void __gfs2_glock_put(struct gfs2_glock *gl)
236 {
237 	struct gfs2_sbd *sdp = gl->gl_name.ln_sbd;
238 	struct address_space *mapping = gfs2_glock2aspace(gl);
239 
240 	lockref_mark_dead(&gl->gl_lockref);
241 
242 	gfs2_glock_remove_from_lru(gl);
243 	spin_unlock(&gl->gl_lockref.lock);
244 	GLOCK_BUG_ON(gl, !list_empty(&gl->gl_holders));
245 	GLOCK_BUG_ON(gl, mapping && mapping->nrpages);
246 	trace_gfs2_glock_put(gl);
247 	sdp->sd_lockstruct.ls_ops->lm_put_lock(gl);
248 }
249 
250 /*
251  * Cause the glock to be put in work queue context.
252  */
253 void gfs2_glock_queue_put(struct gfs2_glock *gl)
254 {
255 	gfs2_glock_queue_work(gl, 0);
256 }
257 
258 /**
259  * gfs2_glock_put() - Decrement reference count on glock
260  * @gl: The glock to put
261  *
262  */
263 
264 void gfs2_glock_put(struct gfs2_glock *gl)
265 {
266 	if (lockref_put_or_lock(&gl->gl_lockref))
267 		return;
268 
269 	__gfs2_glock_put(gl);
270 }
271 
272 /**
273  * may_grant - check if its ok to grant a new lock
274  * @gl: The glock
275  * @gh: The lock request which we wish to grant
276  *
277  * Returns: true if its ok to grant the lock
278  */
279 
280 static inline int may_grant(const struct gfs2_glock *gl, const struct gfs2_holder *gh)
281 {
282 	const struct gfs2_holder *gh_head = list_entry(gl->gl_holders.next, const struct gfs2_holder, gh_list);
283 	if ((gh->gh_state == LM_ST_EXCLUSIVE ||
284 	     gh_head->gh_state == LM_ST_EXCLUSIVE) && gh != gh_head)
285 		return 0;
286 	if (gl->gl_state == gh->gh_state)
287 		return 1;
288 	if (gh->gh_flags & GL_EXACT)
289 		return 0;
290 	if (gl->gl_state == LM_ST_EXCLUSIVE) {
291 		if (gh->gh_state == LM_ST_SHARED && gh_head->gh_state == LM_ST_SHARED)
292 			return 1;
293 		if (gh->gh_state == LM_ST_DEFERRED && gh_head->gh_state == LM_ST_DEFERRED)
294 			return 1;
295 	}
296 	if (gl->gl_state != LM_ST_UNLOCKED && (gh->gh_flags & LM_FLAG_ANY))
297 		return 1;
298 	return 0;
299 }
300 
301 static void gfs2_holder_wake(struct gfs2_holder *gh)
302 {
303 	clear_bit(HIF_WAIT, &gh->gh_iflags);
304 	smp_mb__after_atomic();
305 	wake_up_bit(&gh->gh_iflags, HIF_WAIT);
306 }
307 
308 /**
309  * do_error - Something unexpected has happened during a lock request
310  *
311  */
312 
313 static void do_error(struct gfs2_glock *gl, const int ret)
314 {
315 	struct gfs2_holder *gh, *tmp;
316 
317 	list_for_each_entry_safe(gh, tmp, &gl->gl_holders, gh_list) {
318 		if (test_bit(HIF_HOLDER, &gh->gh_iflags))
319 			continue;
320 		if (ret & LM_OUT_ERROR)
321 			gh->gh_error = -EIO;
322 		else if (gh->gh_flags & (LM_FLAG_TRY | LM_FLAG_TRY_1CB))
323 			gh->gh_error = GLR_TRYFAILED;
324 		else
325 			continue;
326 		list_del_init(&gh->gh_list);
327 		trace_gfs2_glock_queue(gh, 0);
328 		gfs2_holder_wake(gh);
329 	}
330 }
331 
332 /**
333  * do_promote - promote as many requests as possible on the current queue
334  * @gl: The glock
335  *
336  * Returns: 1 if there is a blocked holder at the head of the list, or 2
337  *          if a type specific operation is underway.
338  */
339 
340 static int do_promote(struct gfs2_glock *gl)
341 __releases(&gl->gl_lockref.lock)
342 __acquires(&gl->gl_lockref.lock)
343 {
344 	const struct gfs2_glock_operations *glops = gl->gl_ops;
345 	struct gfs2_holder *gh, *tmp;
346 	int ret;
347 
348 restart:
349 	list_for_each_entry_safe(gh, tmp, &gl->gl_holders, gh_list) {
350 		if (test_bit(HIF_HOLDER, &gh->gh_iflags))
351 			continue;
352 		if (may_grant(gl, gh)) {
353 			if (gh->gh_list.prev == &gl->gl_holders &&
354 			    glops->go_lock) {
355 				spin_unlock(&gl->gl_lockref.lock);
356 				/* FIXME: eliminate this eventually */
357 				ret = glops->go_lock(gh);
358 				spin_lock(&gl->gl_lockref.lock);
359 				if (ret) {
360 					if (ret == 1)
361 						return 2;
362 					gh->gh_error = ret;
363 					list_del_init(&gh->gh_list);
364 					trace_gfs2_glock_queue(gh, 0);
365 					gfs2_holder_wake(gh);
366 					goto restart;
367 				}
368 				set_bit(HIF_HOLDER, &gh->gh_iflags);
369 				trace_gfs2_promote(gh, 1);
370 				gfs2_holder_wake(gh);
371 				goto restart;
372 			}
373 			set_bit(HIF_HOLDER, &gh->gh_iflags);
374 			trace_gfs2_promote(gh, 0);
375 			gfs2_holder_wake(gh);
376 			continue;
377 		}
378 		if (gh->gh_list.prev == &gl->gl_holders)
379 			return 1;
380 		do_error(gl, 0);
381 		break;
382 	}
383 	return 0;
384 }
385 
386 /**
387  * find_first_waiter - find the first gh that's waiting for the glock
388  * @gl: the glock
389  */
390 
391 static inline struct gfs2_holder *find_first_waiter(const struct gfs2_glock *gl)
392 {
393 	struct gfs2_holder *gh;
394 
395 	list_for_each_entry(gh, &gl->gl_holders, gh_list) {
396 		if (!test_bit(HIF_HOLDER, &gh->gh_iflags))
397 			return gh;
398 	}
399 	return NULL;
400 }
401 
402 /**
403  * state_change - record that the glock is now in a different state
404  * @gl: the glock
405  * @new_state the new state
406  *
407  */
408 
409 static void state_change(struct gfs2_glock *gl, unsigned int new_state)
410 {
411 	int held1, held2;
412 
413 	held1 = (gl->gl_state != LM_ST_UNLOCKED);
414 	held2 = (new_state != LM_ST_UNLOCKED);
415 
416 	if (held1 != held2) {
417 		GLOCK_BUG_ON(gl, __lockref_is_dead(&gl->gl_lockref));
418 		if (held2)
419 			gl->gl_lockref.count++;
420 		else
421 			gl->gl_lockref.count--;
422 	}
423 	if (held1 && held2 && list_empty(&gl->gl_holders))
424 		clear_bit(GLF_QUEUED, &gl->gl_flags);
425 
426 	if (new_state != gl->gl_target)
427 		/* shorten our minimum hold time */
428 		gl->gl_hold_time = max(gl->gl_hold_time - GL_GLOCK_HOLD_DECR,
429 				       GL_GLOCK_MIN_HOLD);
430 	gl->gl_state = new_state;
431 	gl->gl_tchange = jiffies;
432 }
433 
434 static void gfs2_demote_wake(struct gfs2_glock *gl)
435 {
436 	gl->gl_demote_state = LM_ST_EXCLUSIVE;
437 	clear_bit(GLF_DEMOTE, &gl->gl_flags);
438 	smp_mb__after_atomic();
439 	wake_up_bit(&gl->gl_flags, GLF_DEMOTE);
440 }
441 
442 /**
443  * finish_xmote - The DLM has replied to one of our lock requests
444  * @gl: The glock
445  * @ret: The status from the DLM
446  *
447  */
448 
449 static void finish_xmote(struct gfs2_glock *gl, unsigned int ret)
450 {
451 	const struct gfs2_glock_operations *glops = gl->gl_ops;
452 	struct gfs2_holder *gh;
453 	unsigned state = ret & LM_OUT_ST_MASK;
454 	int rv;
455 
456 	spin_lock(&gl->gl_lockref.lock);
457 	trace_gfs2_glock_state_change(gl, state);
458 	state_change(gl, state);
459 	gh = find_first_waiter(gl);
460 
461 	/* Demote to UN request arrived during demote to SH or DF */
462 	if (test_bit(GLF_DEMOTE_IN_PROGRESS, &gl->gl_flags) &&
463 	    state != LM_ST_UNLOCKED && gl->gl_demote_state == LM_ST_UNLOCKED)
464 		gl->gl_target = LM_ST_UNLOCKED;
465 
466 	/* Check for state != intended state */
467 	if (unlikely(state != gl->gl_target)) {
468 		if (gh && !test_bit(GLF_DEMOTE_IN_PROGRESS, &gl->gl_flags)) {
469 			/* move to back of queue and try next entry */
470 			if (ret & LM_OUT_CANCELED) {
471 				if ((gh->gh_flags & LM_FLAG_PRIORITY) == 0)
472 					list_move_tail(&gh->gh_list, &gl->gl_holders);
473 				gh = find_first_waiter(gl);
474 				gl->gl_target = gh->gh_state;
475 				goto retry;
476 			}
477 			/* Some error or failed "try lock" - report it */
478 			if ((ret & LM_OUT_ERROR) ||
479 			    (gh->gh_flags & (LM_FLAG_TRY | LM_FLAG_TRY_1CB))) {
480 				gl->gl_target = gl->gl_state;
481 				do_error(gl, ret);
482 				goto out;
483 			}
484 		}
485 		switch(state) {
486 		/* Unlocked due to conversion deadlock, try again */
487 		case LM_ST_UNLOCKED:
488 retry:
489 			do_xmote(gl, gh, gl->gl_target);
490 			break;
491 		/* Conversion fails, unlock and try again */
492 		case LM_ST_SHARED:
493 		case LM_ST_DEFERRED:
494 			do_xmote(gl, gh, LM_ST_UNLOCKED);
495 			break;
496 		default: /* Everything else */
497 			pr_err("wanted %u got %u\n", gl->gl_target, state);
498 			GLOCK_BUG_ON(gl, 1);
499 		}
500 		spin_unlock(&gl->gl_lockref.lock);
501 		return;
502 	}
503 
504 	/* Fast path - we got what we asked for */
505 	if (test_and_clear_bit(GLF_DEMOTE_IN_PROGRESS, &gl->gl_flags))
506 		gfs2_demote_wake(gl);
507 	if (state != LM_ST_UNLOCKED) {
508 		if (glops->go_xmote_bh) {
509 			spin_unlock(&gl->gl_lockref.lock);
510 			rv = glops->go_xmote_bh(gl, gh);
511 			spin_lock(&gl->gl_lockref.lock);
512 			if (rv) {
513 				do_error(gl, rv);
514 				goto out;
515 			}
516 		}
517 		rv = do_promote(gl);
518 		if (rv == 2)
519 			goto out_locked;
520 	}
521 out:
522 	clear_bit(GLF_LOCK, &gl->gl_flags);
523 out_locked:
524 	spin_unlock(&gl->gl_lockref.lock);
525 }
526 
527 /**
528  * do_xmote - Calls the DLM to change the state of a lock
529  * @gl: The lock state
530  * @gh: The holder (only for promotes)
531  * @target: The target lock state
532  *
533  */
534 
535 static void do_xmote(struct gfs2_glock *gl, struct gfs2_holder *gh, unsigned int target)
536 __releases(&gl->gl_lockref.lock)
537 __acquires(&gl->gl_lockref.lock)
538 {
539 	const struct gfs2_glock_operations *glops = gl->gl_ops;
540 	struct gfs2_sbd *sdp = gl->gl_name.ln_sbd;
541 	unsigned int lck_flags = (unsigned int)(gh ? gh->gh_flags : 0);
542 	int ret;
543 
544 	if (unlikely(test_bit(SDF_SHUTDOWN, &sdp->sd_flags)) &&
545 	    target != LM_ST_UNLOCKED)
546 		return;
547 	lck_flags &= (LM_FLAG_TRY | LM_FLAG_TRY_1CB | LM_FLAG_NOEXP |
548 		      LM_FLAG_PRIORITY);
549 	GLOCK_BUG_ON(gl, gl->gl_state == target);
550 	GLOCK_BUG_ON(gl, gl->gl_state == gl->gl_target);
551 	if ((target == LM_ST_UNLOCKED || target == LM_ST_DEFERRED) &&
552 	    glops->go_inval) {
553 		set_bit(GLF_INVALIDATE_IN_PROGRESS, &gl->gl_flags);
554 		do_error(gl, 0); /* Fail queued try locks */
555 	}
556 	gl->gl_req = target;
557 	set_bit(GLF_BLOCKING, &gl->gl_flags);
558 	if ((gl->gl_req == LM_ST_UNLOCKED) ||
559 	    (gl->gl_state == LM_ST_EXCLUSIVE) ||
560 	    (lck_flags & (LM_FLAG_TRY|LM_FLAG_TRY_1CB)))
561 		clear_bit(GLF_BLOCKING, &gl->gl_flags);
562 	spin_unlock(&gl->gl_lockref.lock);
563 	if (glops->go_sync)
564 		glops->go_sync(gl);
565 	if (test_bit(GLF_INVALIDATE_IN_PROGRESS, &gl->gl_flags))
566 		glops->go_inval(gl, target == LM_ST_DEFERRED ? 0 : DIO_METADATA);
567 	clear_bit(GLF_INVALIDATE_IN_PROGRESS, &gl->gl_flags);
568 
569 	gfs2_glock_hold(gl);
570 	if (sdp->sd_lockstruct.ls_ops->lm_lock)	{
571 		/* lock_dlm */
572 		ret = sdp->sd_lockstruct.ls_ops->lm_lock(gl, target, lck_flags);
573 		if (ret == -EINVAL && gl->gl_target == LM_ST_UNLOCKED &&
574 		    target == LM_ST_UNLOCKED &&
575 		    test_bit(SDF_SKIP_DLM_UNLOCK, &sdp->sd_flags)) {
576 			finish_xmote(gl, target);
577 			gfs2_glock_queue_work(gl, 0);
578 		}
579 		else if (ret) {
580 			pr_err("lm_lock ret %d\n", ret);
581 			GLOCK_BUG_ON(gl, !test_bit(SDF_SHUTDOWN,
582 						   &sdp->sd_flags));
583 		}
584 	} else { /* lock_nolock */
585 		finish_xmote(gl, target);
586 		gfs2_glock_queue_work(gl, 0);
587 	}
588 
589 	spin_lock(&gl->gl_lockref.lock);
590 }
591 
592 /**
593  * find_first_holder - find the first "holder" gh
594  * @gl: the glock
595  */
596 
597 static inline struct gfs2_holder *find_first_holder(const struct gfs2_glock *gl)
598 {
599 	struct gfs2_holder *gh;
600 
601 	if (!list_empty(&gl->gl_holders)) {
602 		gh = list_entry(gl->gl_holders.next, struct gfs2_holder, gh_list);
603 		if (test_bit(HIF_HOLDER, &gh->gh_iflags))
604 			return gh;
605 	}
606 	return NULL;
607 }
608 
609 /**
610  * run_queue - do all outstanding tasks related to a glock
611  * @gl: The glock in question
612  * @nonblock: True if we must not block in run_queue
613  *
614  */
615 
616 static void run_queue(struct gfs2_glock *gl, const int nonblock)
617 __releases(&gl->gl_lockref.lock)
618 __acquires(&gl->gl_lockref.lock)
619 {
620 	struct gfs2_holder *gh = NULL;
621 	int ret;
622 
623 	if (test_and_set_bit(GLF_LOCK, &gl->gl_flags))
624 		return;
625 
626 	GLOCK_BUG_ON(gl, test_bit(GLF_DEMOTE_IN_PROGRESS, &gl->gl_flags));
627 
628 	if (test_bit(GLF_DEMOTE, &gl->gl_flags) &&
629 	    gl->gl_demote_state != gl->gl_state) {
630 		if (find_first_holder(gl))
631 			goto out_unlock;
632 		if (nonblock)
633 			goto out_sched;
634 		set_bit(GLF_DEMOTE_IN_PROGRESS, &gl->gl_flags);
635 		GLOCK_BUG_ON(gl, gl->gl_demote_state == LM_ST_EXCLUSIVE);
636 		gl->gl_target = gl->gl_demote_state;
637 	} else {
638 		if (test_bit(GLF_DEMOTE, &gl->gl_flags))
639 			gfs2_demote_wake(gl);
640 		ret = do_promote(gl);
641 		if (ret == 0)
642 			goto out_unlock;
643 		if (ret == 2)
644 			goto out;
645 		gh = find_first_waiter(gl);
646 		gl->gl_target = gh->gh_state;
647 		if (!(gh->gh_flags & (LM_FLAG_TRY | LM_FLAG_TRY_1CB)))
648 			do_error(gl, 0); /* Fail queued try locks */
649 	}
650 	do_xmote(gl, gh, gl->gl_target);
651 out:
652 	return;
653 
654 out_sched:
655 	clear_bit(GLF_LOCK, &gl->gl_flags);
656 	smp_mb__after_atomic();
657 	gl->gl_lockref.count++;
658 	__gfs2_glock_queue_work(gl, 0);
659 	return;
660 
661 out_unlock:
662 	clear_bit(GLF_LOCK, &gl->gl_flags);
663 	smp_mb__after_atomic();
664 	return;
665 }
666 
667 static void delete_work_func(struct work_struct *work)
668 {
669 	struct gfs2_glock *gl = container_of(work, struct gfs2_glock, gl_delete);
670 	struct gfs2_sbd *sdp = gl->gl_name.ln_sbd;
671 	struct inode *inode;
672 	u64 no_addr = gl->gl_name.ln_number;
673 
674 	/* If someone's using this glock to create a new dinode, the block must
675 	   have been freed by another node, then re-used, in which case our
676 	   iopen callback is too late after the fact. Ignore it. */
677 	if (test_bit(GLF_INODE_CREATING, &gl->gl_flags))
678 		goto out;
679 
680 	inode = gfs2_lookup_by_inum(sdp, no_addr, NULL, GFS2_BLKST_UNLINKED);
681 	if (inode && !IS_ERR(inode)) {
682 		d_prune_aliases(inode);
683 		iput(inode);
684 	}
685 out:
686 	gfs2_glock_put(gl);
687 }
688 
689 static void glock_work_func(struct work_struct *work)
690 {
691 	unsigned long delay = 0;
692 	struct gfs2_glock *gl = container_of(work, struct gfs2_glock, gl_work.work);
693 	unsigned int drop_refs = 1;
694 
695 	if (test_and_clear_bit(GLF_REPLY_PENDING, &gl->gl_flags)) {
696 		finish_xmote(gl, gl->gl_reply);
697 		drop_refs++;
698 	}
699 	spin_lock(&gl->gl_lockref.lock);
700 	if (test_bit(GLF_PENDING_DEMOTE, &gl->gl_flags) &&
701 	    gl->gl_state != LM_ST_UNLOCKED &&
702 	    gl->gl_demote_state != LM_ST_EXCLUSIVE) {
703 		unsigned long holdtime, now = jiffies;
704 
705 		holdtime = gl->gl_tchange + gl->gl_hold_time;
706 		if (time_before(now, holdtime))
707 			delay = holdtime - now;
708 
709 		if (!delay) {
710 			clear_bit(GLF_PENDING_DEMOTE, &gl->gl_flags);
711 			set_bit(GLF_DEMOTE, &gl->gl_flags);
712 		}
713 	}
714 	run_queue(gl, 0);
715 	if (delay) {
716 		/* Keep one glock reference for the work we requeue. */
717 		drop_refs--;
718 		if (gl->gl_name.ln_type != LM_TYPE_INODE)
719 			delay = 0;
720 		__gfs2_glock_queue_work(gl, delay);
721 	}
722 
723 	/*
724 	 * Drop the remaining glock references manually here. (Mind that
725 	 * __gfs2_glock_queue_work depends on the lockref spinlock begin held
726 	 * here as well.)
727 	 */
728 	gl->gl_lockref.count -= drop_refs;
729 	if (!gl->gl_lockref.count) {
730 		__gfs2_glock_put(gl);
731 		return;
732 	}
733 	spin_unlock(&gl->gl_lockref.lock);
734 }
735 
736 static struct gfs2_glock *find_insert_glock(struct lm_lockname *name,
737 					    struct gfs2_glock *new)
738 {
739 	struct wait_glock_queue wait;
740 	wait_queue_head_t *wq = glock_waitqueue(name);
741 	struct gfs2_glock *gl;
742 
743 	wait.name = name;
744 	init_wait(&wait.wait);
745 	wait.wait.func = glock_wake_function;
746 
747 again:
748 	prepare_to_wait(wq, &wait.wait, TASK_UNINTERRUPTIBLE);
749 	rcu_read_lock();
750 	if (new) {
751 		gl = rhashtable_lookup_get_insert_fast(&gl_hash_table,
752 			&new->gl_node, ht_parms);
753 		if (IS_ERR(gl))
754 			goto out;
755 	} else {
756 		gl = rhashtable_lookup_fast(&gl_hash_table,
757 			name, ht_parms);
758 	}
759 	if (gl && !lockref_get_not_dead(&gl->gl_lockref)) {
760 		rcu_read_unlock();
761 		schedule();
762 		goto again;
763 	}
764 out:
765 	rcu_read_unlock();
766 	finish_wait(wq, &wait.wait);
767 	return gl;
768 }
769 
770 /**
771  * gfs2_glock_get() - Get a glock, or create one if one doesn't exist
772  * @sdp: The GFS2 superblock
773  * @number: the lock number
774  * @glops: The glock_operations to use
775  * @create: If 0, don't create the glock if it doesn't exist
776  * @glp: the glock is returned here
777  *
778  * This does not lock a glock, just finds/creates structures for one.
779  *
780  * Returns: errno
781  */
782 
783 int gfs2_glock_get(struct gfs2_sbd *sdp, u64 number,
784 		   const struct gfs2_glock_operations *glops, int create,
785 		   struct gfs2_glock **glp)
786 {
787 	struct super_block *s = sdp->sd_vfs;
788 	struct lm_lockname name = { .ln_number = number,
789 				    .ln_type = glops->go_type,
790 				    .ln_sbd = sdp };
791 	struct gfs2_glock *gl, *tmp;
792 	struct address_space *mapping;
793 	struct kmem_cache *cachep;
794 	int ret = 0;
795 
796 	gl = find_insert_glock(&name, NULL);
797 	if (gl) {
798 		*glp = gl;
799 		return 0;
800 	}
801 	if (!create)
802 		return -ENOENT;
803 
804 	if (glops->go_flags & GLOF_ASPACE)
805 		cachep = gfs2_glock_aspace_cachep;
806 	else
807 		cachep = gfs2_glock_cachep;
808 	gl = kmem_cache_alloc(cachep, GFP_NOFS);
809 	if (!gl)
810 		return -ENOMEM;
811 
812 	memset(&gl->gl_lksb, 0, sizeof(struct dlm_lksb));
813 
814 	if (glops->go_flags & GLOF_LVB) {
815 		gl->gl_lksb.sb_lvbptr = kzalloc(GFS2_MIN_LVB_SIZE, GFP_NOFS);
816 		if (!gl->gl_lksb.sb_lvbptr) {
817 			kmem_cache_free(cachep, gl);
818 			return -ENOMEM;
819 		}
820 	}
821 
822 	atomic_inc(&sdp->sd_glock_disposal);
823 	gl->gl_node.next = NULL;
824 	gl->gl_flags = 0;
825 	gl->gl_name = name;
826 	gl->gl_lockref.count = 1;
827 	gl->gl_state = LM_ST_UNLOCKED;
828 	gl->gl_target = LM_ST_UNLOCKED;
829 	gl->gl_demote_state = LM_ST_EXCLUSIVE;
830 	gl->gl_ops = glops;
831 	gl->gl_dstamp = 0;
832 	preempt_disable();
833 	/* We use the global stats to estimate the initial per-glock stats */
834 	gl->gl_stats = this_cpu_ptr(sdp->sd_lkstats)->lkstats[glops->go_type];
835 	preempt_enable();
836 	gl->gl_stats.stats[GFS2_LKS_DCOUNT] = 0;
837 	gl->gl_stats.stats[GFS2_LKS_QCOUNT] = 0;
838 	gl->gl_tchange = jiffies;
839 	gl->gl_object = NULL;
840 	gl->gl_hold_time = GL_GLOCK_DFT_HOLD;
841 	INIT_DELAYED_WORK(&gl->gl_work, glock_work_func);
842 	INIT_WORK(&gl->gl_delete, delete_work_func);
843 
844 	mapping = gfs2_glock2aspace(gl);
845 	if (mapping) {
846                 mapping->a_ops = &gfs2_meta_aops;
847 		mapping->host = s->s_bdev->bd_inode;
848 		mapping->flags = 0;
849 		mapping_set_gfp_mask(mapping, GFP_NOFS);
850 		mapping->private_data = NULL;
851 		mapping->writeback_index = 0;
852 	}
853 
854 	tmp = find_insert_glock(&name, gl);
855 	if (!tmp) {
856 		*glp = gl;
857 		goto out;
858 	}
859 	if (IS_ERR(tmp)) {
860 		ret = PTR_ERR(tmp);
861 		goto out_free;
862 	}
863 	*glp = tmp;
864 
865 out_free:
866 	kfree(gl->gl_lksb.sb_lvbptr);
867 	kmem_cache_free(cachep, gl);
868 	atomic_dec(&sdp->sd_glock_disposal);
869 
870 out:
871 	return ret;
872 }
873 
874 /**
875  * gfs2_holder_init - initialize a struct gfs2_holder in the default way
876  * @gl: the glock
877  * @state: the state we're requesting
878  * @flags: the modifier flags
879  * @gh: the holder structure
880  *
881  */
882 
883 void gfs2_holder_init(struct gfs2_glock *gl, unsigned int state, u16 flags,
884 		      struct gfs2_holder *gh)
885 {
886 	INIT_LIST_HEAD(&gh->gh_list);
887 	gh->gh_gl = gl;
888 	gh->gh_ip = _RET_IP_;
889 	gh->gh_owner_pid = get_pid(task_pid(current));
890 	gh->gh_state = state;
891 	gh->gh_flags = flags;
892 	gh->gh_error = 0;
893 	gh->gh_iflags = 0;
894 	gfs2_glock_hold(gl);
895 }
896 
897 /**
898  * gfs2_holder_reinit - reinitialize a struct gfs2_holder so we can requeue it
899  * @state: the state we're requesting
900  * @flags: the modifier flags
901  * @gh: the holder structure
902  *
903  * Don't mess with the glock.
904  *
905  */
906 
907 void gfs2_holder_reinit(unsigned int state, u16 flags, struct gfs2_holder *gh)
908 {
909 	gh->gh_state = state;
910 	gh->gh_flags = flags;
911 	gh->gh_iflags = 0;
912 	gh->gh_ip = _RET_IP_;
913 	put_pid(gh->gh_owner_pid);
914 	gh->gh_owner_pid = get_pid(task_pid(current));
915 }
916 
917 /**
918  * gfs2_holder_uninit - uninitialize a holder structure (drop glock reference)
919  * @gh: the holder structure
920  *
921  */
922 
923 void gfs2_holder_uninit(struct gfs2_holder *gh)
924 {
925 	put_pid(gh->gh_owner_pid);
926 	gfs2_glock_put(gh->gh_gl);
927 	gfs2_holder_mark_uninitialized(gh);
928 	gh->gh_ip = 0;
929 }
930 
931 /**
932  * gfs2_glock_wait - wait on a glock acquisition
933  * @gh: the glock holder
934  *
935  * Returns: 0 on success
936  */
937 
938 int gfs2_glock_wait(struct gfs2_holder *gh)
939 {
940 	unsigned long time1 = jiffies;
941 
942 	might_sleep();
943 	wait_on_bit(&gh->gh_iflags, HIF_WAIT, TASK_UNINTERRUPTIBLE);
944 	if (time_after(jiffies, time1 + HZ)) /* have we waited > a second? */
945 		/* Lengthen the minimum hold time. */
946 		gh->gh_gl->gl_hold_time = min(gh->gh_gl->gl_hold_time +
947 					      GL_GLOCK_HOLD_INCR,
948 					      GL_GLOCK_MAX_HOLD);
949 	return gh->gh_error;
950 }
951 
952 /**
953  * handle_callback - process a demote request
954  * @gl: the glock
955  * @state: the state the caller wants us to change to
956  *
957  * There are only two requests that we are going to see in actual
958  * practise: LM_ST_SHARED and LM_ST_UNLOCKED
959  */
960 
961 static void handle_callback(struct gfs2_glock *gl, unsigned int state,
962 			    unsigned long delay, bool remote)
963 {
964 	int bit = delay ? GLF_PENDING_DEMOTE : GLF_DEMOTE;
965 
966 	set_bit(bit, &gl->gl_flags);
967 	if (gl->gl_demote_state == LM_ST_EXCLUSIVE) {
968 		gl->gl_demote_state = state;
969 		gl->gl_demote_time = jiffies;
970 	} else if (gl->gl_demote_state != LM_ST_UNLOCKED &&
971 			gl->gl_demote_state != state) {
972 		gl->gl_demote_state = LM_ST_UNLOCKED;
973 	}
974 	if (gl->gl_ops->go_callback)
975 		gl->gl_ops->go_callback(gl, remote);
976 	trace_gfs2_demote_rq(gl, remote);
977 }
978 
979 void gfs2_print_dbg(struct seq_file *seq, const char *fmt, ...)
980 {
981 	struct va_format vaf;
982 	va_list args;
983 
984 	va_start(args, fmt);
985 
986 	if (seq) {
987 		seq_vprintf(seq, fmt, args);
988 	} else {
989 		vaf.fmt = fmt;
990 		vaf.va = &args;
991 
992 		pr_err("%pV", &vaf);
993 	}
994 
995 	va_end(args);
996 }
997 
998 /**
999  * add_to_queue - Add a holder to the wait queue (but look for recursion)
1000  * @gh: the holder structure to add
1001  *
1002  * Eventually we should move the recursive locking trap to a
1003  * debugging option or something like that. This is the fast
1004  * path and needs to have the minimum number of distractions.
1005  *
1006  */
1007 
1008 static inline void add_to_queue(struct gfs2_holder *gh)
1009 __releases(&gl->gl_lockref.lock)
1010 __acquires(&gl->gl_lockref.lock)
1011 {
1012 	struct gfs2_glock *gl = gh->gh_gl;
1013 	struct gfs2_sbd *sdp = gl->gl_name.ln_sbd;
1014 	struct list_head *insert_pt = NULL;
1015 	struct gfs2_holder *gh2;
1016 	int try_futile = 0;
1017 
1018 	BUG_ON(gh->gh_owner_pid == NULL);
1019 	if (test_and_set_bit(HIF_WAIT, &gh->gh_iflags))
1020 		BUG();
1021 
1022 	if (gh->gh_flags & (LM_FLAG_TRY | LM_FLAG_TRY_1CB)) {
1023 		if (test_bit(GLF_LOCK, &gl->gl_flags))
1024 			try_futile = !may_grant(gl, gh);
1025 		if (test_bit(GLF_INVALIDATE_IN_PROGRESS, &gl->gl_flags))
1026 			goto fail;
1027 	}
1028 
1029 	list_for_each_entry(gh2, &gl->gl_holders, gh_list) {
1030 		if (unlikely(gh2->gh_owner_pid == gh->gh_owner_pid &&
1031 		    (gh->gh_gl->gl_ops->go_type != LM_TYPE_FLOCK)))
1032 			goto trap_recursive;
1033 		if (try_futile &&
1034 		    !(gh2->gh_flags & (LM_FLAG_TRY | LM_FLAG_TRY_1CB))) {
1035 fail:
1036 			gh->gh_error = GLR_TRYFAILED;
1037 			gfs2_holder_wake(gh);
1038 			return;
1039 		}
1040 		if (test_bit(HIF_HOLDER, &gh2->gh_iflags))
1041 			continue;
1042 		if (unlikely((gh->gh_flags & LM_FLAG_PRIORITY) && !insert_pt))
1043 			insert_pt = &gh2->gh_list;
1044 	}
1045 	set_bit(GLF_QUEUED, &gl->gl_flags);
1046 	trace_gfs2_glock_queue(gh, 1);
1047 	gfs2_glstats_inc(gl, GFS2_LKS_QCOUNT);
1048 	gfs2_sbstats_inc(gl, GFS2_LKS_QCOUNT);
1049 	if (likely(insert_pt == NULL)) {
1050 		list_add_tail(&gh->gh_list, &gl->gl_holders);
1051 		if (unlikely(gh->gh_flags & LM_FLAG_PRIORITY))
1052 			goto do_cancel;
1053 		return;
1054 	}
1055 	list_add_tail(&gh->gh_list, insert_pt);
1056 do_cancel:
1057 	gh = list_entry(gl->gl_holders.next, struct gfs2_holder, gh_list);
1058 	if (!(gh->gh_flags & LM_FLAG_PRIORITY)) {
1059 		spin_unlock(&gl->gl_lockref.lock);
1060 		if (sdp->sd_lockstruct.ls_ops->lm_cancel)
1061 			sdp->sd_lockstruct.ls_ops->lm_cancel(gl);
1062 		spin_lock(&gl->gl_lockref.lock);
1063 	}
1064 	return;
1065 
1066 trap_recursive:
1067 	pr_err("original: %pSR\n", (void *)gh2->gh_ip);
1068 	pr_err("pid: %d\n", pid_nr(gh2->gh_owner_pid));
1069 	pr_err("lock type: %d req lock state : %d\n",
1070 	       gh2->gh_gl->gl_name.ln_type, gh2->gh_state);
1071 	pr_err("new: %pSR\n", (void *)gh->gh_ip);
1072 	pr_err("pid: %d\n", pid_nr(gh->gh_owner_pid));
1073 	pr_err("lock type: %d req lock state : %d\n",
1074 	       gh->gh_gl->gl_name.ln_type, gh->gh_state);
1075 	gfs2_dump_glock(NULL, gl);
1076 	BUG();
1077 }
1078 
1079 /**
1080  * gfs2_glock_nq - enqueue a struct gfs2_holder onto a glock (acquire a glock)
1081  * @gh: the holder structure
1082  *
1083  * if (gh->gh_flags & GL_ASYNC), this never returns an error
1084  *
1085  * Returns: 0, GLR_TRYFAILED, or errno on failure
1086  */
1087 
1088 int gfs2_glock_nq(struct gfs2_holder *gh)
1089 {
1090 	struct gfs2_glock *gl = gh->gh_gl;
1091 	struct gfs2_sbd *sdp = gl->gl_name.ln_sbd;
1092 	int error = 0;
1093 
1094 	if (unlikely(test_bit(SDF_SHUTDOWN, &sdp->sd_flags)))
1095 		return -EIO;
1096 
1097 	if (test_bit(GLF_LRU, &gl->gl_flags))
1098 		gfs2_glock_remove_from_lru(gl);
1099 
1100 	spin_lock(&gl->gl_lockref.lock);
1101 	add_to_queue(gh);
1102 	if (unlikely((LM_FLAG_NOEXP & gh->gh_flags) &&
1103 		     test_and_clear_bit(GLF_FROZEN, &gl->gl_flags))) {
1104 		set_bit(GLF_REPLY_PENDING, &gl->gl_flags);
1105 		gl->gl_lockref.count++;
1106 		__gfs2_glock_queue_work(gl, 0);
1107 	}
1108 	run_queue(gl, 1);
1109 	spin_unlock(&gl->gl_lockref.lock);
1110 
1111 	if (!(gh->gh_flags & GL_ASYNC))
1112 		error = gfs2_glock_wait(gh);
1113 
1114 	return error;
1115 }
1116 
1117 /**
1118  * gfs2_glock_poll - poll to see if an async request has been completed
1119  * @gh: the holder
1120  *
1121  * Returns: 1 if the request is ready to be gfs2_glock_wait()ed on
1122  */
1123 
1124 int gfs2_glock_poll(struct gfs2_holder *gh)
1125 {
1126 	return test_bit(HIF_WAIT, &gh->gh_iflags) ? 0 : 1;
1127 }
1128 
1129 /**
1130  * gfs2_glock_dq - dequeue a struct gfs2_holder from a glock (release a glock)
1131  * @gh: the glock holder
1132  *
1133  */
1134 
1135 void gfs2_glock_dq(struct gfs2_holder *gh)
1136 {
1137 	struct gfs2_glock *gl = gh->gh_gl;
1138 	const struct gfs2_glock_operations *glops = gl->gl_ops;
1139 	unsigned delay = 0;
1140 	int fast_path = 0;
1141 
1142 	spin_lock(&gl->gl_lockref.lock);
1143 	if (gh->gh_flags & GL_NOCACHE)
1144 		handle_callback(gl, LM_ST_UNLOCKED, 0, false);
1145 
1146 	list_del_init(&gh->gh_list);
1147 	clear_bit(HIF_HOLDER, &gh->gh_iflags);
1148 	if (find_first_holder(gl) == NULL) {
1149 		if (glops->go_unlock) {
1150 			GLOCK_BUG_ON(gl, test_and_set_bit(GLF_LOCK, &gl->gl_flags));
1151 			spin_unlock(&gl->gl_lockref.lock);
1152 			glops->go_unlock(gh);
1153 			spin_lock(&gl->gl_lockref.lock);
1154 			clear_bit(GLF_LOCK, &gl->gl_flags);
1155 		}
1156 		if (list_empty(&gl->gl_holders) &&
1157 		    !test_bit(GLF_PENDING_DEMOTE, &gl->gl_flags) &&
1158 		    !test_bit(GLF_DEMOTE, &gl->gl_flags))
1159 			fast_path = 1;
1160 	}
1161 	if (!test_bit(GLF_LFLUSH, &gl->gl_flags) && demote_ok(gl) &&
1162 	    (glops->go_flags & GLOF_LRU))
1163 		gfs2_glock_add_to_lru(gl);
1164 
1165 	trace_gfs2_glock_queue(gh, 0);
1166 	if (unlikely(!fast_path)) {
1167 		gl->gl_lockref.count++;
1168 		if (test_bit(GLF_PENDING_DEMOTE, &gl->gl_flags) &&
1169 		    !test_bit(GLF_DEMOTE, &gl->gl_flags) &&
1170 		    gl->gl_name.ln_type == LM_TYPE_INODE)
1171 			delay = gl->gl_hold_time;
1172 		__gfs2_glock_queue_work(gl, delay);
1173 	}
1174 	spin_unlock(&gl->gl_lockref.lock);
1175 }
1176 
1177 void gfs2_glock_dq_wait(struct gfs2_holder *gh)
1178 {
1179 	struct gfs2_glock *gl = gh->gh_gl;
1180 	gfs2_glock_dq(gh);
1181 	might_sleep();
1182 	wait_on_bit(&gl->gl_flags, GLF_DEMOTE, TASK_UNINTERRUPTIBLE);
1183 }
1184 
1185 /**
1186  * gfs2_glock_dq_uninit - dequeue a holder from a glock and initialize it
1187  * @gh: the holder structure
1188  *
1189  */
1190 
1191 void gfs2_glock_dq_uninit(struct gfs2_holder *gh)
1192 {
1193 	gfs2_glock_dq(gh);
1194 	gfs2_holder_uninit(gh);
1195 }
1196 
1197 /**
1198  * gfs2_glock_nq_num - acquire a glock based on lock number
1199  * @sdp: the filesystem
1200  * @number: the lock number
1201  * @glops: the glock operations for the type of glock
1202  * @state: the state to acquire the glock in
1203  * @flags: modifier flags for the acquisition
1204  * @gh: the struct gfs2_holder
1205  *
1206  * Returns: errno
1207  */
1208 
1209 int gfs2_glock_nq_num(struct gfs2_sbd *sdp, u64 number,
1210 		      const struct gfs2_glock_operations *glops,
1211 		      unsigned int state, u16 flags, struct gfs2_holder *gh)
1212 {
1213 	struct gfs2_glock *gl;
1214 	int error;
1215 
1216 	error = gfs2_glock_get(sdp, number, glops, CREATE, &gl);
1217 	if (!error) {
1218 		error = gfs2_glock_nq_init(gl, state, flags, gh);
1219 		gfs2_glock_put(gl);
1220 	}
1221 
1222 	return error;
1223 }
1224 
1225 /**
1226  * glock_compare - Compare two struct gfs2_glock structures for sorting
1227  * @arg_a: the first structure
1228  * @arg_b: the second structure
1229  *
1230  */
1231 
1232 static int glock_compare(const void *arg_a, const void *arg_b)
1233 {
1234 	const struct gfs2_holder *gh_a = *(const struct gfs2_holder **)arg_a;
1235 	const struct gfs2_holder *gh_b = *(const struct gfs2_holder **)arg_b;
1236 	const struct lm_lockname *a = &gh_a->gh_gl->gl_name;
1237 	const struct lm_lockname *b = &gh_b->gh_gl->gl_name;
1238 
1239 	if (a->ln_number > b->ln_number)
1240 		return 1;
1241 	if (a->ln_number < b->ln_number)
1242 		return -1;
1243 	BUG_ON(gh_a->gh_gl->gl_ops->go_type == gh_b->gh_gl->gl_ops->go_type);
1244 	return 0;
1245 }
1246 
1247 /**
1248  * nq_m_sync - synchonously acquire more than one glock in deadlock free order
1249  * @num_gh: the number of structures
1250  * @ghs: an array of struct gfs2_holder structures
1251  *
1252  * Returns: 0 on success (all glocks acquired),
1253  *          errno on failure (no glocks acquired)
1254  */
1255 
1256 static int nq_m_sync(unsigned int num_gh, struct gfs2_holder *ghs,
1257 		     struct gfs2_holder **p)
1258 {
1259 	unsigned int x;
1260 	int error = 0;
1261 
1262 	for (x = 0; x < num_gh; x++)
1263 		p[x] = &ghs[x];
1264 
1265 	sort(p, num_gh, sizeof(struct gfs2_holder *), glock_compare, NULL);
1266 
1267 	for (x = 0; x < num_gh; x++) {
1268 		p[x]->gh_flags &= ~(LM_FLAG_TRY | GL_ASYNC);
1269 
1270 		error = gfs2_glock_nq(p[x]);
1271 		if (error) {
1272 			while (x--)
1273 				gfs2_glock_dq(p[x]);
1274 			break;
1275 		}
1276 	}
1277 
1278 	return error;
1279 }
1280 
1281 /**
1282  * gfs2_glock_nq_m - acquire multiple glocks
1283  * @num_gh: the number of structures
1284  * @ghs: an array of struct gfs2_holder structures
1285  *
1286  *
1287  * Returns: 0 on success (all glocks acquired),
1288  *          errno on failure (no glocks acquired)
1289  */
1290 
1291 int gfs2_glock_nq_m(unsigned int num_gh, struct gfs2_holder *ghs)
1292 {
1293 	struct gfs2_holder *tmp[4];
1294 	struct gfs2_holder **pph = tmp;
1295 	int error = 0;
1296 
1297 	switch(num_gh) {
1298 	case 0:
1299 		return 0;
1300 	case 1:
1301 		ghs->gh_flags &= ~(LM_FLAG_TRY | GL_ASYNC);
1302 		return gfs2_glock_nq(ghs);
1303 	default:
1304 		if (num_gh <= 4)
1305 			break;
1306 		pph = kmalloc(num_gh * sizeof(struct gfs2_holder *), GFP_NOFS);
1307 		if (!pph)
1308 			return -ENOMEM;
1309 	}
1310 
1311 	error = nq_m_sync(num_gh, ghs, pph);
1312 
1313 	if (pph != tmp)
1314 		kfree(pph);
1315 
1316 	return error;
1317 }
1318 
1319 /**
1320  * gfs2_glock_dq_m - release multiple glocks
1321  * @num_gh: the number of structures
1322  * @ghs: an array of struct gfs2_holder structures
1323  *
1324  */
1325 
1326 void gfs2_glock_dq_m(unsigned int num_gh, struct gfs2_holder *ghs)
1327 {
1328 	while (num_gh--)
1329 		gfs2_glock_dq(&ghs[num_gh]);
1330 }
1331 
1332 void gfs2_glock_cb(struct gfs2_glock *gl, unsigned int state)
1333 {
1334 	unsigned long delay = 0;
1335 	unsigned long holdtime;
1336 	unsigned long now = jiffies;
1337 
1338 	gfs2_glock_hold(gl);
1339 	holdtime = gl->gl_tchange + gl->gl_hold_time;
1340 	if (test_bit(GLF_QUEUED, &gl->gl_flags) &&
1341 	    gl->gl_name.ln_type == LM_TYPE_INODE) {
1342 		if (time_before(now, holdtime))
1343 			delay = holdtime - now;
1344 		if (test_bit(GLF_REPLY_PENDING, &gl->gl_flags))
1345 			delay = gl->gl_hold_time;
1346 	}
1347 
1348 	spin_lock(&gl->gl_lockref.lock);
1349 	handle_callback(gl, state, delay, true);
1350 	__gfs2_glock_queue_work(gl, delay);
1351 	spin_unlock(&gl->gl_lockref.lock);
1352 }
1353 
1354 /**
1355  * gfs2_should_freeze - Figure out if glock should be frozen
1356  * @gl: The glock in question
1357  *
1358  * Glocks are not frozen if (a) the result of the dlm operation is
1359  * an error, (b) the locking operation was an unlock operation or
1360  * (c) if there is a "noexp" flagged request anywhere in the queue
1361  *
1362  * Returns: 1 if freezing should occur, 0 otherwise
1363  */
1364 
1365 static int gfs2_should_freeze(const struct gfs2_glock *gl)
1366 {
1367 	const struct gfs2_holder *gh;
1368 
1369 	if (gl->gl_reply & ~LM_OUT_ST_MASK)
1370 		return 0;
1371 	if (gl->gl_target == LM_ST_UNLOCKED)
1372 		return 0;
1373 
1374 	list_for_each_entry(gh, &gl->gl_holders, gh_list) {
1375 		if (test_bit(HIF_HOLDER, &gh->gh_iflags))
1376 			continue;
1377 		if (LM_FLAG_NOEXP & gh->gh_flags)
1378 			return 0;
1379 	}
1380 
1381 	return 1;
1382 }
1383 
1384 /**
1385  * gfs2_glock_complete - Callback used by locking
1386  * @gl: Pointer to the glock
1387  * @ret: The return value from the dlm
1388  *
1389  * The gl_reply field is under the gl_lockref.lock lock so that it is ok
1390  * to use a bitfield shared with other glock state fields.
1391  */
1392 
1393 void gfs2_glock_complete(struct gfs2_glock *gl, int ret)
1394 {
1395 	struct lm_lockstruct *ls = &gl->gl_name.ln_sbd->sd_lockstruct;
1396 
1397 	spin_lock(&gl->gl_lockref.lock);
1398 	gl->gl_reply = ret;
1399 
1400 	if (unlikely(test_bit(DFL_BLOCK_LOCKS, &ls->ls_recover_flags))) {
1401 		if (gfs2_should_freeze(gl)) {
1402 			set_bit(GLF_FROZEN, &gl->gl_flags);
1403 			spin_unlock(&gl->gl_lockref.lock);
1404 			return;
1405 		}
1406 	}
1407 
1408 	gl->gl_lockref.count++;
1409 	set_bit(GLF_REPLY_PENDING, &gl->gl_flags);
1410 	__gfs2_glock_queue_work(gl, 0);
1411 	spin_unlock(&gl->gl_lockref.lock);
1412 }
1413 
1414 static int glock_cmp(void *priv, struct list_head *a, struct list_head *b)
1415 {
1416 	struct gfs2_glock *gla, *glb;
1417 
1418 	gla = list_entry(a, struct gfs2_glock, gl_lru);
1419 	glb = list_entry(b, struct gfs2_glock, gl_lru);
1420 
1421 	if (gla->gl_name.ln_number > glb->gl_name.ln_number)
1422 		return 1;
1423 	if (gla->gl_name.ln_number < glb->gl_name.ln_number)
1424 		return -1;
1425 
1426 	return 0;
1427 }
1428 
1429 /**
1430  * gfs2_dispose_glock_lru - Demote a list of glocks
1431  * @list: The list to dispose of
1432  *
1433  * Disposing of glocks may involve disk accesses, so that here we sort
1434  * the glocks by number (i.e. disk location of the inodes) so that if
1435  * there are any such accesses, they'll be sent in order (mostly).
1436  *
1437  * Must be called under the lru_lock, but may drop and retake this
1438  * lock. While the lru_lock is dropped, entries may vanish from the
1439  * list, but no new entries will appear on the list (since it is
1440  * private)
1441  */
1442 
1443 static void gfs2_dispose_glock_lru(struct list_head *list)
1444 __releases(&lru_lock)
1445 __acquires(&lru_lock)
1446 {
1447 	struct gfs2_glock *gl;
1448 
1449 	list_sort(NULL, list, glock_cmp);
1450 
1451 	while(!list_empty(list)) {
1452 		gl = list_entry(list->next, struct gfs2_glock, gl_lru);
1453 		list_del_init(&gl->gl_lru);
1454 		if (!spin_trylock(&gl->gl_lockref.lock)) {
1455 add_back_to_lru:
1456 			list_add(&gl->gl_lru, &lru_list);
1457 			atomic_inc(&lru_count);
1458 			continue;
1459 		}
1460 		if (test_and_set_bit(GLF_LOCK, &gl->gl_flags)) {
1461 			spin_unlock(&gl->gl_lockref.lock);
1462 			goto add_back_to_lru;
1463 		}
1464 		clear_bit(GLF_LRU, &gl->gl_flags);
1465 		gl->gl_lockref.count++;
1466 		if (demote_ok(gl))
1467 			handle_callback(gl, LM_ST_UNLOCKED, 0, false);
1468 		WARN_ON(!test_and_clear_bit(GLF_LOCK, &gl->gl_flags));
1469 		__gfs2_glock_queue_work(gl, 0);
1470 		spin_unlock(&gl->gl_lockref.lock);
1471 		cond_resched_lock(&lru_lock);
1472 	}
1473 }
1474 
1475 /**
1476  * gfs2_scan_glock_lru - Scan the LRU looking for locks to demote
1477  * @nr: The number of entries to scan
1478  *
1479  * This function selects the entries on the LRU which are able to
1480  * be demoted, and then kicks off the process by calling
1481  * gfs2_dispose_glock_lru() above.
1482  */
1483 
1484 static long gfs2_scan_glock_lru(int nr)
1485 {
1486 	struct gfs2_glock *gl;
1487 	LIST_HEAD(skipped);
1488 	LIST_HEAD(dispose);
1489 	long freed = 0;
1490 
1491 	spin_lock(&lru_lock);
1492 	while ((nr-- >= 0) && !list_empty(&lru_list)) {
1493 		gl = list_entry(lru_list.next, struct gfs2_glock, gl_lru);
1494 
1495 		/* Test for being demotable */
1496 		if (!test_bit(GLF_LOCK, &gl->gl_flags)) {
1497 			list_move(&gl->gl_lru, &dispose);
1498 			atomic_dec(&lru_count);
1499 			freed++;
1500 			continue;
1501 		}
1502 
1503 		list_move(&gl->gl_lru, &skipped);
1504 	}
1505 	list_splice(&skipped, &lru_list);
1506 	if (!list_empty(&dispose))
1507 		gfs2_dispose_glock_lru(&dispose);
1508 	spin_unlock(&lru_lock);
1509 
1510 	return freed;
1511 }
1512 
1513 static unsigned long gfs2_glock_shrink_scan(struct shrinker *shrink,
1514 					    struct shrink_control *sc)
1515 {
1516 	if (!(sc->gfp_mask & __GFP_FS))
1517 		return SHRINK_STOP;
1518 	return gfs2_scan_glock_lru(sc->nr_to_scan);
1519 }
1520 
1521 static unsigned long gfs2_glock_shrink_count(struct shrinker *shrink,
1522 					     struct shrink_control *sc)
1523 {
1524 	return vfs_pressure_ratio(atomic_read(&lru_count));
1525 }
1526 
1527 static struct shrinker glock_shrinker = {
1528 	.seeks = DEFAULT_SEEKS,
1529 	.count_objects = gfs2_glock_shrink_count,
1530 	.scan_objects = gfs2_glock_shrink_scan,
1531 };
1532 
1533 /**
1534  * examine_bucket - Call a function for glock in a hash bucket
1535  * @examiner: the function
1536  * @sdp: the filesystem
1537  * @bucket: the bucket
1538  *
1539  * Note that the function can be called multiple times on the same
1540  * object.  So the user must ensure that the function can cope with
1541  * that.
1542  */
1543 
1544 static void glock_hash_walk(glock_examiner examiner, const struct gfs2_sbd *sdp)
1545 {
1546 	struct gfs2_glock *gl;
1547 	struct rhashtable_iter iter;
1548 
1549 	rhashtable_walk_enter(&gl_hash_table, &iter);
1550 
1551 	do {
1552 		rhashtable_walk_start(&iter);
1553 
1554 		while ((gl = rhashtable_walk_next(&iter)) && !IS_ERR(gl))
1555 			if (gl->gl_name.ln_sbd == sdp &&
1556 			    lockref_get_not_dead(&gl->gl_lockref))
1557 				examiner(gl);
1558 
1559 		rhashtable_walk_stop(&iter);
1560 	} while (cond_resched(), gl == ERR_PTR(-EAGAIN));
1561 
1562 	rhashtable_walk_exit(&iter);
1563 }
1564 
1565 /**
1566  * thaw_glock - thaw out a glock which has an unprocessed reply waiting
1567  * @gl: The glock to thaw
1568  *
1569  */
1570 
1571 static void thaw_glock(struct gfs2_glock *gl)
1572 {
1573 	if (!test_and_clear_bit(GLF_FROZEN, &gl->gl_flags)) {
1574 		gfs2_glock_put(gl);
1575 		return;
1576 	}
1577 	set_bit(GLF_REPLY_PENDING, &gl->gl_flags);
1578 	gfs2_glock_queue_work(gl, 0);
1579 }
1580 
1581 /**
1582  * clear_glock - look at a glock and see if we can free it from glock cache
1583  * @gl: the glock to look at
1584  *
1585  */
1586 
1587 static void clear_glock(struct gfs2_glock *gl)
1588 {
1589 	gfs2_glock_remove_from_lru(gl);
1590 
1591 	spin_lock(&gl->gl_lockref.lock);
1592 	if (gl->gl_state != LM_ST_UNLOCKED)
1593 		handle_callback(gl, LM_ST_UNLOCKED, 0, false);
1594 	__gfs2_glock_queue_work(gl, 0);
1595 	spin_unlock(&gl->gl_lockref.lock);
1596 }
1597 
1598 /**
1599  * gfs2_glock_thaw - Thaw any frozen glocks
1600  * @sdp: The super block
1601  *
1602  */
1603 
1604 void gfs2_glock_thaw(struct gfs2_sbd *sdp)
1605 {
1606 	glock_hash_walk(thaw_glock, sdp);
1607 }
1608 
1609 static void dump_glock(struct seq_file *seq, struct gfs2_glock *gl)
1610 {
1611 	spin_lock(&gl->gl_lockref.lock);
1612 	gfs2_dump_glock(seq, gl);
1613 	spin_unlock(&gl->gl_lockref.lock);
1614 }
1615 
1616 static void dump_glock_func(struct gfs2_glock *gl)
1617 {
1618 	dump_glock(NULL, gl);
1619 }
1620 
1621 /**
1622  * gfs2_gl_hash_clear - Empty out the glock hash table
1623  * @sdp: the filesystem
1624  * @wait: wait until it's all gone
1625  *
1626  * Called when unmounting the filesystem.
1627  */
1628 
1629 void gfs2_gl_hash_clear(struct gfs2_sbd *sdp)
1630 {
1631 	set_bit(SDF_SKIP_DLM_UNLOCK, &sdp->sd_flags);
1632 	flush_workqueue(glock_workqueue);
1633 	glock_hash_walk(clear_glock, sdp);
1634 	flush_workqueue(glock_workqueue);
1635 	wait_event_timeout(sdp->sd_glock_wait,
1636 			   atomic_read(&sdp->sd_glock_disposal) == 0,
1637 			   HZ * 600);
1638 	glock_hash_walk(dump_glock_func, sdp);
1639 }
1640 
1641 void gfs2_glock_finish_truncate(struct gfs2_inode *ip)
1642 {
1643 	struct gfs2_glock *gl = ip->i_gl;
1644 	int ret;
1645 
1646 	ret = gfs2_truncatei_resume(ip);
1647 	gfs2_assert_withdraw(gl->gl_name.ln_sbd, ret == 0);
1648 
1649 	spin_lock(&gl->gl_lockref.lock);
1650 	clear_bit(GLF_LOCK, &gl->gl_flags);
1651 	run_queue(gl, 1);
1652 	spin_unlock(&gl->gl_lockref.lock);
1653 }
1654 
1655 static const char *state2str(unsigned state)
1656 {
1657 	switch(state) {
1658 	case LM_ST_UNLOCKED:
1659 		return "UN";
1660 	case LM_ST_SHARED:
1661 		return "SH";
1662 	case LM_ST_DEFERRED:
1663 		return "DF";
1664 	case LM_ST_EXCLUSIVE:
1665 		return "EX";
1666 	}
1667 	return "??";
1668 }
1669 
1670 static const char *hflags2str(char *buf, u16 flags, unsigned long iflags)
1671 {
1672 	char *p = buf;
1673 	if (flags & LM_FLAG_TRY)
1674 		*p++ = 't';
1675 	if (flags & LM_FLAG_TRY_1CB)
1676 		*p++ = 'T';
1677 	if (flags & LM_FLAG_NOEXP)
1678 		*p++ = 'e';
1679 	if (flags & LM_FLAG_ANY)
1680 		*p++ = 'A';
1681 	if (flags & LM_FLAG_PRIORITY)
1682 		*p++ = 'p';
1683 	if (flags & GL_ASYNC)
1684 		*p++ = 'a';
1685 	if (flags & GL_EXACT)
1686 		*p++ = 'E';
1687 	if (flags & GL_NOCACHE)
1688 		*p++ = 'c';
1689 	if (test_bit(HIF_HOLDER, &iflags))
1690 		*p++ = 'H';
1691 	if (test_bit(HIF_WAIT, &iflags))
1692 		*p++ = 'W';
1693 	if (test_bit(HIF_FIRST, &iflags))
1694 		*p++ = 'F';
1695 	*p = 0;
1696 	return buf;
1697 }
1698 
1699 /**
1700  * dump_holder - print information about a glock holder
1701  * @seq: the seq_file struct
1702  * @gh: the glock holder
1703  *
1704  */
1705 
1706 static void dump_holder(struct seq_file *seq, const struct gfs2_holder *gh)
1707 {
1708 	struct task_struct *gh_owner = NULL;
1709 	char flags_buf[32];
1710 
1711 	rcu_read_lock();
1712 	if (gh->gh_owner_pid)
1713 		gh_owner = pid_task(gh->gh_owner_pid, PIDTYPE_PID);
1714 	gfs2_print_dbg(seq, " H: s:%s f:%s e:%d p:%ld [%s] %pS\n",
1715 		       state2str(gh->gh_state),
1716 		       hflags2str(flags_buf, gh->gh_flags, gh->gh_iflags),
1717 		       gh->gh_error,
1718 		       gh->gh_owner_pid ? (long)pid_nr(gh->gh_owner_pid) : -1,
1719 		       gh_owner ? gh_owner->comm : "(ended)",
1720 		       (void *)gh->gh_ip);
1721 	rcu_read_unlock();
1722 }
1723 
1724 static const char *gflags2str(char *buf, const struct gfs2_glock *gl)
1725 {
1726 	const unsigned long *gflags = &gl->gl_flags;
1727 	char *p = buf;
1728 
1729 	if (test_bit(GLF_LOCK, gflags))
1730 		*p++ = 'l';
1731 	if (test_bit(GLF_DEMOTE, gflags))
1732 		*p++ = 'D';
1733 	if (test_bit(GLF_PENDING_DEMOTE, gflags))
1734 		*p++ = 'd';
1735 	if (test_bit(GLF_DEMOTE_IN_PROGRESS, gflags))
1736 		*p++ = 'p';
1737 	if (test_bit(GLF_DIRTY, gflags))
1738 		*p++ = 'y';
1739 	if (test_bit(GLF_LFLUSH, gflags))
1740 		*p++ = 'f';
1741 	if (test_bit(GLF_INVALIDATE_IN_PROGRESS, gflags))
1742 		*p++ = 'i';
1743 	if (test_bit(GLF_REPLY_PENDING, gflags))
1744 		*p++ = 'r';
1745 	if (test_bit(GLF_INITIAL, gflags))
1746 		*p++ = 'I';
1747 	if (test_bit(GLF_FROZEN, gflags))
1748 		*p++ = 'F';
1749 	if (test_bit(GLF_QUEUED, gflags))
1750 		*p++ = 'q';
1751 	if (test_bit(GLF_LRU, gflags))
1752 		*p++ = 'L';
1753 	if (gl->gl_object)
1754 		*p++ = 'o';
1755 	if (test_bit(GLF_BLOCKING, gflags))
1756 		*p++ = 'b';
1757 	*p = 0;
1758 	return buf;
1759 }
1760 
1761 /**
1762  * gfs2_dump_glock - print information about a glock
1763  * @seq: The seq_file struct
1764  * @gl: the glock
1765  *
1766  * The file format is as follows:
1767  * One line per object, capital letters are used to indicate objects
1768  * G = glock, I = Inode, R = rgrp, H = holder. Glocks are not indented,
1769  * other objects are indented by a single space and follow the glock to
1770  * which they are related. Fields are indicated by lower case letters
1771  * followed by a colon and the field value, except for strings which are in
1772  * [] so that its possible to see if they are composed of spaces for
1773  * example. The field's are n = number (id of the object), f = flags,
1774  * t = type, s = state, r = refcount, e = error, p = pid.
1775  *
1776  */
1777 
1778 void gfs2_dump_glock(struct seq_file *seq, const struct gfs2_glock *gl)
1779 {
1780 	const struct gfs2_glock_operations *glops = gl->gl_ops;
1781 	unsigned long long dtime;
1782 	const struct gfs2_holder *gh;
1783 	char gflags_buf[32];
1784 
1785 	dtime = jiffies - gl->gl_demote_time;
1786 	dtime *= 1000000/HZ; /* demote time in uSec */
1787 	if (!test_bit(GLF_DEMOTE, &gl->gl_flags))
1788 		dtime = 0;
1789 	gfs2_print_dbg(seq, "G:  s:%s n:%u/%llx f:%s t:%s d:%s/%llu a:%d v:%d r:%d m:%ld\n",
1790 		  state2str(gl->gl_state),
1791 		  gl->gl_name.ln_type,
1792 		  (unsigned long long)gl->gl_name.ln_number,
1793 		  gflags2str(gflags_buf, gl),
1794 		  state2str(gl->gl_target),
1795 		  state2str(gl->gl_demote_state), dtime,
1796 		  atomic_read(&gl->gl_ail_count),
1797 		  atomic_read(&gl->gl_revokes),
1798 		  (int)gl->gl_lockref.count, gl->gl_hold_time);
1799 
1800 	list_for_each_entry(gh, &gl->gl_holders, gh_list)
1801 		dump_holder(seq, gh);
1802 
1803 	if (gl->gl_state != LM_ST_UNLOCKED && glops->go_dump)
1804 		glops->go_dump(seq, gl);
1805 }
1806 
1807 static int gfs2_glstats_seq_show(struct seq_file *seq, void *iter_ptr)
1808 {
1809 	struct gfs2_glock *gl = iter_ptr;
1810 
1811 	seq_printf(seq, "G: n:%u/%llx rtt:%llu/%llu rttb:%llu/%llu irt:%llu/%llu dcnt: %llu qcnt: %llu\n",
1812 		   gl->gl_name.ln_type,
1813 		   (unsigned long long)gl->gl_name.ln_number,
1814 		   (unsigned long long)gl->gl_stats.stats[GFS2_LKS_SRTT],
1815 		   (unsigned long long)gl->gl_stats.stats[GFS2_LKS_SRTTVAR],
1816 		   (unsigned long long)gl->gl_stats.stats[GFS2_LKS_SRTTB],
1817 		   (unsigned long long)gl->gl_stats.stats[GFS2_LKS_SRTTVARB],
1818 		   (unsigned long long)gl->gl_stats.stats[GFS2_LKS_SIRT],
1819 		   (unsigned long long)gl->gl_stats.stats[GFS2_LKS_SIRTVAR],
1820 		   (unsigned long long)gl->gl_stats.stats[GFS2_LKS_DCOUNT],
1821 		   (unsigned long long)gl->gl_stats.stats[GFS2_LKS_QCOUNT]);
1822 	return 0;
1823 }
1824 
1825 static const char *gfs2_gltype[] = {
1826 	"type",
1827 	"reserved",
1828 	"nondisk",
1829 	"inode",
1830 	"rgrp",
1831 	"meta",
1832 	"iopen",
1833 	"flock",
1834 	"plock",
1835 	"quota",
1836 	"journal",
1837 };
1838 
1839 static const char *gfs2_stype[] = {
1840 	[GFS2_LKS_SRTT]		= "srtt",
1841 	[GFS2_LKS_SRTTVAR]	= "srttvar",
1842 	[GFS2_LKS_SRTTB]	= "srttb",
1843 	[GFS2_LKS_SRTTVARB]	= "srttvarb",
1844 	[GFS2_LKS_SIRT]		= "sirt",
1845 	[GFS2_LKS_SIRTVAR]	= "sirtvar",
1846 	[GFS2_LKS_DCOUNT]	= "dlm",
1847 	[GFS2_LKS_QCOUNT]	= "queue",
1848 };
1849 
1850 #define GFS2_NR_SBSTATS (ARRAY_SIZE(gfs2_gltype) * ARRAY_SIZE(gfs2_stype))
1851 
1852 static int gfs2_sbstats_seq_show(struct seq_file *seq, void *iter_ptr)
1853 {
1854 	struct gfs2_sbd *sdp = seq->private;
1855 	loff_t pos = *(loff_t *)iter_ptr;
1856 	unsigned index = pos >> 3;
1857 	unsigned subindex = pos & 0x07;
1858 	int i;
1859 
1860 	if (index == 0 && subindex != 0)
1861 		return 0;
1862 
1863 	seq_printf(seq, "%-10s %8s:", gfs2_gltype[index],
1864 		   (index == 0) ? "cpu": gfs2_stype[subindex]);
1865 
1866 	for_each_possible_cpu(i) {
1867                 const struct gfs2_pcpu_lkstats *lkstats = per_cpu_ptr(sdp->sd_lkstats, i);
1868 
1869 		if (index == 0)
1870 			seq_printf(seq, " %15u", i);
1871 		else
1872 			seq_printf(seq, " %15llu", (unsigned long long)lkstats->
1873 				   lkstats[index - 1].stats[subindex]);
1874 	}
1875 	seq_putc(seq, '\n');
1876 	return 0;
1877 }
1878 
1879 int __init gfs2_glock_init(void)
1880 {
1881 	int i, ret;
1882 
1883 	ret = rhashtable_init(&gl_hash_table, &ht_parms);
1884 	if (ret < 0)
1885 		return ret;
1886 
1887 	glock_workqueue = alloc_workqueue("glock_workqueue", WQ_MEM_RECLAIM |
1888 					  WQ_HIGHPRI | WQ_FREEZABLE, 0);
1889 	if (!glock_workqueue) {
1890 		rhashtable_destroy(&gl_hash_table);
1891 		return -ENOMEM;
1892 	}
1893 	gfs2_delete_workqueue = alloc_workqueue("delete_workqueue",
1894 						WQ_MEM_RECLAIM | WQ_FREEZABLE,
1895 						0);
1896 	if (!gfs2_delete_workqueue) {
1897 		destroy_workqueue(glock_workqueue);
1898 		rhashtable_destroy(&gl_hash_table);
1899 		return -ENOMEM;
1900 	}
1901 
1902 	ret = register_shrinker(&glock_shrinker);
1903 	if (ret) {
1904 		destroy_workqueue(gfs2_delete_workqueue);
1905 		destroy_workqueue(glock_workqueue);
1906 		rhashtable_destroy(&gl_hash_table);
1907 		return ret;
1908 	}
1909 
1910 	for (i = 0; i < GLOCK_WAIT_TABLE_SIZE; i++)
1911 		init_waitqueue_head(glock_wait_table + i);
1912 
1913 	return 0;
1914 }
1915 
1916 void gfs2_glock_exit(void)
1917 {
1918 	unregister_shrinker(&glock_shrinker);
1919 	rhashtable_destroy(&gl_hash_table);
1920 	destroy_workqueue(glock_workqueue);
1921 	destroy_workqueue(gfs2_delete_workqueue);
1922 }
1923 
1924 static void gfs2_glock_iter_next(struct gfs2_glock_iter *gi, loff_t n)
1925 {
1926 	struct gfs2_glock *gl = gi->gl;
1927 
1928 	if (gl) {
1929 		if (n == 0)
1930 			return;
1931 		if (!lockref_put_not_zero(&gl->gl_lockref))
1932 			gfs2_glock_queue_put(gl);
1933 	}
1934 	for (;;) {
1935 		gl = rhashtable_walk_next(&gi->hti);
1936 		if (IS_ERR_OR_NULL(gl)) {
1937 			if (gl == ERR_PTR(-EAGAIN)) {
1938 				n = 1;
1939 				continue;
1940 			}
1941 			gl = NULL;
1942 			break;
1943 		}
1944 		if (gl->gl_name.ln_sbd != gi->sdp)
1945 			continue;
1946 		if (n <= 1) {
1947 			if (!lockref_get_not_dead(&gl->gl_lockref))
1948 				continue;
1949 			break;
1950 		} else {
1951 			if (__lockref_is_dead(&gl->gl_lockref))
1952 				continue;
1953 			n--;
1954 		}
1955 	}
1956 	gi->gl = gl;
1957 }
1958 
1959 static void *gfs2_glock_seq_start(struct seq_file *seq, loff_t *pos)
1960 	__acquires(RCU)
1961 {
1962 	struct gfs2_glock_iter *gi = seq->private;
1963 	loff_t n;
1964 
1965 	/*
1966 	 * We can either stay where we are, skip to the next hash table
1967 	 * entry, or start from the beginning.
1968 	 */
1969 	if (*pos < gi->last_pos) {
1970 		rhashtable_walk_exit(&gi->hti);
1971 		rhashtable_walk_enter(&gl_hash_table, &gi->hti);
1972 		n = *pos + 1;
1973 	} else {
1974 		n = *pos - gi->last_pos;
1975 	}
1976 
1977 	rhashtable_walk_start(&gi->hti);
1978 
1979 	gfs2_glock_iter_next(gi, n);
1980 	gi->last_pos = *pos;
1981 	return gi->gl;
1982 }
1983 
1984 static void *gfs2_glock_seq_next(struct seq_file *seq, void *iter_ptr,
1985 				 loff_t *pos)
1986 {
1987 	struct gfs2_glock_iter *gi = seq->private;
1988 
1989 	(*pos)++;
1990 	gi->last_pos = *pos;
1991 	gfs2_glock_iter_next(gi, 1);
1992 	return gi->gl;
1993 }
1994 
1995 static void gfs2_glock_seq_stop(struct seq_file *seq, void *iter_ptr)
1996 	__releases(RCU)
1997 {
1998 	struct gfs2_glock_iter *gi = seq->private;
1999 
2000 	rhashtable_walk_stop(&gi->hti);
2001 }
2002 
2003 static int gfs2_glock_seq_show(struct seq_file *seq, void *iter_ptr)
2004 {
2005 	dump_glock(seq, iter_ptr);
2006 	return 0;
2007 }
2008 
2009 static void *gfs2_sbstats_seq_start(struct seq_file *seq, loff_t *pos)
2010 {
2011 	preempt_disable();
2012 	if (*pos >= GFS2_NR_SBSTATS)
2013 		return NULL;
2014 	return pos;
2015 }
2016 
2017 static void *gfs2_sbstats_seq_next(struct seq_file *seq, void *iter_ptr,
2018 				   loff_t *pos)
2019 {
2020 	(*pos)++;
2021 	if (*pos >= GFS2_NR_SBSTATS)
2022 		return NULL;
2023 	return pos;
2024 }
2025 
2026 static void gfs2_sbstats_seq_stop(struct seq_file *seq, void *iter_ptr)
2027 {
2028 	preempt_enable();
2029 }
2030 
2031 static const struct seq_operations gfs2_glock_seq_ops = {
2032 	.start = gfs2_glock_seq_start,
2033 	.next  = gfs2_glock_seq_next,
2034 	.stop  = gfs2_glock_seq_stop,
2035 	.show  = gfs2_glock_seq_show,
2036 };
2037 
2038 static const struct seq_operations gfs2_glstats_seq_ops = {
2039 	.start = gfs2_glock_seq_start,
2040 	.next  = gfs2_glock_seq_next,
2041 	.stop  = gfs2_glock_seq_stop,
2042 	.show  = gfs2_glstats_seq_show,
2043 };
2044 
2045 static const struct seq_operations gfs2_sbstats_seq_ops = {
2046 	.start = gfs2_sbstats_seq_start,
2047 	.next  = gfs2_sbstats_seq_next,
2048 	.stop  = gfs2_sbstats_seq_stop,
2049 	.show  = gfs2_sbstats_seq_show,
2050 };
2051 
2052 #define GFS2_SEQ_GOODSIZE min(PAGE_SIZE << PAGE_ALLOC_COSTLY_ORDER, 65536UL)
2053 
2054 static int __gfs2_glocks_open(struct inode *inode, struct file *file,
2055 			      const struct seq_operations *ops)
2056 {
2057 	int ret = seq_open_private(file, ops, sizeof(struct gfs2_glock_iter));
2058 	if (ret == 0) {
2059 		struct seq_file *seq = file->private_data;
2060 		struct gfs2_glock_iter *gi = seq->private;
2061 
2062 		gi->sdp = inode->i_private;
2063 		seq->buf = kmalloc(GFS2_SEQ_GOODSIZE, GFP_KERNEL | __GFP_NOWARN);
2064 		if (seq->buf)
2065 			seq->size = GFS2_SEQ_GOODSIZE;
2066 		/*
2067 		 * Initially, we are "before" the first hash table entry; the
2068 		 * first call to rhashtable_walk_next gets us the first entry.
2069 		 */
2070 		gi->last_pos = -1;
2071 		gi->gl = NULL;
2072 		rhashtable_walk_enter(&gl_hash_table, &gi->hti);
2073 	}
2074 	return ret;
2075 }
2076 
2077 static int gfs2_glocks_open(struct inode *inode, struct file *file)
2078 {
2079 	return __gfs2_glocks_open(inode, file, &gfs2_glock_seq_ops);
2080 }
2081 
2082 static int gfs2_glocks_release(struct inode *inode, struct file *file)
2083 {
2084 	struct seq_file *seq = file->private_data;
2085 	struct gfs2_glock_iter *gi = seq->private;
2086 
2087 	if (gi->gl)
2088 		gfs2_glock_put(gi->gl);
2089 	rhashtable_walk_exit(&gi->hti);
2090 	return seq_release_private(inode, file);
2091 }
2092 
2093 static int gfs2_glstats_open(struct inode *inode, struct file *file)
2094 {
2095 	return __gfs2_glocks_open(inode, file, &gfs2_glstats_seq_ops);
2096 }
2097 
2098 static int gfs2_sbstats_open(struct inode *inode, struct file *file)
2099 {
2100 	int ret = seq_open(file, &gfs2_sbstats_seq_ops);
2101 	if (ret == 0) {
2102 		struct seq_file *seq = file->private_data;
2103 		seq->private = inode->i_private;  /* sdp */
2104 	}
2105 	return ret;
2106 }
2107 
2108 static const struct file_operations gfs2_glocks_fops = {
2109 	.owner   = THIS_MODULE,
2110 	.open    = gfs2_glocks_open,
2111 	.read    = seq_read,
2112 	.llseek  = seq_lseek,
2113 	.release = gfs2_glocks_release,
2114 };
2115 
2116 static const struct file_operations gfs2_glstats_fops = {
2117 	.owner   = THIS_MODULE,
2118 	.open    = gfs2_glstats_open,
2119 	.read    = seq_read,
2120 	.llseek  = seq_lseek,
2121 	.release = gfs2_glocks_release,
2122 };
2123 
2124 static const struct file_operations gfs2_sbstats_fops = {
2125 	.owner   = THIS_MODULE,
2126 	.open	 = gfs2_sbstats_open,
2127 	.read    = seq_read,
2128 	.llseek  = seq_lseek,
2129 	.release = seq_release,
2130 };
2131 
2132 int gfs2_create_debugfs_file(struct gfs2_sbd *sdp)
2133 {
2134 	struct dentry *dent;
2135 
2136 	dent = debugfs_create_dir(sdp->sd_table_name, gfs2_root);
2137 	if (IS_ERR_OR_NULL(dent))
2138 		goto fail;
2139 	sdp->debugfs_dir = dent;
2140 
2141 	dent = debugfs_create_file("glocks",
2142 				   S_IFREG | S_IRUGO,
2143 				   sdp->debugfs_dir, sdp,
2144 				   &gfs2_glocks_fops);
2145 	if (IS_ERR_OR_NULL(dent))
2146 		goto fail;
2147 	sdp->debugfs_dentry_glocks = dent;
2148 
2149 	dent = debugfs_create_file("glstats",
2150 				   S_IFREG | S_IRUGO,
2151 				   sdp->debugfs_dir, sdp,
2152 				   &gfs2_glstats_fops);
2153 	if (IS_ERR_OR_NULL(dent))
2154 		goto fail;
2155 	sdp->debugfs_dentry_glstats = dent;
2156 
2157 	dent = debugfs_create_file("sbstats",
2158 				   S_IFREG | S_IRUGO,
2159 				   sdp->debugfs_dir, sdp,
2160 				   &gfs2_sbstats_fops);
2161 	if (IS_ERR_OR_NULL(dent))
2162 		goto fail;
2163 	sdp->debugfs_dentry_sbstats = dent;
2164 
2165 	return 0;
2166 fail:
2167 	gfs2_delete_debugfs_file(sdp);
2168 	return dent ? PTR_ERR(dent) : -ENOMEM;
2169 }
2170 
2171 void gfs2_delete_debugfs_file(struct gfs2_sbd *sdp)
2172 {
2173 	if (sdp->debugfs_dir) {
2174 		if (sdp->debugfs_dentry_glocks) {
2175 			debugfs_remove(sdp->debugfs_dentry_glocks);
2176 			sdp->debugfs_dentry_glocks = NULL;
2177 		}
2178 		if (sdp->debugfs_dentry_glstats) {
2179 			debugfs_remove(sdp->debugfs_dentry_glstats);
2180 			sdp->debugfs_dentry_glstats = NULL;
2181 		}
2182 		if (sdp->debugfs_dentry_sbstats) {
2183 			debugfs_remove(sdp->debugfs_dentry_sbstats);
2184 			sdp->debugfs_dentry_sbstats = NULL;
2185 		}
2186 		debugfs_remove(sdp->debugfs_dir);
2187 		sdp->debugfs_dir = NULL;
2188 	}
2189 }
2190 
2191 int gfs2_register_debugfs(void)
2192 {
2193 	gfs2_root = debugfs_create_dir("gfs2", NULL);
2194 	if (IS_ERR(gfs2_root))
2195 		return PTR_ERR(gfs2_root);
2196 	return gfs2_root ? 0 : -ENOMEM;
2197 }
2198 
2199 void gfs2_unregister_debugfs(void)
2200 {
2201 	debugfs_remove(gfs2_root);
2202 	gfs2_root = NULL;
2203 }
2204