From: Yehuda Sadeh Date: Sat, 18 Oct 2008 00:14:25 +0000 (-0700) Subject: kclient: leak detections tool X-Git-Tag: v0.5~242 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6e47822110436145d6f9f847d8f9155789b76b51;p=ceph.git kclient: leak detections tool --- diff --git a/src/kernel/Makefile b/src/kernel/Makefile index cbebd9cf752d..7926eec83b12 100644 --- a/src/kernel/Makefile +++ b/src/kernel/Makefile @@ -12,7 +12,7 @@ ceph-objs := super.o inode.o dir.o file.o addr.o ioctl.o \ mds_client.o mdsmap.o \ mon_client.o \ osd_client.o osdmap.o crush/crush.o crush/mapper.o \ - proc.o + proc.o ceph_tools.o else #Otherwise we were called directly from the command diff --git a/src/kernel/ceph_debug.h b/src/kernel/ceph_debug.h index 288b34322289..f9daa8f8b550 100644 --- a/src/kernel/ceph_debug.h +++ b/src/kernel/ceph_debug.h @@ -25,6 +25,7 @@ extern int ceph_debug_snap; extern int ceph_debug_super; extern int ceph_debug_protocol; extern int ceph_debug_proc; +extern int ceph_debug_tools; #define DOUT_MASK_ADDR 0x00000001 #define DOUT_MASK_CAPS 0x00000002 @@ -43,6 +44,7 @@ extern int ceph_debug_proc; #define DOUT_MASK_SUPER 0x00004000 #define DOUT_MASK_PROTOCOL 0x00008000 #define DOUT_MASK_PROC 0x00010000 +#define DOUT_MASK_TOOLS 0x00020000 #define DOUT_UNMASKABLE 0x80000000 @@ -69,6 +71,7 @@ static struct _debug_mask_name _debug_mask_names[] = { {DOUT_MASK_SUPER, "super"}, {DOUT_MASK_PROTOCOL, "protocol"}, {DOUT_MASK_PROC, "proc"}, + {DOUT_MASK_TOOLS, "tools"}, {0, NULL} }; diff --git a/src/kernel/dir.c b/src/kernel/dir.c index 424e396d51d2..90152d91fb66 100644 --- a/src/kernel/dir.c +++ b/src/kernel/dir.c @@ -1,3 +1,6 @@ +#include +#include + #include "ceph_debug.h" int ceph_debug_dir = -1; @@ -6,9 +9,6 @@ int ceph_debug_dir = -1; #define DOUT_PREFIX "dir: " #include "super.h" -#include -#include - const struct inode_operations ceph_dir_iops; const struct file_operations ceph_dir_fops; struct dentry_operations ceph_dentry_ops; diff --git a/src/kernel/messenger.c b/src/kernel/messenger.c index 1d669faf2d48..41d83cb7b1ec 100644 --- a/src/kernel/messenger.c +++ b/src/kernel/messenger.c @@ -2260,6 +2260,7 @@ struct ceph_msg *ceph_msg_new(int type, int front_len, struct ceph_msg *m; m = kmalloc(sizeof(*m), GFP_NOFS); + dout(1, "ceph_msg_new alloc %p\n", m); if (m == NULL) goto out; atomic_set(&m->nref, 1); @@ -2317,7 +2318,7 @@ void ceph_msg_put(struct ceph_msg *m) WARN_ON(1); } if (atomic_dec_and_test(&m->nref)) { - dout(20, "ceph_msg_put last one on %p\n", m); + dout(1, "ceph_msg_put last one on %p\n", m); WARN_ON(!list_empty(&m->list_head)); kfree(m->front.iov_base); kfree(m); diff --git a/src/kernel/osd_client.c b/src/kernel/osd_client.c index bdb93231e59f..fe924320688e 100644 --- a/src/kernel/osd_client.c +++ b/src/kernel/osd_client.c @@ -71,7 +71,7 @@ static void get_request(struct ceph_osd_request *req) void ceph_osdc_put_request(struct ceph_osd_request *req) { - dout(10, "put_request %p %d -> %d\n", req, atomic_read(&req->r_ref), + dout(1, "put_request %p %d -> %d\n", req, atomic_read(&req->r_ref), atomic_read(&req->r_ref)-1); BUG_ON(atomic_read(&req->r_ref) <= 0); if (atomic_dec_and_test(&req->r_ref)) { diff --git a/src/kernel/proc.c b/src/kernel/proc.c index 217d44c07a77..f51b5e09f62b 100644 --- a/src/kernel/proc.c +++ b/src/kernel/proc.c @@ -182,5 +182,6 @@ void ceph_proc_cleanup(void) remove_proc_entry("debug", proc_fs_ceph); remove_proc_entry("debug_msgr", proc_fs_ceph); remove_proc_entry("debug_console", proc_fs_ceph); + remove_proc_entry("debug_mask", proc_fs_ceph); remove_proc_entry("fs/ceph", NULL); } diff --git a/src/kernel/super.c b/src/kernel/super.c index 8c798ff4dba5..f56f1f0676a4 100644 --- a/src/kernel/super.c +++ b/src/kernel/super.c @@ -8,6 +8,7 @@ #include #include #include +#include /* debug levels; defined in super.h */ @@ -31,7 +32,6 @@ int ceph_debug_super = -1; /* for this file */ #define DOUT_PREFIX "super: " #include "super.h" -#include #include "mon_client.h" void ceph_dispatch(void *p, struct ceph_msg *msg); @@ -1066,6 +1066,10 @@ static int __init init_ceph(void) dout(1, "init_ceph\n"); +#ifdef CEPH_BOOKKEEPER + ceph_bookkeeper_init(); +#endif + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,25) ret = -ENOMEM; ceph_kobj = kobject_create_and_add("ceph", fs_kobj); @@ -1116,6 +1120,9 @@ static void __exit exit_ceph(void) kobject_put(ceph_kobj); ceph_kobj = 0; #endif +#ifdef CEPH_BOOKKEEPER + ceph_bookkeeper_finalize(); +#endif } module_init(init_ceph);