diff options
author | Sunil Mushran <sunil.mushran@oracle.com> | 2010-12-20 19:34:59 -0500 |
---|---|---|
committer | Joel Becker <joel.becker@oracle.com> | 2010-12-22 21:34:44 -0500 |
commit | 02bd9c394ef64a16a313eb4d968a94b7000c5d00 (patch) | |
tree | 69edec6d1e1db064b27e7c09ffdfe7ca6cf9d395 /fs/ocfs2 | |
parent | 1e6d9153df27923649976554d034a69ac7b28f95 (diff) |
ocfs2/dlm: Cleanup dlmdebug.c
Remove struct debug_buffer in dlmdebug.c/h.
Signed-off-by: Sunil Mushran <sunil.mushran@oracle.com>
Signed-off-by: Joel Becker <joel.becker@oracle.com>
Diffstat (limited to 'fs/ocfs2')
-rw-r--r-- | fs/ocfs2/dlm/dlmdebug.c | 178 | ||||
-rw-r--r-- | fs/ocfs2/dlm/dlmdebug.h | 5 |
2 files changed, 66 insertions, 117 deletions
diff --git a/fs/ocfs2/dlm/dlmdebug.c b/fs/ocfs2/dlm/dlmdebug.c index 272ec8631a51..77199ca4409a 100644 --- a/fs/ocfs2/dlm/dlmdebug.c +++ b/fs/ocfs2/dlm/dlmdebug.c | |||
@@ -370,92 +370,46 @@ static void dlm_debug_get(struct dlm_debug_ctxt *dc) | |||
370 | kref_get(&dc->debug_refcnt); | 370 | kref_get(&dc->debug_refcnt); |
371 | } | 371 | } |
372 | 372 | ||
373 | static struct debug_buffer *debug_buffer_allocate(void) | 373 | static int debug_release(struct inode *inode, struct file *file) |
374 | { | 374 | { |
375 | struct debug_buffer *db = NULL; | 375 | free_page((unsigned long)file->private_data); |
376 | 376 | return 0; | |
377 | db = kzalloc(sizeof(struct debug_buffer), GFP_KERNEL); | ||
378 | if (!db) | ||
379 | goto bail; | ||
380 | |||
381 | db->len = PAGE_SIZE; | ||
382 | db->buf = kmalloc(db->len, GFP_KERNEL); | ||
383 | if (!db->buf) | ||
384 | goto bail; | ||
385 | |||
386 | return db; | ||
387 | bail: | ||
388 | kfree(db); | ||
389 | return NULL; | ||
390 | } | ||
391 | |||
392 | static ssize_t debug_buffer_read(struct file *file, char __user *buf, | ||
393 | size_t nbytes, loff_t *ppos) | ||
394 | { | ||
395 | struct debug_buffer *db = file->private_data; | ||
396 | |||
397 | return simple_read_from_buffer(buf, nbytes, ppos, db->buf, db->len); | ||
398 | } | ||
399 | |||
400 | static loff_t debug_buffer_llseek(struct file *file, loff_t off, int whence) | ||
401 | { | ||
402 | struct debug_buffer *db = file->private_data; | ||
403 | loff_t new = -1; | ||
404 | |||
405 | switch (whence) { | ||
406 | case 0: | ||
407 | new = off; | ||
408 | break; | ||
409 | case 1: | ||
410 | new = file->f_pos + off; | ||
411 | break; | ||
412 | } | ||
413 | |||
414 | if (new < 0 || new > db->len) | ||
415 | return -EINVAL; | ||
416 | |||
417 | return (file->f_pos = new); | ||
418 | } | 377 | } |
419 | 378 | ||
420 | static int debug_buffer_release(struct inode *inode, struct file *file) | 379 | static ssize_t debug_read(struct file *file, char __user *buf, |
380 | size_t nbytes, loff_t *ppos) | ||
421 | { | 381 | { |
422 | struct debug_buffer *db = file->private_data; | 382 | return simple_read_from_buffer(buf, nbytes, ppos, file->private_data, |
423 | 383 | i_size_read(file->f_mapping->host)); | |
424 | if (db) | ||
425 | kfree(db->buf); | ||
426 | kfree(db); | ||
427 | |||
428 | return 0; | ||
429 | } | 384 | } |
430 | /* end - util funcs */ | 385 | /* end - util funcs */ |
431 | 386 | ||
432 | /* begin - purge list funcs */ | 387 | /* begin - purge list funcs */ |
433 | static int debug_purgelist_print(struct dlm_ctxt *dlm, struct debug_buffer *db) | 388 | static int debug_purgelist_print(struct dlm_ctxt *dlm, char *buf, int len) |
434 | { | 389 | { |
435 | struct dlm_lock_resource *res; | 390 | struct dlm_lock_resource *res; |
436 | int out = 0; | 391 | int out = 0; |
437 | unsigned long total = 0; | 392 | unsigned long total = 0; |
438 | 393 | ||
439 | out += snprintf(db->buf + out, db->len - out, | 394 | out += snprintf(buf + out, len - out, |
440 | "Dumping Purgelist for Domain: %s\n", dlm->name); | 395 | "Dumping Purgelist for Domain: %s\n", dlm->name); |
441 | 396 | ||
442 | spin_lock(&dlm->spinlock); | 397 | spin_lock(&dlm->spinlock); |
443 | list_for_each_entry(res, &dlm->purge_list, purge) { | 398 | list_for_each_entry(res, &dlm->purge_list, purge) { |
444 | ++total; | 399 | ++total; |
445 | if (db->len - out < 100) | 400 | if (len - out < 100) |
446 | continue; | 401 | continue; |
447 | spin_lock(&res->spinlock); | 402 | spin_lock(&res->spinlock); |
448 | out += stringify_lockname(res->lockname.name, | 403 | out += stringify_lockname(res->lockname.name, |
449 | res->lockname.len, | 404 | res->lockname.len, |
450 | db->buf + out, db->len - out); | 405 | buf + out, len - out); |
451 | out += snprintf(db->buf + out, db->len - out, "\t%ld\n", | 406 | out += snprintf(buf + out, len - out, "\t%ld\n", |
452 | (jiffies - res->last_used)/HZ); | 407 | (jiffies - res->last_used)/HZ); |
453 | spin_unlock(&res->spinlock); | 408 | spin_unlock(&res->spinlock); |
454 | } | 409 | } |
455 | spin_unlock(&dlm->spinlock); | 410 | spin_unlock(&dlm->spinlock); |
456 | 411 | ||
457 | out += snprintf(db->buf + out, db->len - out, | 412 | out += snprintf(buf + out, len - out, "Total on list: %ld\n", total); |
458 | "Total on list: %ld\n", total); | ||
459 | 413 | ||
460 | return out; | 414 | return out; |
461 | } | 415 | } |
@@ -463,15 +417,15 @@ static int debug_purgelist_print(struct dlm_ctxt *dlm, struct debug_buffer *db) | |||
463 | static int debug_purgelist_open(struct inode *inode, struct file *file) | 417 | static int debug_purgelist_open(struct inode *inode, struct file *file) |
464 | { | 418 | { |
465 | struct dlm_ctxt *dlm = inode->i_private; | 419 | struct dlm_ctxt *dlm = inode->i_private; |
466 | struct debug_buffer *db; | 420 | char *buf = NULL; |
467 | 421 | ||
468 | db = debug_buffer_allocate(); | 422 | buf = (char *) get_zeroed_page(GFP_NOFS); |
469 | if (!db) | 423 | if (!buf) |
470 | goto bail; | 424 | goto bail; |
471 | 425 | ||
472 | db->len = debug_purgelist_print(dlm, db); | 426 | i_size_write(inode, debug_purgelist_print(dlm, buf, PAGE_SIZE - 1)); |
473 | 427 | ||
474 | file->private_data = db; | 428 | file->private_data = buf; |
475 | 429 | ||
476 | return 0; | 430 | return 0; |
477 | bail: | 431 | bail: |
@@ -480,14 +434,14 @@ bail: | |||
480 | 434 | ||
481 | static const struct file_operations debug_purgelist_fops = { | 435 | static const struct file_operations debug_purgelist_fops = { |
482 | .open = debug_purgelist_open, | 436 | .open = debug_purgelist_open, |
483 | .release = debug_buffer_release, | 437 | .release = debug_release, |
484 | .read = debug_buffer_read, | 438 | .read = debug_read, |
485 | .llseek = debug_buffer_llseek, | 439 | .llseek = generic_file_llseek, |
486 | }; | 440 | }; |
487 | /* end - purge list funcs */ | 441 | /* end - purge list funcs */ |
488 | 442 | ||
489 | /* begin - debug mle funcs */ | 443 | /* begin - debug mle funcs */ |
490 | static int debug_mle_print(struct dlm_ctxt *dlm, struct debug_buffer *db) | 444 | static int debug_mle_print(struct dlm_ctxt *dlm, char *buf, int len) |
491 | { | 445 | { |
492 | struct dlm_master_list_entry *mle; | 446 | struct dlm_master_list_entry *mle; |
493 | struct hlist_head *bucket; | 447 | struct hlist_head *bucket; |
@@ -495,7 +449,7 @@ static int debug_mle_print(struct dlm_ctxt *dlm, struct debug_buffer *db) | |||
495 | int i, out = 0; | 449 | int i, out = 0; |
496 | unsigned long total = 0, longest = 0, bucket_count = 0; | 450 | unsigned long total = 0, longest = 0, bucket_count = 0; |
497 | 451 | ||
498 | out += snprintf(db->buf + out, db->len - out, | 452 | out += snprintf(buf + out, len - out, |
499 | "Dumping MLEs for Domain: %s\n", dlm->name); | 453 | "Dumping MLEs for Domain: %s\n", dlm->name); |
500 | 454 | ||
501 | spin_lock(&dlm->master_lock); | 455 | spin_lock(&dlm->master_lock); |
@@ -506,16 +460,16 @@ static int debug_mle_print(struct dlm_ctxt *dlm, struct debug_buffer *db) | |||
506 | master_hash_node); | 460 | master_hash_node); |
507 | ++total; | 461 | ++total; |
508 | ++bucket_count; | 462 | ++bucket_count; |
509 | if (db->len - out < 200) | 463 | if (len - out < 200) |
510 | continue; | 464 | continue; |
511 | out += dump_mle(mle, db->buf + out, db->len - out); | 465 | out += dump_mle(mle, buf + out, len - out); |
512 | } | 466 | } |
513 | longest = max(longest, bucket_count); | 467 | longest = max(longest, bucket_count); |
514 | bucket_count = 0; | 468 | bucket_count = 0; |
515 | } | 469 | } |
516 | spin_unlock(&dlm->master_lock); | 470 | spin_unlock(&dlm->master_lock); |
517 | 471 | ||
518 | out += snprintf(db->buf + out, db->len - out, | 472 | out += snprintf(buf + out, len - out, |
519 | "Total: %ld, Longest: %ld\n", total, longest); | 473 | "Total: %ld, Longest: %ld\n", total, longest); |
520 | return out; | 474 | return out; |
521 | } | 475 | } |
@@ -523,15 +477,15 @@ static int debug_mle_print(struct dlm_ctxt *dlm, struct debug_buffer *db) | |||
523 | static int debug_mle_open(struct inode *inode, struct file *file) | 477 | static int debug_mle_open(struct inode *inode, struct file *file) |
524 | { | 478 | { |
525 | struct dlm_ctxt *dlm = inode->i_private; | 479 | struct dlm_ctxt *dlm = inode->i_private; |
526 | struct debug_buffer *db; | 480 | char *buf = NULL; |
527 | 481 | ||
528 | db = debug_buffer_allocate(); | 482 | buf = (char *) get_zeroed_page(GFP_NOFS); |
529 | if (!db) | 483 | if (!buf) |
530 | goto bail; | 484 | goto bail; |
531 | 485 | ||
532 | db->len = debug_mle_print(dlm, db); | 486 | i_size_write(inode, debug_mle_print(dlm, buf, PAGE_SIZE - 1)); |
533 | 487 | ||
534 | file->private_data = db; | 488 | file->private_data = buf; |
535 | 489 | ||
536 | return 0; | 490 | return 0; |
537 | bail: | 491 | bail: |
@@ -540,9 +494,9 @@ bail: | |||
540 | 494 | ||
541 | static const struct file_operations debug_mle_fops = { | 495 | static const struct file_operations debug_mle_fops = { |
542 | .open = debug_mle_open, | 496 | .open = debug_mle_open, |
543 | .release = debug_buffer_release, | 497 | .release = debug_release, |
544 | .read = debug_buffer_read, | 498 | .read = debug_read, |
545 | .llseek = debug_buffer_llseek, | 499 | .llseek = generic_file_llseek, |
546 | }; | 500 | }; |
547 | 501 | ||
548 | /* end - debug mle funcs */ | 502 | /* end - debug mle funcs */ |
@@ -757,7 +711,7 @@ static const struct file_operations debug_lockres_fops = { | |||
757 | /* end - debug lockres funcs */ | 711 | /* end - debug lockres funcs */ |
758 | 712 | ||
759 | /* begin - debug state funcs */ | 713 | /* begin - debug state funcs */ |
760 | static int debug_state_print(struct dlm_ctxt *dlm, struct debug_buffer *db) | 714 | static int debug_state_print(struct dlm_ctxt *dlm, char *buf, int len) |
761 | { | 715 | { |
762 | int out = 0; | 716 | int out = 0; |
763 | struct dlm_reco_node_data *node; | 717 | struct dlm_reco_node_data *node; |
@@ -781,35 +735,35 @@ static int debug_state_print(struct dlm_ctxt *dlm, struct debug_buffer *db) | |||
781 | } | 735 | } |
782 | 736 | ||
783 | /* Domain: xxxxxxxxxx Key: 0xdfbac769 */ | 737 | /* Domain: xxxxxxxxxx Key: 0xdfbac769 */ |
784 | out += snprintf(db->buf + out, db->len - out, | 738 | out += snprintf(buf + out, len - out, |
785 | "Domain: %s Key: 0x%08x Protocol: %d.%d\n", | 739 | "Domain: %s Key: 0x%08x Protocol: %d.%d\n", |
786 | dlm->name, dlm->key, dlm->dlm_locking_proto.pv_major, | 740 | dlm->name, dlm->key, dlm->dlm_locking_proto.pv_major, |
787 | dlm->dlm_locking_proto.pv_minor); | 741 | dlm->dlm_locking_proto.pv_minor); |
788 | 742 | ||
789 | /* Thread Pid: xxx Node: xxx State: xxxxx */ | 743 | /* Thread Pid: xxx Node: xxx State: xxxxx */ |
790 | out += snprintf(db->buf + out, db->len - out, | 744 | out += snprintf(buf + out, len - out, |
791 | "Thread Pid: %d Node: %d State: %s\n", | 745 | "Thread Pid: %d Node: %d State: %s\n", |
792 | dlm->dlm_thread_task->pid, dlm->node_num, state); | 746 | dlm->dlm_thread_task->pid, dlm->node_num, state); |
793 | 747 | ||
794 | /* Number of Joins: xxx Joining Node: xxx */ | 748 | /* Number of Joins: xxx Joining Node: xxx */ |
795 | out += snprintf(db->buf + out, db->len - out, | 749 | out += snprintf(buf + out, len - out, |
796 | "Number of Joins: %d Joining Node: %d\n", | 750 | "Number of Joins: %d Joining Node: %d\n", |
797 | dlm->num_joins, dlm->joining_node); | 751 | dlm->num_joins, dlm->joining_node); |
798 | 752 | ||
799 | /* Domain Map: xx xx xx */ | 753 | /* Domain Map: xx xx xx */ |
800 | out += snprintf(db->buf + out, db->len - out, "Domain Map: "); | 754 | out += snprintf(buf + out, len - out, "Domain Map: "); |
801 | out += stringify_nodemap(dlm->domain_map, O2NM_MAX_NODES, | 755 | out += stringify_nodemap(dlm->domain_map, O2NM_MAX_NODES, |
802 | db->buf + out, db->len - out); | 756 | buf + out, len - out); |
803 | out += snprintf(db->buf + out, db->len - out, "\n"); | 757 | out += snprintf(buf + out, len - out, "\n"); |
804 | 758 | ||
805 | /* Live Map: xx xx xx */ | 759 | /* Live Map: xx xx xx */ |
806 | out += snprintf(db->buf + out, db->len - out, "Live Map: "); | 760 | out += snprintf(buf + out, len - out, "Live Map: "); |
807 | out += stringify_nodemap(dlm->live_nodes_map, O2NM_MAX_NODES, | 761 | out += stringify_nodemap(dlm->live_nodes_map, O2NM_MAX_NODES, |
808 | db->buf + out, db->len - out); | 762 | buf + out, len - out); |
809 | out += snprintf(db->buf + out, db->len - out, "\n"); | 763 | out += snprintf(buf + out, len - out, "\n"); |
810 | 764 | ||
811 | /* Lock Resources: xxx (xxx) */ | 765 | /* Lock Resources: xxx (xxx) */ |
812 | out += snprintf(db->buf + out, db->len - out, | 766 | out += snprintf(buf + out, len - out, |
813 | "Lock Resources: %d (%d)\n", | 767 | "Lock Resources: %d (%d)\n", |
814 | atomic_read(&dlm->res_cur_count), | 768 | atomic_read(&dlm->res_cur_count), |
815 | atomic_read(&dlm->res_tot_count)); | 769 | atomic_read(&dlm->res_tot_count)); |
@@ -821,29 +775,29 @@ static int debug_state_print(struct dlm_ctxt *dlm, struct debug_buffer *db) | |||
821 | cur_mles += atomic_read(&dlm->mle_cur_count[i]); | 775 | cur_mles += atomic_read(&dlm->mle_cur_count[i]); |
822 | 776 | ||
823 | /* MLEs: xxx (xxx) */ | 777 | /* MLEs: xxx (xxx) */ |
824 | out += snprintf(db->buf + out, db->len - out, | 778 | out += snprintf(buf + out, len - out, |
825 | "MLEs: %d (%d)\n", cur_mles, tot_mles); | 779 | "MLEs: %d (%d)\n", cur_mles, tot_mles); |
826 | 780 | ||
827 | /* Blocking: xxx (xxx) */ | 781 | /* Blocking: xxx (xxx) */ |
828 | out += snprintf(db->buf + out, db->len - out, | 782 | out += snprintf(buf + out, len - out, |
829 | " Blocking: %d (%d)\n", | 783 | " Blocking: %d (%d)\n", |
830 | atomic_read(&dlm->mle_cur_count[DLM_MLE_BLOCK]), | 784 | atomic_read(&dlm->mle_cur_count[DLM_MLE_BLOCK]), |
831 | atomic_read(&dlm->mle_tot_count[DLM_MLE_BLOCK])); | 785 | atomic_read(&dlm->mle_tot_count[DLM_MLE_BLOCK])); |
832 | 786 | ||
833 | /* Mastery: xxx (xxx) */ | 787 | /* Mastery: xxx (xxx) */ |
834 | out += snprintf(db->buf + out, db->len - out, | 788 | out += snprintf(buf + out, len - out, |
835 | " Mastery: %d (%d)\n", | 789 | " Mastery: %d (%d)\n", |
836 | atomic_read(&dlm->mle_cur_count[DLM_MLE_MASTER]), | 790 | atomic_read(&dlm->mle_cur_count[DLM_MLE_MASTER]), |
837 | atomic_read(&dlm->mle_tot_count[DLM_MLE_MASTER])); | 791 | atomic_read(&dlm->mle_tot_count[DLM_MLE_MASTER])); |
838 | 792 | ||
839 | /* Migration: xxx (xxx) */ | 793 | /* Migration: xxx (xxx) */ |
840 | out += snprintf(db->buf + out, db->len - out, | 794 | out += snprintf(buf + out, len - out, |
841 | " Migration: %d (%d)\n", | 795 | " Migration: %d (%d)\n", |
842 | atomic_read(&dlm->mle_cur_count[DLM_MLE_MIGRATION]), | 796 | atomic_read(&dlm->mle_cur_count[DLM_MLE_MIGRATION]), |
843 | atomic_read(&dlm->mle_tot_count[DLM_MLE_MIGRATION])); | 797 | atomic_read(&dlm->mle_tot_count[DLM_MLE_MIGRATION])); |
844 | 798 | ||
845 | /* Lists: Dirty=Empty Purge=InUse PendingASTs=Empty ... */ | 799 | /* Lists: Dirty=Empty Purge=InUse PendingASTs=Empty ... */ |
846 | out += snprintf(db->buf + out, db->len - out, | 800 | out += snprintf(buf + out, len - out, |
847 | "Lists: Dirty=%s Purge=%s PendingASTs=%s " | 801 | "Lists: Dirty=%s Purge=%s PendingASTs=%s " |
848 | "PendingBASTs=%s\n", | 802 | "PendingBASTs=%s\n", |
849 | (list_empty(&dlm->dirty_list) ? "Empty" : "InUse"), | 803 | (list_empty(&dlm->dirty_list) ? "Empty" : "InUse"), |
@@ -852,12 +806,12 @@ static int debug_state_print(struct dlm_ctxt *dlm, struct debug_buffer *db) | |||
852 | (list_empty(&dlm->pending_basts) ? "Empty" : "InUse")); | 806 | (list_empty(&dlm->pending_basts) ? "Empty" : "InUse")); |
853 | 807 | ||
854 | /* Purge Count: xxx Refs: xxx */ | 808 | /* Purge Count: xxx Refs: xxx */ |
855 | out += snprintf(db->buf + out, db->len - out, | 809 | out += snprintf(buf + out, len - out, |
856 | "Purge Count: %d Refs: %d\n", dlm->purge_count, | 810 | "Purge Count: %d Refs: %d\n", dlm->purge_count, |
857 | atomic_read(&dlm->dlm_refs.refcount)); | 811 | atomic_read(&dlm->dlm_refs.refcount)); |
858 | 812 | ||
859 | /* Dead Node: xxx */ | 813 | /* Dead Node: xxx */ |
860 | out += snprintf(db->buf + out, db->len - out, | 814 | out += snprintf(buf + out, len - out, |
861 | "Dead Node: %d\n", dlm->reco.dead_node); | 815 | "Dead Node: %d\n", dlm->reco.dead_node); |
862 | 816 | ||
863 | /* What about DLM_RECO_STATE_FINALIZE? */ | 817 | /* What about DLM_RECO_STATE_FINALIZE? */ |
@@ -867,19 +821,19 @@ static int debug_state_print(struct dlm_ctxt *dlm, struct debug_buffer *db) | |||
867 | state = "INACTIVE"; | 821 | state = "INACTIVE"; |
868 | 822 | ||
869 | /* Recovery Pid: xxxx Master: xxx State: xxxx */ | 823 | /* Recovery Pid: xxxx Master: xxx State: xxxx */ |
870 | out += snprintf(db->buf + out, db->len - out, | 824 | out += snprintf(buf + out, len - out, |
871 | "Recovery Pid: %d Master: %d State: %s\n", | 825 | "Recovery Pid: %d Master: %d State: %s\n", |
872 | dlm->dlm_reco_thread_task->pid, | 826 | dlm->dlm_reco_thread_task->pid, |
873 | dlm->reco.new_master, state); | 827 | dlm->reco.new_master, state); |
874 | 828 | ||
875 | /* Recovery Map: xx xx */ | 829 | /* Recovery Map: xx xx */ |
876 | out += snprintf(db->buf + out, db->len - out, "Recovery Map: "); | 830 | out += snprintf(buf + out, len - out, "Recovery Map: "); |
877 | out += stringify_nodemap(dlm->recovery_map, O2NM_MAX_NODES, | 831 | out += stringify_nodemap(dlm->recovery_map, O2NM_MAX_NODES, |
878 | db->buf + out, db->len - out); | 832 | buf + out, len - out); |
879 | out += snprintf(db->buf + out, db->len - out, "\n"); | 833 | out += snprintf(buf + out, len - out, "\n"); |
880 | 834 | ||
881 | /* Recovery Node State: */ | 835 | /* Recovery Node State: */ |
882 | out += snprintf(db->buf + out, db->len - out, "Recovery Node State:\n"); | 836 | out += snprintf(buf + out, len - out, "Recovery Node State:\n"); |
883 | list_for_each_entry(node, &dlm->reco.node_data, list) { | 837 | list_for_each_entry(node, &dlm->reco.node_data, list) { |
884 | switch (node->state) { | 838 | switch (node->state) { |
885 | case DLM_RECO_NODE_DATA_INIT: | 839 | case DLM_RECO_NODE_DATA_INIT: |
@@ -907,7 +861,7 @@ static int debug_state_print(struct dlm_ctxt *dlm, struct debug_buffer *db) | |||
907 | state = "BAD"; | 861 | state = "BAD"; |
908 | break; | 862 | break; |
909 | } | 863 | } |
910 | out += snprintf(db->buf + out, db->len - out, "\t%u - %s\n", | 864 | out += snprintf(buf + out, len - out, "\t%u - %s\n", |
911 | node->node_num, state); | 865 | node->node_num, state); |
912 | } | 866 | } |
913 | 867 | ||
@@ -919,15 +873,15 @@ static int debug_state_print(struct dlm_ctxt *dlm, struct debug_buffer *db) | |||
919 | static int debug_state_open(struct inode *inode, struct file *file) | 873 | static int debug_state_open(struct inode *inode, struct file *file) |
920 | { | 874 | { |
921 | struct dlm_ctxt *dlm = inode->i_private; | 875 | struct dlm_ctxt *dlm = inode->i_private; |
922 | struct debug_buffer *db = NULL; | 876 | char *buf = NULL; |
923 | 877 | ||
924 | db = debug_buffer_allocate(); | 878 | buf = (char *) get_zeroed_page(GFP_NOFS); |
925 | if (!db) | 879 | if (!buf) |
926 | goto bail; | 880 | goto bail; |
927 | 881 | ||
928 | db->len = debug_state_print(dlm, db); | 882 | i_size_write(inode, debug_state_print(dlm, buf, PAGE_SIZE - 1)); |
929 | 883 | ||
930 | file->private_data = db; | 884 | file->private_data = buf; |
931 | 885 | ||
932 | return 0; | 886 | return 0; |
933 | bail: | 887 | bail: |
@@ -936,9 +890,9 @@ bail: | |||
936 | 890 | ||
937 | static const struct file_operations debug_state_fops = { | 891 | static const struct file_operations debug_state_fops = { |
938 | .open = debug_state_open, | 892 | .open = debug_state_open, |
939 | .release = debug_buffer_release, | 893 | .release = debug_release, |
940 | .read = debug_buffer_read, | 894 | .read = debug_read, |
941 | .llseek = debug_buffer_llseek, | 895 | .llseek = generic_file_llseek, |
942 | }; | 896 | }; |
943 | /* end - debug state funcs */ | 897 | /* end - debug state funcs */ |
944 | 898 | ||
diff --git a/fs/ocfs2/dlm/dlmdebug.h b/fs/ocfs2/dlm/dlmdebug.h index 8c686d22f9c7..1f27c4812d1a 100644 --- a/fs/ocfs2/dlm/dlmdebug.h +++ b/fs/ocfs2/dlm/dlmdebug.h | |||
@@ -37,11 +37,6 @@ struct dlm_debug_ctxt { | |||
37 | struct dentry *debug_purgelist_dentry; | 37 | struct dentry *debug_purgelist_dentry; |
38 | }; | 38 | }; |
39 | 39 | ||
40 | struct debug_buffer { | ||
41 | int len; | ||
42 | char *buf; | ||
43 | }; | ||
44 | |||
45 | struct debug_lockres { | 40 | struct debug_lockres { |
46 | int dl_len; | 41 | int dl_len; |
47 | char *dl_buf; | 42 | char *dl_buf; |