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 #include <linux/sched.h> 11 #include <linux/slab.h> 12 #include <linux/spinlock.h> 13 #include <linux/buffer_head.h> 14 #include <linux/delay.h> 15 #include <linux/sort.h> 16 #include <linux/jhash.h> 17 #include <linux/kallsyms.h> 18 #include <linux/gfs2_ondisk.h> 19 #include <linux/list.h> 20 #include <linux/wait.h> 21 #include <linux/module.h> 22 #include <asm/uaccess.h> 23 #include <linux/seq_file.h> 24 #include <linux/debugfs.h> 25 #include <linux/kthread.h> 26 #include <linux/freezer.h> 27 #include <linux/workqueue.h> 28 #include <linux/jiffies.h> 29 #include <linux/rcupdate.h> 30 #include <linux/rculist_bl.h> 31 #include <linux/bit_spinlock.h> 32 33 #include "gfs2.h" 34 #include "incore.h" 35 #include "glock.h" 36 #include "glops.h" 37 #include "inode.h" 38 #include "lops.h" 39 #include "meta_io.h" 40 #include "quota.h" 41 #include "super.h" 42 #include "util.h" 43 #include "bmap.h" 44 #define CREATE_TRACE_POINTS 45 #include "trace_gfs2.h" 46 47 struct gfs2_glock_iter { 48 int hash; /* hash bucket index */ 49 struct gfs2_sbd *sdp; /* incore superblock */ 50 struct gfs2_glock *gl; /* current glock struct */ 51 char string[512]; /* scratch space */ 52 }; 53 54 typedef void (*glock_examiner) (struct gfs2_glock * gl); 55 56 static int __dump_glock(struct seq_file *seq, const struct gfs2_glock *gl); 57 #define GLOCK_BUG_ON(gl,x) do { if (unlikely(x)) { __dump_glock(NULL, gl); BUG(); } } while(0) 58 static void do_xmote(struct gfs2_glock *gl, struct gfs2_holder *gh, unsigned int target); 59 60 static struct dentry *gfs2_root; 61 static struct workqueue_struct *glock_workqueue; 62 struct workqueue_struct *gfs2_delete_workqueue; 63 static LIST_HEAD(lru_list); 64 static atomic_t lru_count = ATOMIC_INIT(0); 65 static DEFINE_SPINLOCK(lru_lock); 66 67 #define GFS2_GL_HASH_SHIFT 15 68 #define GFS2_GL_HASH_SIZE (1 << GFS2_GL_HASH_SHIFT) 69 #define GFS2_GL_HASH_MASK (GFS2_GL_HASH_SIZE - 1) 70 71 static struct hlist_bl_head gl_hash_table[GFS2_GL_HASH_SIZE]; 72 static struct dentry *gfs2_root; 73 74 /** 75 * gl_hash() - Turn glock number into hash bucket number 76 * @lock: The glock number 77 * 78 * Returns: The number of the corresponding hash bucket 79 */ 80 81 static unsigned int gl_hash(const struct gfs2_sbd *sdp, 82 const struct lm_lockname *name) 83 { 84 unsigned int h; 85 86 h = jhash(&name->ln_number, sizeof(u64), 0); 87 h = jhash(&name->ln_type, sizeof(unsigned int), h); 88 h = jhash(&sdp, sizeof(struct gfs2_sbd *), h); 89 h &= GFS2_GL_HASH_MASK; 90 91 return h; 92 } 93 94 static inline void spin_lock_bucket(unsigned int hash) 95 { 96 hlist_bl_lock(&gl_hash_table[hash]); 97 } 98 99 static inline void spin_unlock_bucket(unsigned int hash) 100 { 101 hlist_bl_unlock(&gl_hash_table[hash]); 102 } 103 104 static void gfs2_glock_dealloc(struct rcu_head *rcu) 105 { 106 struct gfs2_glock *gl = container_of(rcu, struct gfs2_glock, gl_rcu); 107 108 if (gl->gl_ops->go_flags & GLOF_ASPACE) 109 kmem_cache_free(gfs2_glock_aspace_cachep, gl); 110 else 111 kmem_cache_free(gfs2_glock_cachep, gl); 112 } 113 114 void gfs2_glock_free(struct gfs2_glock *gl) 115 { 116 struct gfs2_sbd *sdp = gl->gl_sbd; 117 118 call_rcu(&gl->gl_rcu, gfs2_glock_dealloc); 119 if (atomic_dec_and_test(&sdp->sd_glock_disposal)) 120 wake_up(&sdp->sd_glock_wait); 121 } 122 123 /** 124 * gfs2_glock_hold() - increment reference count on glock 125 * @gl: The glock to hold 126 * 127 */ 128 129 void gfs2_glock_hold(struct gfs2_glock *gl) 130 { 131 GLOCK_BUG_ON(gl, atomic_read(&gl->gl_ref) == 0); 132 atomic_inc(&gl->gl_ref); 133 } 134 135 /** 136 * demote_ok - Check to see if it's ok to unlock a glock 137 * @gl: the glock 138 * 139 * Returns: 1 if it's ok 140 */ 141 142 static int demote_ok(const struct gfs2_glock *gl) 143 { 144 const struct gfs2_glock_operations *glops = gl->gl_ops; 145 146 if (gl->gl_state == LM_ST_UNLOCKED) 147 return 0; 148 if (!list_empty(&gl->gl_holders)) 149 return 0; 150 if (glops->go_demote_ok) 151 return glops->go_demote_ok(gl); 152 return 1; 153 } 154 155 156 void gfs2_glock_add_to_lru(struct gfs2_glock *gl) 157 { 158 spin_lock(&lru_lock); 159 160 if (!list_empty(&gl->gl_lru)) 161 list_del_init(&gl->gl_lru); 162 else 163 atomic_inc(&lru_count); 164 165 list_add_tail(&gl->gl_lru, &lru_list); 166 set_bit(GLF_LRU, &gl->gl_flags); 167 spin_unlock(&lru_lock); 168 } 169 170 static void __gfs2_glock_remove_from_lru(struct gfs2_glock *gl) 171 { 172 if (!list_empty(&gl->gl_lru)) { 173 list_del_init(&gl->gl_lru); 174 atomic_dec(&lru_count); 175 clear_bit(GLF_LRU, &gl->gl_flags); 176 } 177 } 178 179 static void gfs2_glock_remove_from_lru(struct gfs2_glock *gl) 180 { 181 spin_lock(&lru_lock); 182 __gfs2_glock_remove_from_lru(gl); 183 spin_unlock(&lru_lock); 184 } 185 186 /** 187 * __gfs2_glock_schedule_for_reclaim - Add a glock to the reclaim list 188 * @gl: the glock 189 * 190 * If the glock is demotable, then we add it (or move it) to the end 191 * of the glock LRU list. 192 */ 193 194 static void __gfs2_glock_schedule_for_reclaim(struct gfs2_glock *gl) 195 { 196 if (demote_ok(gl)) 197 gfs2_glock_add_to_lru(gl); 198 } 199 200 /** 201 * gfs2_glock_put_nolock() - Decrement reference count on glock 202 * @gl: The glock to put 203 * 204 * This function should only be used if the caller has its own reference 205 * to the glock, in addition to the one it is dropping. 206 */ 207 208 void gfs2_glock_put_nolock(struct gfs2_glock *gl) 209 { 210 if (atomic_dec_and_test(&gl->gl_ref)) 211 GLOCK_BUG_ON(gl, 1); 212 } 213 214 /** 215 * gfs2_glock_put() - Decrement reference count on glock 216 * @gl: The glock to put 217 * 218 */ 219 220 void gfs2_glock_put(struct gfs2_glock *gl) 221 { 222 struct gfs2_sbd *sdp = gl->gl_sbd; 223 struct address_space *mapping = gfs2_glock2aspace(gl); 224 225 if (atomic_dec_and_lock(&gl->gl_ref, &lru_lock)) { 226 __gfs2_glock_remove_from_lru(gl); 227 spin_unlock(&lru_lock); 228 spin_lock_bucket(gl->gl_hash); 229 hlist_bl_del_rcu(&gl->gl_list); 230 spin_unlock_bucket(gl->gl_hash); 231 GLOCK_BUG_ON(gl, !list_empty(&gl->gl_holders)); 232 GLOCK_BUG_ON(gl, mapping && mapping->nrpages); 233 trace_gfs2_glock_put(gl); 234 sdp->sd_lockstruct.ls_ops->lm_put_lock(gl); 235 } 236 } 237 238 /** 239 * search_bucket() - Find struct gfs2_glock by lock number 240 * @bucket: the bucket to search 241 * @name: The lock name 242 * 243 * Returns: NULL, or the struct gfs2_glock with the requested number 244 */ 245 246 static struct gfs2_glock *search_bucket(unsigned int hash, 247 const struct gfs2_sbd *sdp, 248 const struct lm_lockname *name) 249 { 250 struct gfs2_glock *gl; 251 struct hlist_bl_node *h; 252 253 hlist_bl_for_each_entry_rcu(gl, h, &gl_hash_table[hash], gl_list) { 254 if (!lm_name_equal(&gl->gl_name, name)) 255 continue; 256 if (gl->gl_sbd != sdp) 257 continue; 258 if (atomic_inc_not_zero(&gl->gl_ref)) 259 return gl; 260 } 261 262 return NULL; 263 } 264 265 /** 266 * may_grant - check if its ok to grant a new lock 267 * @gl: The glock 268 * @gh: The lock request which we wish to grant 269 * 270 * Returns: true if its ok to grant the lock 271 */ 272 273 static inline int may_grant(const struct gfs2_glock *gl, const struct gfs2_holder *gh) 274 { 275 const struct gfs2_holder *gh_head = list_entry(gl->gl_holders.next, const struct gfs2_holder, gh_list); 276 if ((gh->gh_state == LM_ST_EXCLUSIVE || 277 gh_head->gh_state == LM_ST_EXCLUSIVE) && gh != gh_head) 278 return 0; 279 if (gl->gl_state == gh->gh_state) 280 return 1; 281 if (gh->gh_flags & GL_EXACT) 282 return 0; 283 if (gl->gl_state == LM_ST_EXCLUSIVE) { 284 if (gh->gh_state == LM_ST_SHARED && gh_head->gh_state == LM_ST_SHARED) 285 return 1; 286 if (gh->gh_state == LM_ST_DEFERRED && gh_head->gh_state == LM_ST_DEFERRED) 287 return 1; 288 } 289 if (gl->gl_state != LM_ST_UNLOCKED && (gh->gh_flags & LM_FLAG_ANY)) 290 return 1; 291 return 0; 292 } 293 294 static void gfs2_holder_wake(struct gfs2_holder *gh) 295 { 296 clear_bit(HIF_WAIT, &gh->gh_iflags); 297 smp_mb__after_clear_bit(); 298 wake_up_bit(&gh->gh_iflags, HIF_WAIT); 299 } 300 301 /** 302 * do_error - Something unexpected has happened during a lock request 303 * 304 */ 305 306 static inline void do_error(struct gfs2_glock *gl, const int ret) 307 { 308 struct gfs2_holder *gh, *tmp; 309 310 list_for_each_entry_safe(gh, tmp, &gl->gl_holders, gh_list) { 311 if (test_bit(HIF_HOLDER, &gh->gh_iflags)) 312 continue; 313 if (ret & LM_OUT_ERROR) 314 gh->gh_error = -EIO; 315 else if (gh->gh_flags & (LM_FLAG_TRY | LM_FLAG_TRY_1CB)) 316 gh->gh_error = GLR_TRYFAILED; 317 else 318 continue; 319 list_del_init(&gh->gh_list); 320 trace_gfs2_glock_queue(gh, 0); 321 gfs2_holder_wake(gh); 322 } 323 } 324 325 /** 326 * do_promote - promote as many requests as possible on the current queue 327 * @gl: The glock 328 * 329 * Returns: 1 if there is a blocked holder at the head of the list, or 2 330 * if a type specific operation is underway. 331 */ 332 333 static int do_promote(struct gfs2_glock *gl) 334 __releases(&gl->gl_spin) 335 __acquires(&gl->gl_spin) 336 { 337 const struct gfs2_glock_operations *glops = gl->gl_ops; 338 struct gfs2_holder *gh, *tmp; 339 int ret; 340 341 restart: 342 list_for_each_entry_safe(gh, tmp, &gl->gl_holders, gh_list) { 343 if (test_bit(HIF_HOLDER, &gh->gh_iflags)) 344 continue; 345 if (may_grant(gl, gh)) { 346 if (gh->gh_list.prev == &gl->gl_holders && 347 glops->go_lock) { 348 spin_unlock(&gl->gl_spin); 349 /* FIXME: eliminate this eventually */ 350 ret = glops->go_lock(gh); 351 spin_lock(&gl->gl_spin); 352 if (ret) { 353 if (ret == 1) 354 return 2; 355 gh->gh_error = ret; 356 list_del_init(&gh->gh_list); 357 trace_gfs2_glock_queue(gh, 0); 358 gfs2_holder_wake(gh); 359 goto restart; 360 } 361 set_bit(HIF_HOLDER, &gh->gh_iflags); 362 trace_gfs2_promote(gh, 1); 363 gfs2_holder_wake(gh); 364 goto restart; 365 } 366 set_bit(HIF_HOLDER, &gh->gh_iflags); 367 trace_gfs2_promote(gh, 0); 368 gfs2_holder_wake(gh); 369 continue; 370 } 371 if (gh->gh_list.prev == &gl->gl_holders) 372 return 1; 373 do_error(gl, 0); 374 break; 375 } 376 return 0; 377 } 378 379 /** 380 * find_first_waiter - find the first gh that's waiting for the glock 381 * @gl: the glock 382 */ 383 384 static inline struct gfs2_holder *find_first_waiter(const struct gfs2_glock *gl) 385 { 386 struct gfs2_holder *gh; 387 388 list_for_each_entry(gh, &gl->gl_holders, gh_list) { 389 if (!test_bit(HIF_HOLDER, &gh->gh_iflags)) 390 return gh; 391 } 392 return NULL; 393 } 394 395 /** 396 * state_change - record that the glock is now in a different state 397 * @gl: the glock 398 * @new_state the new state 399 * 400 */ 401 402 static void state_change(struct gfs2_glock *gl, unsigned int new_state) 403 { 404 int held1, held2; 405 406 held1 = (gl->gl_state != LM_ST_UNLOCKED); 407 held2 = (new_state != LM_ST_UNLOCKED); 408 409 if (held1 != held2) { 410 if (held2) 411 gfs2_glock_hold(gl); 412 else 413 gfs2_glock_put_nolock(gl); 414 } 415 if (held1 && held2 && list_empty(&gl->gl_holders)) 416 clear_bit(GLF_QUEUED, &gl->gl_flags); 417 418 if (new_state != gl->gl_target) 419 /* shorten our minimum hold time */ 420 gl->gl_hold_time = max(gl->gl_hold_time - GL_GLOCK_HOLD_DECR, 421 GL_GLOCK_MIN_HOLD); 422 gl->gl_state = new_state; 423 gl->gl_tchange = jiffies; 424 } 425 426 static void gfs2_demote_wake(struct gfs2_glock *gl) 427 { 428 gl->gl_demote_state = LM_ST_EXCLUSIVE; 429 clear_bit(GLF_DEMOTE, &gl->gl_flags); 430 smp_mb__after_clear_bit(); 431 wake_up_bit(&gl->gl_flags, GLF_DEMOTE); 432 } 433 434 /** 435 * finish_xmote - The DLM has replied to one of our lock requests 436 * @gl: The glock 437 * @ret: The status from the DLM 438 * 439 */ 440 441 static void finish_xmote(struct gfs2_glock *gl, unsigned int ret) 442 { 443 const struct gfs2_glock_operations *glops = gl->gl_ops; 444 struct gfs2_holder *gh; 445 unsigned state = ret & LM_OUT_ST_MASK; 446 int rv; 447 448 spin_lock(&gl->gl_spin); 449 trace_gfs2_glock_state_change(gl, state); 450 state_change(gl, state); 451 gh = find_first_waiter(gl); 452 453 /* Demote to UN request arrived during demote to SH or DF */ 454 if (test_bit(GLF_DEMOTE_IN_PROGRESS, &gl->gl_flags) && 455 state != LM_ST_UNLOCKED && gl->gl_demote_state == LM_ST_UNLOCKED) 456 gl->gl_target = LM_ST_UNLOCKED; 457 458 /* Check for state != intended state */ 459 if (unlikely(state != gl->gl_target)) { 460 if (gh && !test_bit(GLF_DEMOTE_IN_PROGRESS, &gl->gl_flags)) { 461 /* move to back of queue and try next entry */ 462 if (ret & LM_OUT_CANCELED) { 463 if ((gh->gh_flags & LM_FLAG_PRIORITY) == 0) 464 list_move_tail(&gh->gh_list, &gl->gl_holders); 465 gh = find_first_waiter(gl); 466 gl->gl_target = gh->gh_state; 467 goto retry; 468 } 469 /* Some error or failed "try lock" - report it */ 470 if ((ret & LM_OUT_ERROR) || 471 (gh->gh_flags & (LM_FLAG_TRY | LM_FLAG_TRY_1CB))) { 472 gl->gl_target = gl->gl_state; 473 do_error(gl, ret); 474 goto out; 475 } 476 } 477 switch(state) { 478 /* Unlocked due to conversion deadlock, try again */ 479 case LM_ST_UNLOCKED: 480 retry: 481 do_xmote(gl, gh, gl->gl_target); 482 break; 483 /* Conversion fails, unlock and try again */ 484 case LM_ST_SHARED: 485 case LM_ST_DEFERRED: 486 do_xmote(gl, gh, LM_ST_UNLOCKED); 487 break; 488 default: /* Everything else */ 489 printk(KERN_ERR "GFS2: wanted %u got %u\n", gl->gl_target, state); 490 GLOCK_BUG_ON(gl, 1); 491 } 492 spin_unlock(&gl->gl_spin); 493 return; 494 } 495 496 /* Fast path - we got what we asked for */ 497 if (test_and_clear_bit(GLF_DEMOTE_IN_PROGRESS, &gl->gl_flags)) 498 gfs2_demote_wake(gl); 499 if (state != LM_ST_UNLOCKED) { 500 if (glops->go_xmote_bh) { 501 spin_unlock(&gl->gl_spin); 502 rv = glops->go_xmote_bh(gl, gh); 503 spin_lock(&gl->gl_spin); 504 if (rv) { 505 do_error(gl, rv); 506 goto out; 507 } 508 } 509 rv = do_promote(gl); 510 if (rv == 2) 511 goto out_locked; 512 } 513 out: 514 clear_bit(GLF_LOCK, &gl->gl_flags); 515 out_locked: 516 spin_unlock(&gl->gl_spin); 517 } 518 519 /** 520 * do_xmote - Calls the DLM to change the state of a lock 521 * @gl: The lock state 522 * @gh: The holder (only for promotes) 523 * @target: The target lock state 524 * 525 */ 526 527 static void do_xmote(struct gfs2_glock *gl, struct gfs2_holder *gh, unsigned int target) 528 __releases(&gl->gl_spin) 529 __acquires(&gl->gl_spin) 530 { 531 const struct gfs2_glock_operations *glops = gl->gl_ops; 532 struct gfs2_sbd *sdp = gl->gl_sbd; 533 unsigned int lck_flags = gh ? gh->gh_flags : 0; 534 int ret; 535 536 lck_flags &= (LM_FLAG_TRY | LM_FLAG_TRY_1CB | LM_FLAG_NOEXP | 537 LM_FLAG_PRIORITY); 538 GLOCK_BUG_ON(gl, gl->gl_state == target); 539 GLOCK_BUG_ON(gl, gl->gl_state == gl->gl_target); 540 if ((target == LM_ST_UNLOCKED || target == LM_ST_DEFERRED) && 541 glops->go_inval) { 542 set_bit(GLF_INVALIDATE_IN_PROGRESS, &gl->gl_flags); 543 do_error(gl, 0); /* Fail queued try locks */ 544 } 545 gl->gl_req = target; 546 spin_unlock(&gl->gl_spin); 547 if (glops->go_xmote_th) 548 glops->go_xmote_th(gl); 549 if (test_bit(GLF_INVALIDATE_IN_PROGRESS, &gl->gl_flags)) 550 glops->go_inval(gl, target == LM_ST_DEFERRED ? 0 : DIO_METADATA); 551 clear_bit(GLF_INVALIDATE_IN_PROGRESS, &gl->gl_flags); 552 553 gfs2_glock_hold(gl); 554 if (sdp->sd_lockstruct.ls_ops->lm_lock) { 555 /* lock_dlm */ 556 ret = sdp->sd_lockstruct.ls_ops->lm_lock(gl, target, lck_flags); 557 GLOCK_BUG_ON(gl, ret); 558 } else { /* lock_nolock */ 559 finish_xmote(gl, target); 560 if (queue_delayed_work(glock_workqueue, &gl->gl_work, 0) == 0) 561 gfs2_glock_put(gl); 562 } 563 564 spin_lock(&gl->gl_spin); 565 } 566 567 /** 568 * find_first_holder - find the first "holder" gh 569 * @gl: the glock 570 */ 571 572 static inline struct gfs2_holder *find_first_holder(const struct gfs2_glock *gl) 573 { 574 struct gfs2_holder *gh; 575 576 if (!list_empty(&gl->gl_holders)) { 577 gh = list_entry(gl->gl_holders.next, struct gfs2_holder, gh_list); 578 if (test_bit(HIF_HOLDER, &gh->gh_iflags)) 579 return gh; 580 } 581 return NULL; 582 } 583 584 /** 585 * run_queue - do all outstanding tasks related to a glock 586 * @gl: The glock in question 587 * @nonblock: True if we must not block in run_queue 588 * 589 */ 590 591 static void run_queue(struct gfs2_glock *gl, const int nonblock) 592 __releases(&gl->gl_spin) 593 __acquires(&gl->gl_spin) 594 { 595 struct gfs2_holder *gh = NULL; 596 int ret; 597 598 if (test_and_set_bit(GLF_LOCK, &gl->gl_flags)) 599 return; 600 601 GLOCK_BUG_ON(gl, test_bit(GLF_DEMOTE_IN_PROGRESS, &gl->gl_flags)); 602 603 if (test_bit(GLF_DEMOTE, &gl->gl_flags) && 604 gl->gl_demote_state != gl->gl_state) { 605 if (find_first_holder(gl)) 606 goto out_unlock; 607 if (nonblock) 608 goto out_sched; 609 set_bit(GLF_DEMOTE_IN_PROGRESS, &gl->gl_flags); 610 GLOCK_BUG_ON(gl, gl->gl_demote_state == LM_ST_EXCLUSIVE); 611 gl->gl_target = gl->gl_demote_state; 612 } else { 613 if (test_bit(GLF_DEMOTE, &gl->gl_flags)) 614 gfs2_demote_wake(gl); 615 ret = do_promote(gl); 616 if (ret == 0) 617 goto out_unlock; 618 if (ret == 2) 619 goto out; 620 gh = find_first_waiter(gl); 621 gl->gl_target = gh->gh_state; 622 if (!(gh->gh_flags & (LM_FLAG_TRY | LM_FLAG_TRY_1CB))) 623 do_error(gl, 0); /* Fail queued try locks */ 624 } 625 do_xmote(gl, gh, gl->gl_target); 626 out: 627 return; 628 629 out_sched: 630 clear_bit(GLF_LOCK, &gl->gl_flags); 631 smp_mb__after_clear_bit(); 632 gfs2_glock_hold(gl); 633 if (queue_delayed_work(glock_workqueue, &gl->gl_work, 0) == 0) 634 gfs2_glock_put_nolock(gl); 635 return; 636 637 out_unlock: 638 clear_bit(GLF_LOCK, &gl->gl_flags); 639 smp_mb__after_clear_bit(); 640 return; 641 } 642 643 static void delete_work_func(struct work_struct *work) 644 { 645 struct gfs2_glock *gl = container_of(work, struct gfs2_glock, gl_delete); 646 struct gfs2_sbd *sdp = gl->gl_sbd; 647 struct gfs2_inode *ip; 648 struct inode *inode; 649 u64 no_addr = gl->gl_name.ln_number; 650 651 ip = gl->gl_object; 652 /* Note: Unsafe to dereference ip as we don't hold right refs/locks */ 653 654 if (ip) 655 inode = gfs2_ilookup(sdp->sd_vfs, no_addr, 1); 656 else 657 inode = gfs2_lookup_by_inum(sdp, no_addr, NULL, GFS2_BLKST_UNLINKED); 658 if (inode && !IS_ERR(inode)) { 659 d_prune_aliases(inode); 660 iput(inode); 661 } 662 gfs2_glock_put(gl); 663 } 664 665 static void glock_work_func(struct work_struct *work) 666 { 667 unsigned long delay = 0; 668 struct gfs2_glock *gl = container_of(work, struct gfs2_glock, gl_work.work); 669 int drop_ref = 0; 670 671 if (test_and_clear_bit(GLF_REPLY_PENDING, &gl->gl_flags)) { 672 finish_xmote(gl, gl->gl_reply); 673 drop_ref = 1; 674 } 675 spin_lock(&gl->gl_spin); 676 if (test_bit(GLF_PENDING_DEMOTE, &gl->gl_flags) && 677 gl->gl_state != LM_ST_UNLOCKED && 678 gl->gl_demote_state != LM_ST_EXCLUSIVE) { 679 unsigned long holdtime, now = jiffies; 680 681 holdtime = gl->gl_tchange + gl->gl_hold_time; 682 if (time_before(now, holdtime)) 683 delay = holdtime - now; 684 685 if (!delay) { 686 clear_bit(GLF_PENDING_DEMOTE, &gl->gl_flags); 687 set_bit(GLF_DEMOTE, &gl->gl_flags); 688 } 689 } 690 run_queue(gl, 0); 691 spin_unlock(&gl->gl_spin); 692 if (!delay) 693 gfs2_glock_put(gl); 694 else { 695 if (gl->gl_name.ln_type != LM_TYPE_INODE) 696 delay = 0; 697 if (queue_delayed_work(glock_workqueue, &gl->gl_work, delay) == 0) 698 gfs2_glock_put(gl); 699 } 700 if (drop_ref) 701 gfs2_glock_put(gl); 702 } 703 704 /** 705 * gfs2_glock_get() - Get a glock, or create one if one doesn't exist 706 * @sdp: The GFS2 superblock 707 * @number: the lock number 708 * @glops: The glock_operations to use 709 * @create: If 0, don't create the glock if it doesn't exist 710 * @glp: the glock is returned here 711 * 712 * This does not lock a glock, just finds/creates structures for one. 713 * 714 * Returns: errno 715 */ 716 717 int gfs2_glock_get(struct gfs2_sbd *sdp, u64 number, 718 const struct gfs2_glock_operations *glops, int create, 719 struct gfs2_glock **glp) 720 { 721 struct super_block *s = sdp->sd_vfs; 722 struct lm_lockname name = { .ln_number = number, .ln_type = glops->go_type }; 723 struct gfs2_glock *gl, *tmp; 724 unsigned int hash = gl_hash(sdp, &name); 725 struct address_space *mapping; 726 struct kmem_cache *cachep; 727 728 rcu_read_lock(); 729 gl = search_bucket(hash, sdp, &name); 730 rcu_read_unlock(); 731 732 *glp = gl; 733 if (gl) 734 return 0; 735 if (!create) 736 return -ENOENT; 737 738 if (glops->go_flags & GLOF_ASPACE) 739 cachep = gfs2_glock_aspace_cachep; 740 else 741 cachep = gfs2_glock_cachep; 742 gl = kmem_cache_alloc(cachep, GFP_KERNEL); 743 if (!gl) 744 return -ENOMEM; 745 746 atomic_inc(&sdp->sd_glock_disposal); 747 gl->gl_flags = 0; 748 gl->gl_name = name; 749 atomic_set(&gl->gl_ref, 1); 750 gl->gl_state = LM_ST_UNLOCKED; 751 gl->gl_target = LM_ST_UNLOCKED; 752 gl->gl_demote_state = LM_ST_EXCLUSIVE; 753 gl->gl_hash = hash; 754 gl->gl_ops = glops; 755 snprintf(gl->gl_strname, GDLM_STRNAME_BYTES, "%8x%16llx", name.ln_type, (unsigned long long)number); 756 memset(&gl->gl_lksb, 0, sizeof(struct dlm_lksb)); 757 gl->gl_lksb.sb_lvbptr = gl->gl_lvb; 758 gl->gl_tchange = jiffies; 759 gl->gl_object = NULL; 760 gl->gl_sbd = sdp; 761 gl->gl_hold_time = GL_GLOCK_DFT_HOLD; 762 INIT_DELAYED_WORK(&gl->gl_work, glock_work_func); 763 INIT_WORK(&gl->gl_delete, delete_work_func); 764 765 mapping = gfs2_glock2aspace(gl); 766 if (mapping) { 767 mapping->a_ops = &gfs2_meta_aops; 768 mapping->host = s->s_bdev->bd_inode; 769 mapping->flags = 0; 770 mapping_set_gfp_mask(mapping, GFP_NOFS); 771 mapping->assoc_mapping = NULL; 772 mapping->backing_dev_info = s->s_bdi; 773 mapping->writeback_index = 0; 774 } 775 776 spin_lock_bucket(hash); 777 tmp = search_bucket(hash, sdp, &name); 778 if (tmp) { 779 spin_unlock_bucket(hash); 780 kmem_cache_free(cachep, gl); 781 atomic_dec(&sdp->sd_glock_disposal); 782 gl = tmp; 783 } else { 784 hlist_bl_add_head_rcu(&gl->gl_list, &gl_hash_table[hash]); 785 spin_unlock_bucket(hash); 786 } 787 788 *glp = gl; 789 790 return 0; 791 } 792 793 /** 794 * gfs2_holder_init - initialize a struct gfs2_holder in the default way 795 * @gl: the glock 796 * @state: the state we're requesting 797 * @flags: the modifier flags 798 * @gh: the holder structure 799 * 800 */ 801 802 void gfs2_holder_init(struct gfs2_glock *gl, unsigned int state, unsigned flags, 803 struct gfs2_holder *gh) 804 { 805 INIT_LIST_HEAD(&gh->gh_list); 806 gh->gh_gl = gl; 807 gh->gh_ip = (unsigned long)__builtin_return_address(0); 808 gh->gh_owner_pid = get_pid(task_pid(current)); 809 gh->gh_state = state; 810 gh->gh_flags = flags; 811 gh->gh_error = 0; 812 gh->gh_iflags = 0; 813 gfs2_glock_hold(gl); 814 } 815 816 /** 817 * gfs2_holder_reinit - reinitialize a struct gfs2_holder so we can requeue it 818 * @state: the state we're requesting 819 * @flags: the modifier flags 820 * @gh: the holder structure 821 * 822 * Don't mess with the glock. 823 * 824 */ 825 826 void gfs2_holder_reinit(unsigned int state, unsigned flags, struct gfs2_holder *gh) 827 { 828 gh->gh_state = state; 829 gh->gh_flags = flags; 830 gh->gh_iflags = 0; 831 gh->gh_ip = (unsigned long)__builtin_return_address(0); 832 if (gh->gh_owner_pid) 833 put_pid(gh->gh_owner_pid); 834 gh->gh_owner_pid = get_pid(task_pid(current)); 835 } 836 837 /** 838 * gfs2_holder_uninit - uninitialize a holder structure (drop glock reference) 839 * @gh: the holder structure 840 * 841 */ 842 843 void gfs2_holder_uninit(struct gfs2_holder *gh) 844 { 845 put_pid(gh->gh_owner_pid); 846 gfs2_glock_put(gh->gh_gl); 847 gh->gh_gl = NULL; 848 gh->gh_ip = 0; 849 } 850 851 /** 852 * gfs2_glock_holder_wait 853 * @word: unused 854 * 855 * This function and gfs2_glock_demote_wait both show up in the WCHAN 856 * field. Thus I've separated these otherwise identical functions in 857 * order to be more informative to the user. 858 */ 859 860 static int gfs2_glock_holder_wait(void *word) 861 { 862 schedule(); 863 return 0; 864 } 865 866 static int gfs2_glock_demote_wait(void *word) 867 { 868 schedule(); 869 return 0; 870 } 871 872 static void wait_on_holder(struct gfs2_holder *gh) 873 { 874 unsigned long time1 = jiffies; 875 876 might_sleep(); 877 wait_on_bit(&gh->gh_iflags, HIF_WAIT, gfs2_glock_holder_wait, TASK_UNINTERRUPTIBLE); 878 if (time_after(jiffies, time1 + HZ)) /* have we waited > a second? */ 879 /* Lengthen the minimum hold time. */ 880 gh->gh_gl->gl_hold_time = min(gh->gh_gl->gl_hold_time + 881 GL_GLOCK_HOLD_INCR, 882 GL_GLOCK_MAX_HOLD); 883 } 884 885 static void wait_on_demote(struct gfs2_glock *gl) 886 { 887 might_sleep(); 888 wait_on_bit(&gl->gl_flags, GLF_DEMOTE, gfs2_glock_demote_wait, TASK_UNINTERRUPTIBLE); 889 } 890 891 /** 892 * handle_callback - process a demote request 893 * @gl: the glock 894 * @state: the state the caller wants us to change to 895 * 896 * There are only two requests that we are going to see in actual 897 * practise: LM_ST_SHARED and LM_ST_UNLOCKED 898 */ 899 900 static void handle_callback(struct gfs2_glock *gl, unsigned int state, 901 unsigned long delay) 902 { 903 int bit = delay ? GLF_PENDING_DEMOTE : GLF_DEMOTE; 904 905 set_bit(bit, &gl->gl_flags); 906 if (gl->gl_demote_state == LM_ST_EXCLUSIVE) { 907 gl->gl_demote_state = state; 908 gl->gl_demote_time = jiffies; 909 } else if (gl->gl_demote_state != LM_ST_UNLOCKED && 910 gl->gl_demote_state != state) { 911 gl->gl_demote_state = LM_ST_UNLOCKED; 912 } 913 if (gl->gl_ops->go_callback) 914 gl->gl_ops->go_callback(gl); 915 trace_gfs2_demote_rq(gl); 916 } 917 918 /** 919 * gfs2_glock_wait - wait on a glock acquisition 920 * @gh: the glock holder 921 * 922 * Returns: 0 on success 923 */ 924 925 int gfs2_glock_wait(struct gfs2_holder *gh) 926 { 927 wait_on_holder(gh); 928 return gh->gh_error; 929 } 930 931 void gfs2_print_dbg(struct seq_file *seq, const char *fmt, ...) 932 { 933 struct va_format vaf; 934 va_list args; 935 936 va_start(args, fmt); 937 938 if (seq) { 939 struct gfs2_glock_iter *gi = seq->private; 940 vsprintf(gi->string, fmt, args); 941 seq_printf(seq, gi->string); 942 } else { 943 vaf.fmt = fmt; 944 vaf.va = &args; 945 946 printk(KERN_ERR " %pV", &vaf); 947 } 948 949 va_end(args); 950 } 951 952 /** 953 * add_to_queue - Add a holder to the wait queue (but look for recursion) 954 * @gh: the holder structure to add 955 * 956 * Eventually we should move the recursive locking trap to a 957 * debugging option or something like that. This is the fast 958 * path and needs to have the minimum number of distractions. 959 * 960 */ 961 962 static inline void add_to_queue(struct gfs2_holder *gh) 963 __releases(&gl->gl_spin) 964 __acquires(&gl->gl_spin) 965 { 966 struct gfs2_glock *gl = gh->gh_gl; 967 struct gfs2_sbd *sdp = gl->gl_sbd; 968 struct list_head *insert_pt = NULL; 969 struct gfs2_holder *gh2; 970 int try_lock = 0; 971 972 BUG_ON(gh->gh_owner_pid == NULL); 973 if (test_and_set_bit(HIF_WAIT, &gh->gh_iflags)) 974 BUG(); 975 976 if (gh->gh_flags & (LM_FLAG_TRY | LM_FLAG_TRY_1CB)) { 977 if (test_bit(GLF_LOCK, &gl->gl_flags)) 978 try_lock = 1; 979 if (test_bit(GLF_INVALIDATE_IN_PROGRESS, &gl->gl_flags)) 980 goto fail; 981 } 982 983 list_for_each_entry(gh2, &gl->gl_holders, gh_list) { 984 if (unlikely(gh2->gh_owner_pid == gh->gh_owner_pid && 985 (gh->gh_gl->gl_ops->go_type != LM_TYPE_FLOCK))) 986 goto trap_recursive; 987 if (try_lock && 988 !(gh2->gh_flags & (LM_FLAG_TRY | LM_FLAG_TRY_1CB)) && 989 !may_grant(gl, gh)) { 990 fail: 991 gh->gh_error = GLR_TRYFAILED; 992 gfs2_holder_wake(gh); 993 return; 994 } 995 if (test_bit(HIF_HOLDER, &gh2->gh_iflags)) 996 continue; 997 if (unlikely((gh->gh_flags & LM_FLAG_PRIORITY) && !insert_pt)) 998 insert_pt = &gh2->gh_list; 999 } 1000 set_bit(GLF_QUEUED, &gl->gl_flags); 1001 trace_gfs2_glock_queue(gh, 1); 1002 if (likely(insert_pt == NULL)) { 1003 list_add_tail(&gh->gh_list, &gl->gl_holders); 1004 if (unlikely(gh->gh_flags & LM_FLAG_PRIORITY)) 1005 goto do_cancel; 1006 return; 1007 } 1008 list_add_tail(&gh->gh_list, insert_pt); 1009 do_cancel: 1010 gh = list_entry(gl->gl_holders.next, struct gfs2_holder, gh_list); 1011 if (!(gh->gh_flags & LM_FLAG_PRIORITY)) { 1012 spin_unlock(&gl->gl_spin); 1013 if (sdp->sd_lockstruct.ls_ops->lm_cancel) 1014 sdp->sd_lockstruct.ls_ops->lm_cancel(gl); 1015 spin_lock(&gl->gl_spin); 1016 } 1017 return; 1018 1019 trap_recursive: 1020 print_symbol(KERN_ERR "original: %s\n", gh2->gh_ip); 1021 printk(KERN_ERR "pid: %d\n", pid_nr(gh2->gh_owner_pid)); 1022 printk(KERN_ERR "lock type: %d req lock state : %d\n", 1023 gh2->gh_gl->gl_name.ln_type, gh2->gh_state); 1024 print_symbol(KERN_ERR "new: %s\n", gh->gh_ip); 1025 printk(KERN_ERR "pid: %d\n", pid_nr(gh->gh_owner_pid)); 1026 printk(KERN_ERR "lock type: %d req lock state : %d\n", 1027 gh->gh_gl->gl_name.ln_type, gh->gh_state); 1028 __dump_glock(NULL, gl); 1029 BUG(); 1030 } 1031 1032 /** 1033 * gfs2_glock_nq - enqueue a struct gfs2_holder onto a glock (acquire a glock) 1034 * @gh: the holder structure 1035 * 1036 * if (gh->gh_flags & GL_ASYNC), this never returns an error 1037 * 1038 * Returns: 0, GLR_TRYFAILED, or errno on failure 1039 */ 1040 1041 int gfs2_glock_nq(struct gfs2_holder *gh) 1042 { 1043 struct gfs2_glock *gl = gh->gh_gl; 1044 struct gfs2_sbd *sdp = gl->gl_sbd; 1045 int error = 0; 1046 1047 if (unlikely(test_bit(SDF_SHUTDOWN, &sdp->sd_flags))) 1048 return -EIO; 1049 1050 if (test_bit(GLF_LRU, &gl->gl_flags)) 1051 gfs2_glock_remove_from_lru(gl); 1052 1053 spin_lock(&gl->gl_spin); 1054 add_to_queue(gh); 1055 if ((LM_FLAG_NOEXP & gh->gh_flags) && 1056 test_and_clear_bit(GLF_FROZEN, &gl->gl_flags)) 1057 set_bit(GLF_REPLY_PENDING, &gl->gl_flags); 1058 run_queue(gl, 1); 1059 spin_unlock(&gl->gl_spin); 1060 1061 if (!(gh->gh_flags & GL_ASYNC)) 1062 error = gfs2_glock_wait(gh); 1063 1064 return error; 1065 } 1066 1067 /** 1068 * gfs2_glock_poll - poll to see if an async request has been completed 1069 * @gh: the holder 1070 * 1071 * Returns: 1 if the request is ready to be gfs2_glock_wait()ed on 1072 */ 1073 1074 int gfs2_glock_poll(struct gfs2_holder *gh) 1075 { 1076 return test_bit(HIF_WAIT, &gh->gh_iflags) ? 0 : 1; 1077 } 1078 1079 /** 1080 * gfs2_glock_dq - dequeue a struct gfs2_holder from a glock (release a glock) 1081 * @gh: the glock holder 1082 * 1083 */ 1084 1085 void gfs2_glock_dq(struct gfs2_holder *gh) 1086 { 1087 struct gfs2_glock *gl = gh->gh_gl; 1088 const struct gfs2_glock_operations *glops = gl->gl_ops; 1089 unsigned delay = 0; 1090 int fast_path = 0; 1091 1092 spin_lock(&gl->gl_spin); 1093 if (gh->gh_flags & GL_NOCACHE) 1094 handle_callback(gl, LM_ST_UNLOCKED, 0); 1095 1096 list_del_init(&gh->gh_list); 1097 if (find_first_holder(gl) == NULL) { 1098 if (glops->go_unlock) { 1099 GLOCK_BUG_ON(gl, test_and_set_bit(GLF_LOCK, &gl->gl_flags)); 1100 spin_unlock(&gl->gl_spin); 1101 glops->go_unlock(gh); 1102 spin_lock(&gl->gl_spin); 1103 clear_bit(GLF_LOCK, &gl->gl_flags); 1104 } 1105 if (list_empty(&gl->gl_holders) && 1106 !test_bit(GLF_PENDING_DEMOTE, &gl->gl_flags) && 1107 !test_bit(GLF_DEMOTE, &gl->gl_flags)) 1108 fast_path = 1; 1109 } 1110 if (!test_bit(GLF_LFLUSH, &gl->gl_flags)) 1111 __gfs2_glock_schedule_for_reclaim(gl); 1112 trace_gfs2_glock_queue(gh, 0); 1113 spin_unlock(&gl->gl_spin); 1114 if (likely(fast_path)) 1115 return; 1116 1117 gfs2_glock_hold(gl); 1118 if (test_bit(GLF_PENDING_DEMOTE, &gl->gl_flags) && 1119 !test_bit(GLF_DEMOTE, &gl->gl_flags) && 1120 gl->gl_name.ln_type == LM_TYPE_INODE) 1121 delay = gl->gl_hold_time; 1122 if (queue_delayed_work(glock_workqueue, &gl->gl_work, delay) == 0) 1123 gfs2_glock_put(gl); 1124 } 1125 1126 void gfs2_glock_dq_wait(struct gfs2_holder *gh) 1127 { 1128 struct gfs2_glock *gl = gh->gh_gl; 1129 gfs2_glock_dq(gh); 1130 wait_on_demote(gl); 1131 } 1132 1133 /** 1134 * gfs2_glock_dq_uninit - dequeue a holder from a glock and initialize it 1135 * @gh: the holder structure 1136 * 1137 */ 1138 1139 void gfs2_glock_dq_uninit(struct gfs2_holder *gh) 1140 { 1141 gfs2_glock_dq(gh); 1142 gfs2_holder_uninit(gh); 1143 } 1144 1145 /** 1146 * gfs2_glock_nq_num - acquire a glock based on lock number 1147 * @sdp: the filesystem 1148 * @number: the lock number 1149 * @glops: the glock operations for the type of glock 1150 * @state: the state to acquire the glock in 1151 * @flags: modifier flags for the acquisition 1152 * @gh: the struct gfs2_holder 1153 * 1154 * Returns: errno 1155 */ 1156 1157 int gfs2_glock_nq_num(struct gfs2_sbd *sdp, u64 number, 1158 const struct gfs2_glock_operations *glops, 1159 unsigned int state, int flags, struct gfs2_holder *gh) 1160 { 1161 struct gfs2_glock *gl; 1162 int error; 1163 1164 error = gfs2_glock_get(sdp, number, glops, CREATE, &gl); 1165 if (!error) { 1166 error = gfs2_glock_nq_init(gl, state, flags, gh); 1167 gfs2_glock_put(gl); 1168 } 1169 1170 return error; 1171 } 1172 1173 /** 1174 * glock_compare - Compare two struct gfs2_glock structures for sorting 1175 * @arg_a: the first structure 1176 * @arg_b: the second structure 1177 * 1178 */ 1179 1180 static int glock_compare(const void *arg_a, const void *arg_b) 1181 { 1182 const struct gfs2_holder *gh_a = *(const struct gfs2_holder **)arg_a; 1183 const struct gfs2_holder *gh_b = *(const struct gfs2_holder **)arg_b; 1184 const struct lm_lockname *a = &gh_a->gh_gl->gl_name; 1185 const struct lm_lockname *b = &gh_b->gh_gl->gl_name; 1186 1187 if (a->ln_number > b->ln_number) 1188 return 1; 1189 if (a->ln_number < b->ln_number) 1190 return -1; 1191 BUG_ON(gh_a->gh_gl->gl_ops->go_type == gh_b->gh_gl->gl_ops->go_type); 1192 return 0; 1193 } 1194 1195 /** 1196 * nq_m_sync - synchonously acquire more than one glock in deadlock free order 1197 * @num_gh: the number of structures 1198 * @ghs: an array of struct gfs2_holder structures 1199 * 1200 * Returns: 0 on success (all glocks acquired), 1201 * errno on failure (no glocks acquired) 1202 */ 1203 1204 static int nq_m_sync(unsigned int num_gh, struct gfs2_holder *ghs, 1205 struct gfs2_holder **p) 1206 { 1207 unsigned int x; 1208 int error = 0; 1209 1210 for (x = 0; x < num_gh; x++) 1211 p[x] = &ghs[x]; 1212 1213 sort(p, num_gh, sizeof(struct gfs2_holder *), glock_compare, NULL); 1214 1215 for (x = 0; x < num_gh; x++) { 1216 p[x]->gh_flags &= ~(LM_FLAG_TRY | GL_ASYNC); 1217 1218 error = gfs2_glock_nq(p[x]); 1219 if (error) { 1220 while (x--) 1221 gfs2_glock_dq(p[x]); 1222 break; 1223 } 1224 } 1225 1226 return error; 1227 } 1228 1229 /** 1230 * gfs2_glock_nq_m - acquire multiple glocks 1231 * @num_gh: the number of structures 1232 * @ghs: an array of struct gfs2_holder structures 1233 * 1234 * 1235 * Returns: 0 on success (all glocks acquired), 1236 * errno on failure (no glocks acquired) 1237 */ 1238 1239 int gfs2_glock_nq_m(unsigned int num_gh, struct gfs2_holder *ghs) 1240 { 1241 struct gfs2_holder *tmp[4]; 1242 struct gfs2_holder **pph = tmp; 1243 int error = 0; 1244 1245 switch(num_gh) { 1246 case 0: 1247 return 0; 1248 case 1: 1249 ghs->gh_flags &= ~(LM_FLAG_TRY | GL_ASYNC); 1250 return gfs2_glock_nq(ghs); 1251 default: 1252 if (num_gh <= 4) 1253 break; 1254 pph = kmalloc(num_gh * sizeof(struct gfs2_holder *), GFP_NOFS); 1255 if (!pph) 1256 return -ENOMEM; 1257 } 1258 1259 error = nq_m_sync(num_gh, ghs, pph); 1260 1261 if (pph != tmp) 1262 kfree(pph); 1263 1264 return error; 1265 } 1266 1267 /** 1268 * gfs2_glock_dq_m - release multiple glocks 1269 * @num_gh: the number of structures 1270 * @ghs: an array of struct gfs2_holder structures 1271 * 1272 */ 1273 1274 void gfs2_glock_dq_m(unsigned int num_gh, struct gfs2_holder *ghs) 1275 { 1276 while (num_gh--) 1277 gfs2_glock_dq(&ghs[num_gh]); 1278 } 1279 1280 /** 1281 * gfs2_glock_dq_uninit_m - release multiple glocks 1282 * @num_gh: the number of structures 1283 * @ghs: an array of struct gfs2_holder structures 1284 * 1285 */ 1286 1287 void gfs2_glock_dq_uninit_m(unsigned int num_gh, struct gfs2_holder *ghs) 1288 { 1289 while (num_gh--) 1290 gfs2_glock_dq_uninit(&ghs[num_gh]); 1291 } 1292 1293 void gfs2_glock_cb(struct gfs2_glock *gl, unsigned int state) 1294 { 1295 unsigned long delay = 0; 1296 unsigned long holdtime; 1297 unsigned long now = jiffies; 1298 1299 gfs2_glock_hold(gl); 1300 holdtime = gl->gl_tchange + gl->gl_hold_time; 1301 if (test_bit(GLF_QUEUED, &gl->gl_flags) && 1302 gl->gl_name.ln_type == LM_TYPE_INODE) { 1303 if (time_before(now, holdtime)) 1304 delay = holdtime - now; 1305 if (test_bit(GLF_REPLY_PENDING, &gl->gl_flags)) 1306 delay = gl->gl_hold_time; 1307 } 1308 1309 spin_lock(&gl->gl_spin); 1310 handle_callback(gl, state, delay); 1311 spin_unlock(&gl->gl_spin); 1312 if (queue_delayed_work(glock_workqueue, &gl->gl_work, delay) == 0) 1313 gfs2_glock_put(gl); 1314 } 1315 1316 /** 1317 * gfs2_should_freeze - Figure out if glock should be frozen 1318 * @gl: The glock in question 1319 * 1320 * Glocks are not frozen if (a) the result of the dlm operation is 1321 * an error, (b) the locking operation was an unlock operation or 1322 * (c) if there is a "noexp" flagged request anywhere in the queue 1323 * 1324 * Returns: 1 if freezing should occur, 0 otherwise 1325 */ 1326 1327 static int gfs2_should_freeze(const struct gfs2_glock *gl) 1328 { 1329 const struct gfs2_holder *gh; 1330 1331 if (gl->gl_reply & ~LM_OUT_ST_MASK) 1332 return 0; 1333 if (gl->gl_target == LM_ST_UNLOCKED) 1334 return 0; 1335 1336 list_for_each_entry(gh, &gl->gl_holders, gh_list) { 1337 if (test_bit(HIF_HOLDER, &gh->gh_iflags)) 1338 continue; 1339 if (LM_FLAG_NOEXP & gh->gh_flags) 1340 return 0; 1341 } 1342 1343 return 1; 1344 } 1345 1346 /** 1347 * gfs2_glock_complete - Callback used by locking 1348 * @gl: Pointer to the glock 1349 * @ret: The return value from the dlm 1350 * 1351 * The gl_reply field is under the gl_spin lock so that it is ok 1352 * to use a bitfield shared with other glock state fields. 1353 */ 1354 1355 void gfs2_glock_complete(struct gfs2_glock *gl, int ret) 1356 { 1357 struct lm_lockstruct *ls = &gl->gl_sbd->sd_lockstruct; 1358 1359 spin_lock(&gl->gl_spin); 1360 gl->gl_reply = ret; 1361 1362 if (unlikely(test_bit(DFL_BLOCK_LOCKS, &ls->ls_recover_flags))) { 1363 if (gfs2_should_freeze(gl)) { 1364 set_bit(GLF_FROZEN, &gl->gl_flags); 1365 spin_unlock(&gl->gl_spin); 1366 return; 1367 } 1368 } 1369 1370 spin_unlock(&gl->gl_spin); 1371 set_bit(GLF_REPLY_PENDING, &gl->gl_flags); 1372 smp_wmb(); 1373 gfs2_glock_hold(gl); 1374 if (queue_delayed_work(glock_workqueue, &gl->gl_work, 0) == 0) 1375 gfs2_glock_put(gl); 1376 } 1377 1378 1379 static int gfs2_shrink_glock_memory(struct shrinker *shrink, 1380 struct shrink_control *sc) 1381 { 1382 struct gfs2_glock *gl; 1383 int may_demote; 1384 int nr_skipped = 0; 1385 int nr = sc->nr_to_scan; 1386 gfp_t gfp_mask = sc->gfp_mask; 1387 LIST_HEAD(skipped); 1388 1389 if (nr == 0) 1390 goto out; 1391 1392 if (!(gfp_mask & __GFP_FS)) 1393 return -1; 1394 1395 spin_lock(&lru_lock); 1396 while(nr && !list_empty(&lru_list)) { 1397 gl = list_entry(lru_list.next, struct gfs2_glock, gl_lru); 1398 list_del_init(&gl->gl_lru); 1399 clear_bit(GLF_LRU, &gl->gl_flags); 1400 atomic_dec(&lru_count); 1401 1402 /* Test for being demotable */ 1403 if (!test_and_set_bit(GLF_LOCK, &gl->gl_flags)) { 1404 gfs2_glock_hold(gl); 1405 spin_unlock(&lru_lock); 1406 spin_lock(&gl->gl_spin); 1407 may_demote = demote_ok(gl); 1408 if (may_demote) { 1409 handle_callback(gl, LM_ST_UNLOCKED, 0); 1410 nr--; 1411 } 1412 clear_bit(GLF_LOCK, &gl->gl_flags); 1413 smp_mb__after_clear_bit(); 1414 if (queue_delayed_work(glock_workqueue, &gl->gl_work, 0) == 0) 1415 gfs2_glock_put_nolock(gl); 1416 spin_unlock(&gl->gl_spin); 1417 spin_lock(&lru_lock); 1418 continue; 1419 } 1420 nr_skipped++; 1421 list_add(&gl->gl_lru, &skipped); 1422 set_bit(GLF_LRU, &gl->gl_flags); 1423 } 1424 list_splice(&skipped, &lru_list); 1425 atomic_add(nr_skipped, &lru_count); 1426 spin_unlock(&lru_lock); 1427 out: 1428 return (atomic_read(&lru_count) / 100) * sysctl_vfs_cache_pressure; 1429 } 1430 1431 static struct shrinker glock_shrinker = { 1432 .shrink = gfs2_shrink_glock_memory, 1433 .seeks = DEFAULT_SEEKS, 1434 }; 1435 1436 /** 1437 * examine_bucket - Call a function for glock in a hash bucket 1438 * @examiner: the function 1439 * @sdp: the filesystem 1440 * @bucket: the bucket 1441 * 1442 */ 1443 1444 static void examine_bucket(glock_examiner examiner, const struct gfs2_sbd *sdp, 1445 unsigned int hash) 1446 { 1447 struct gfs2_glock *gl; 1448 struct hlist_bl_head *head = &gl_hash_table[hash]; 1449 struct hlist_bl_node *pos; 1450 1451 rcu_read_lock(); 1452 hlist_bl_for_each_entry_rcu(gl, pos, head, gl_list) { 1453 if ((gl->gl_sbd == sdp) && atomic_read(&gl->gl_ref)) 1454 examiner(gl); 1455 } 1456 rcu_read_unlock(); 1457 cond_resched(); 1458 } 1459 1460 static void glock_hash_walk(glock_examiner examiner, const struct gfs2_sbd *sdp) 1461 { 1462 unsigned x; 1463 1464 for (x = 0; x < GFS2_GL_HASH_SIZE; x++) 1465 examine_bucket(examiner, sdp, x); 1466 } 1467 1468 1469 /** 1470 * thaw_glock - thaw out a glock which has an unprocessed reply waiting 1471 * @gl: The glock to thaw 1472 * 1473 * N.B. When we freeze a glock, we leave a ref to the glock outstanding, 1474 * so this has to result in the ref count being dropped by one. 1475 */ 1476 1477 static void thaw_glock(struct gfs2_glock *gl) 1478 { 1479 if (!test_and_clear_bit(GLF_FROZEN, &gl->gl_flags)) 1480 return; 1481 set_bit(GLF_REPLY_PENDING, &gl->gl_flags); 1482 gfs2_glock_hold(gl); 1483 if (queue_delayed_work(glock_workqueue, &gl->gl_work, 0) == 0) 1484 gfs2_glock_put(gl); 1485 } 1486 1487 /** 1488 * clear_glock - look at a glock and see if we can free it from glock cache 1489 * @gl: the glock to look at 1490 * 1491 */ 1492 1493 static void clear_glock(struct gfs2_glock *gl) 1494 { 1495 gfs2_glock_remove_from_lru(gl); 1496 1497 spin_lock(&gl->gl_spin); 1498 if (gl->gl_state != LM_ST_UNLOCKED) 1499 handle_callback(gl, LM_ST_UNLOCKED, 0); 1500 spin_unlock(&gl->gl_spin); 1501 gfs2_glock_hold(gl); 1502 if (queue_delayed_work(glock_workqueue, &gl->gl_work, 0) == 0) 1503 gfs2_glock_put(gl); 1504 } 1505 1506 /** 1507 * gfs2_glock_thaw - Thaw any frozen glocks 1508 * @sdp: The super block 1509 * 1510 */ 1511 1512 void gfs2_glock_thaw(struct gfs2_sbd *sdp) 1513 { 1514 glock_hash_walk(thaw_glock, sdp); 1515 } 1516 1517 static int dump_glock(struct seq_file *seq, struct gfs2_glock *gl) 1518 { 1519 int ret; 1520 spin_lock(&gl->gl_spin); 1521 ret = __dump_glock(seq, gl); 1522 spin_unlock(&gl->gl_spin); 1523 return ret; 1524 } 1525 1526 static void dump_glock_func(struct gfs2_glock *gl) 1527 { 1528 dump_glock(NULL, gl); 1529 } 1530 1531 /** 1532 * gfs2_gl_hash_clear - Empty out the glock hash table 1533 * @sdp: the filesystem 1534 * @wait: wait until it's all gone 1535 * 1536 * Called when unmounting the filesystem. 1537 */ 1538 1539 void gfs2_gl_hash_clear(struct gfs2_sbd *sdp) 1540 { 1541 glock_hash_walk(clear_glock, sdp); 1542 flush_workqueue(glock_workqueue); 1543 wait_event(sdp->sd_glock_wait, atomic_read(&sdp->sd_glock_disposal) == 0); 1544 glock_hash_walk(dump_glock_func, sdp); 1545 } 1546 1547 void gfs2_glock_finish_truncate(struct gfs2_inode *ip) 1548 { 1549 struct gfs2_glock *gl = ip->i_gl; 1550 int ret; 1551 1552 ret = gfs2_truncatei_resume(ip); 1553 gfs2_assert_withdraw(gl->gl_sbd, ret == 0); 1554 1555 spin_lock(&gl->gl_spin); 1556 clear_bit(GLF_LOCK, &gl->gl_flags); 1557 run_queue(gl, 1); 1558 spin_unlock(&gl->gl_spin); 1559 } 1560 1561 static const char *state2str(unsigned state) 1562 { 1563 switch(state) { 1564 case LM_ST_UNLOCKED: 1565 return "UN"; 1566 case LM_ST_SHARED: 1567 return "SH"; 1568 case LM_ST_DEFERRED: 1569 return "DF"; 1570 case LM_ST_EXCLUSIVE: 1571 return "EX"; 1572 } 1573 return "??"; 1574 } 1575 1576 static const char *hflags2str(char *buf, unsigned flags, unsigned long iflags) 1577 { 1578 char *p = buf; 1579 if (flags & LM_FLAG_TRY) 1580 *p++ = 't'; 1581 if (flags & LM_FLAG_TRY_1CB) 1582 *p++ = 'T'; 1583 if (flags & LM_FLAG_NOEXP) 1584 *p++ = 'e'; 1585 if (flags & LM_FLAG_ANY) 1586 *p++ = 'A'; 1587 if (flags & LM_FLAG_PRIORITY) 1588 *p++ = 'p'; 1589 if (flags & GL_ASYNC) 1590 *p++ = 'a'; 1591 if (flags & GL_EXACT) 1592 *p++ = 'E'; 1593 if (flags & GL_NOCACHE) 1594 *p++ = 'c'; 1595 if (test_bit(HIF_HOLDER, &iflags)) 1596 *p++ = 'H'; 1597 if (test_bit(HIF_WAIT, &iflags)) 1598 *p++ = 'W'; 1599 if (test_bit(HIF_FIRST, &iflags)) 1600 *p++ = 'F'; 1601 *p = 0; 1602 return buf; 1603 } 1604 1605 /** 1606 * dump_holder - print information about a glock holder 1607 * @seq: the seq_file struct 1608 * @gh: the glock holder 1609 * 1610 * Returns: 0 on success, -ENOBUFS when we run out of space 1611 */ 1612 1613 static int dump_holder(struct seq_file *seq, const struct gfs2_holder *gh) 1614 { 1615 struct task_struct *gh_owner = NULL; 1616 char flags_buf[32]; 1617 1618 if (gh->gh_owner_pid) 1619 gh_owner = pid_task(gh->gh_owner_pid, PIDTYPE_PID); 1620 gfs2_print_dbg(seq, " H: s:%s f:%s e:%d p:%ld [%s] %pS\n", 1621 state2str(gh->gh_state), 1622 hflags2str(flags_buf, gh->gh_flags, gh->gh_iflags), 1623 gh->gh_error, 1624 gh->gh_owner_pid ? (long)pid_nr(gh->gh_owner_pid) : -1, 1625 gh_owner ? gh_owner->comm : "(ended)", 1626 (void *)gh->gh_ip); 1627 return 0; 1628 } 1629 1630 static const char *gflags2str(char *buf, const struct gfs2_glock *gl) 1631 { 1632 const unsigned long *gflags = &gl->gl_flags; 1633 char *p = buf; 1634 1635 if (test_bit(GLF_LOCK, gflags)) 1636 *p++ = 'l'; 1637 if (test_bit(GLF_DEMOTE, gflags)) 1638 *p++ = 'D'; 1639 if (test_bit(GLF_PENDING_DEMOTE, gflags)) 1640 *p++ = 'd'; 1641 if (test_bit(GLF_DEMOTE_IN_PROGRESS, gflags)) 1642 *p++ = 'p'; 1643 if (test_bit(GLF_DIRTY, gflags)) 1644 *p++ = 'y'; 1645 if (test_bit(GLF_LFLUSH, gflags)) 1646 *p++ = 'f'; 1647 if (test_bit(GLF_INVALIDATE_IN_PROGRESS, gflags)) 1648 *p++ = 'i'; 1649 if (test_bit(GLF_REPLY_PENDING, gflags)) 1650 *p++ = 'r'; 1651 if (test_bit(GLF_INITIAL, gflags)) 1652 *p++ = 'I'; 1653 if (test_bit(GLF_FROZEN, gflags)) 1654 *p++ = 'F'; 1655 if (test_bit(GLF_QUEUED, gflags)) 1656 *p++ = 'q'; 1657 if (test_bit(GLF_LRU, gflags)) 1658 *p++ = 'L'; 1659 if (gl->gl_object) 1660 *p++ = 'o'; 1661 *p = 0; 1662 return buf; 1663 } 1664 1665 /** 1666 * __dump_glock - print information about a glock 1667 * @seq: The seq_file struct 1668 * @gl: the glock 1669 * 1670 * The file format is as follows: 1671 * One line per object, capital letters are used to indicate objects 1672 * G = glock, I = Inode, R = rgrp, H = holder. Glocks are not indented, 1673 * other objects are indented by a single space and follow the glock to 1674 * which they are related. Fields are indicated by lower case letters 1675 * followed by a colon and the field value, except for strings which are in 1676 * [] so that its possible to see if they are composed of spaces for 1677 * example. The field's are n = number (id of the object), f = flags, 1678 * t = type, s = state, r = refcount, e = error, p = pid. 1679 * 1680 * Returns: 0 on success, -ENOBUFS when we run out of space 1681 */ 1682 1683 static int __dump_glock(struct seq_file *seq, const struct gfs2_glock *gl) 1684 { 1685 const struct gfs2_glock_operations *glops = gl->gl_ops; 1686 unsigned long long dtime; 1687 const struct gfs2_holder *gh; 1688 char gflags_buf[32]; 1689 int error = 0; 1690 1691 dtime = jiffies - gl->gl_demote_time; 1692 dtime *= 1000000/HZ; /* demote time in uSec */ 1693 if (!test_bit(GLF_DEMOTE, &gl->gl_flags)) 1694 dtime = 0; 1695 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", 1696 state2str(gl->gl_state), 1697 gl->gl_name.ln_type, 1698 (unsigned long long)gl->gl_name.ln_number, 1699 gflags2str(gflags_buf, gl), 1700 state2str(gl->gl_target), 1701 state2str(gl->gl_demote_state), dtime, 1702 atomic_read(&gl->gl_ail_count), 1703 atomic_read(&gl->gl_revokes), 1704 atomic_read(&gl->gl_ref), gl->gl_hold_time); 1705 1706 list_for_each_entry(gh, &gl->gl_holders, gh_list) { 1707 error = dump_holder(seq, gh); 1708 if (error) 1709 goto out; 1710 } 1711 if (gl->gl_state != LM_ST_UNLOCKED && glops->go_dump) 1712 error = glops->go_dump(seq, gl); 1713 out: 1714 return error; 1715 } 1716 1717 1718 1719 1720 int __init gfs2_glock_init(void) 1721 { 1722 unsigned i; 1723 for(i = 0; i < GFS2_GL_HASH_SIZE; i++) { 1724 INIT_HLIST_BL_HEAD(&gl_hash_table[i]); 1725 } 1726 1727 glock_workqueue = alloc_workqueue("glock_workqueue", WQ_MEM_RECLAIM | 1728 WQ_HIGHPRI | WQ_FREEZABLE, 0); 1729 if (IS_ERR(glock_workqueue)) 1730 return PTR_ERR(glock_workqueue); 1731 gfs2_delete_workqueue = alloc_workqueue("delete_workqueue", 1732 WQ_MEM_RECLAIM | WQ_FREEZABLE, 1733 0); 1734 if (IS_ERR(gfs2_delete_workqueue)) { 1735 destroy_workqueue(glock_workqueue); 1736 return PTR_ERR(gfs2_delete_workqueue); 1737 } 1738 1739 register_shrinker(&glock_shrinker); 1740 1741 return 0; 1742 } 1743 1744 void gfs2_glock_exit(void) 1745 { 1746 unregister_shrinker(&glock_shrinker); 1747 destroy_workqueue(glock_workqueue); 1748 destroy_workqueue(gfs2_delete_workqueue); 1749 } 1750 1751 static inline struct gfs2_glock *glock_hash_chain(unsigned hash) 1752 { 1753 return hlist_bl_entry(hlist_bl_first_rcu(&gl_hash_table[hash]), 1754 struct gfs2_glock, gl_list); 1755 } 1756 1757 static inline struct gfs2_glock *glock_hash_next(struct gfs2_glock *gl) 1758 { 1759 return hlist_bl_entry(rcu_dereference(gl->gl_list.next), 1760 struct gfs2_glock, gl_list); 1761 } 1762 1763 static int gfs2_glock_iter_next(struct gfs2_glock_iter *gi) 1764 { 1765 struct gfs2_glock *gl; 1766 1767 do { 1768 gl = gi->gl; 1769 if (gl) { 1770 gi->gl = glock_hash_next(gl); 1771 } else { 1772 gi->gl = glock_hash_chain(gi->hash); 1773 } 1774 while (gi->gl == NULL) { 1775 gi->hash++; 1776 if (gi->hash >= GFS2_GL_HASH_SIZE) { 1777 rcu_read_unlock(); 1778 return 1; 1779 } 1780 gi->gl = glock_hash_chain(gi->hash); 1781 } 1782 /* Skip entries for other sb and dead entries */ 1783 } while (gi->sdp != gi->gl->gl_sbd || atomic_read(&gi->gl->gl_ref) == 0); 1784 1785 return 0; 1786 } 1787 1788 static void *gfs2_glock_seq_start(struct seq_file *seq, loff_t *pos) 1789 { 1790 struct gfs2_glock_iter *gi = seq->private; 1791 loff_t n = *pos; 1792 1793 gi->hash = 0; 1794 rcu_read_lock(); 1795 1796 do { 1797 if (gfs2_glock_iter_next(gi)) 1798 return NULL; 1799 } while (n--); 1800 1801 return gi->gl; 1802 } 1803 1804 static void *gfs2_glock_seq_next(struct seq_file *seq, void *iter_ptr, 1805 loff_t *pos) 1806 { 1807 struct gfs2_glock_iter *gi = seq->private; 1808 1809 (*pos)++; 1810 1811 if (gfs2_glock_iter_next(gi)) 1812 return NULL; 1813 1814 return gi->gl; 1815 } 1816 1817 static void gfs2_glock_seq_stop(struct seq_file *seq, void *iter_ptr) 1818 { 1819 struct gfs2_glock_iter *gi = seq->private; 1820 1821 if (gi->gl) 1822 rcu_read_unlock(); 1823 gi->gl = NULL; 1824 } 1825 1826 static int gfs2_glock_seq_show(struct seq_file *seq, void *iter_ptr) 1827 { 1828 return dump_glock(seq, iter_ptr); 1829 } 1830 1831 static const struct seq_operations gfs2_glock_seq_ops = { 1832 .start = gfs2_glock_seq_start, 1833 .next = gfs2_glock_seq_next, 1834 .stop = gfs2_glock_seq_stop, 1835 .show = gfs2_glock_seq_show, 1836 }; 1837 1838 static int gfs2_debugfs_open(struct inode *inode, struct file *file) 1839 { 1840 int ret = seq_open_private(file, &gfs2_glock_seq_ops, 1841 sizeof(struct gfs2_glock_iter)); 1842 if (ret == 0) { 1843 struct seq_file *seq = file->private_data; 1844 struct gfs2_glock_iter *gi = seq->private; 1845 gi->sdp = inode->i_private; 1846 } 1847 return ret; 1848 } 1849 1850 static const struct file_operations gfs2_debug_fops = { 1851 .owner = THIS_MODULE, 1852 .open = gfs2_debugfs_open, 1853 .read = seq_read, 1854 .llseek = seq_lseek, 1855 .release = seq_release_private, 1856 }; 1857 1858 int gfs2_create_debugfs_file(struct gfs2_sbd *sdp) 1859 { 1860 sdp->debugfs_dir = debugfs_create_dir(sdp->sd_table_name, gfs2_root); 1861 if (!sdp->debugfs_dir) 1862 return -ENOMEM; 1863 sdp->debugfs_dentry_glocks = debugfs_create_file("glocks", 1864 S_IFREG | S_IRUGO, 1865 sdp->debugfs_dir, sdp, 1866 &gfs2_debug_fops); 1867 if (!sdp->debugfs_dentry_glocks) 1868 return -ENOMEM; 1869 1870 return 0; 1871 } 1872 1873 void gfs2_delete_debugfs_file(struct gfs2_sbd *sdp) 1874 { 1875 if (sdp && sdp->debugfs_dir) { 1876 if (sdp->debugfs_dentry_glocks) { 1877 debugfs_remove(sdp->debugfs_dentry_glocks); 1878 sdp->debugfs_dentry_glocks = NULL; 1879 } 1880 debugfs_remove(sdp->debugfs_dir); 1881 sdp->debugfs_dir = NULL; 1882 } 1883 } 1884 1885 int gfs2_register_debugfs(void) 1886 { 1887 gfs2_root = debugfs_create_dir("gfs2", NULL); 1888 return gfs2_root ? 0 : -ENOMEM; 1889 } 1890 1891 void gfs2_unregister_debugfs(void) 1892 { 1893 debugfs_remove(gfs2_root); 1894 gfs2_root = NULL; 1895 } 1896