Skip to contentSkip to conversation

nilfs2: implement metadata (MDT) files subsystem debugging output

PATCH New Vyacheslav Dubeyko 1 participant 1 message Jun 17, 2013

Subsystems (2)
lore
Share & tools
lore

Vyacheslav Dubeyko

author maintainer
#0 lore raw

PATCH 5/24 nilfs2: implement metadata (MDT) files subsystem debugging output

From: Vyacheslav Dubeyko <[email protected]>
Subject: [PATCH 05/24] nilfs2: implement metadata (MDT) files subsystem debugging output

This patch adds debugging output by means of nilfs2_debug() method into modules that are grouped by metadata (MDT) files debugging output option (CONFIG_NILFS2_DEBUG_MDT_FILES).

---
 fs/nilfs2/cpfile.c |   67 ++++++++++++++++++++++++++++++++++++++++++++
 fs/nilfs2/dat.c    |    8 ++++++
 fs/nilfs2/ifile.c  |   17 ++++++++++++
 fs/nilfs2/mdt.c    |   51 ++++++++++++++++++++++++++++++++++
 fs/nilfs2/sufile.c |   78 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 221 insertions(+)
fs/nilfs2/cpfile.c +67 -0
index deaa3d3..3b6161f 100644
@@ -133,6 +133,9 @@ static void nilfs_cpfile_block_init(struct inode *cpfile,
 static inline int nilfs_cpfile_get_header_block(struct inode *cpfile,
 						struct buffer_head **bhp)
 {
+	nilfs2_debug(DBG_CPFILE,
+			"i_ino %lu, bhp %p\n", cpfile->i_ino, bhp);
+
 	return nilfs_mdt_get_block(cpfile, 0, 0, NULL, bhp);
 }
 
@@ -141,6 +144,10 @@ static inline int nilfs_cpfile_get_checkpoint_block(struct inode *cpfile,
 						    int create,
 						    struct buffer_head **bhp)
 {
+	nilfs2_debug(DBG_CPFILE,
+			"i_ino %lu, cno %llu, create %d, bhp %p\n",
+			cpfile->i_ino, cno, create, bhp);
+
 	return nilfs_mdt_get_block(cpfile,
 				   nilfs_cpfile_get_blkoff(cpfile, cno),
 				   create, nilfs_cpfile_block_init, bhp);
@@ -149,6 +156,10 @@ static inline int nilfs_cpfile_get_checkpoint_block(struct inode *cpfile,
 static inline int nilfs_cpfile_delete_checkpoint_block(struct inode *cpfile,
 						       __u64 cno)
 {
+	nilfs2_debug(DBG_CPFILE,
+			"i_ino %lu, cno %llu\n",
+			cpfile->i_ino, cno);
+
 	return nilfs_mdt_delete_block(cpfile,
 				      nilfs_cpfile_get_blkoff(cpfile, cno));
 }
@@ -190,6 +201,10 @@ int nilfs_cpfile_get_checkpoint(struct inode *cpfile,
 	void *kaddr;
 	int ret;
 
+	nilfs2_debug(DBG_CPFILE,
+			"i_ino %lu, cno %llu, create %d, cpp %p, bhp %p\n",
+			cpfile->i_ino, cno, create, cpp, bhp);
+
 	if (unlikely(cno < 1 || cno > nilfs_mdt_cno(cpfile) ||
 		     (cno < nilfs_mdt_cno(cpfile) && create)))
 		return -EINVAL;
@@ -252,6 +267,10 @@ int nilfs_cpfile_get_checkpoint(struct inode *cpfile,
 void nilfs_cpfile_put_checkpoint(struct inode *cpfile, __u64 cno,
 				 struct buffer_head *bh)
 {
+	nilfs2_debug(DBG_CPFILE,
+			"i_ino %lu, cno %llu, bh %p\n",
+			cpfile->i_ino, cno, bh);
+
 	kunmap(bh->b_page);
 	brelse(bh);
 }
@@ -288,6 +307,10 @@ int nilfs_cpfile_delete_checkpoints(struct inode *cpfile,
 	unsigned long tnicps;
 	int ret, ncps, nicps, nss, count, i;
 
+	nilfs2_debug(DBG_CPFILE,
+			"i_ino %lu, start %llu, end %llu\n",
+			cpfile->i_ino, start, end);
+
 	if (unlikely(start == 0 || start > end)) {
 		printk(KERN_ERR "%s: invalid range of checkpoint numbers: "
 		       "[%llu, %llu)\n", __func__,
@@ -378,6 +401,10 @@ static void nilfs_cpfile_checkpoint_to_cpinfo(struct inode *cpfile,
 					      struct nilfs_checkpoint *cp,
 					      struct nilfs_cpinfo *ci)
 {
+	nilfs2_debug(DBG_CPFILE,
+			"i_ino %lu, cp %p, ci %p\n",
+			cpfile->i_ino, cp, ci);
+
 	ci->ci_flags = le32_to_cpu(cp->cp_flags);
 	ci->ci_cno = le64_to_cpu(cp->cp_cno);
 	ci->ci_create = le64_to_cpu(cp->cp_create);
@@ -399,6 +426,10 @@ static ssize_t nilfs_cpfile_do_get_cpinfo(struct inode *cpfile, __u64 *cnop,
 	int n, ret;
 	int ncps, i;
 
+	nilfs2_debug(DBG_CPFILE,
+			"i_ino %lu, cnop %p, buf %p, cisz %u, nci %zu\n",
+			cpfile->i_ino, cnop, buf, cisz, nci);
+
 	if (cno == 0)
 		return -ENOENT; /* checkpoint number 0 is invalid */
 	down_read(&NILFS_MDT(cpfile)->mi_sem);
@@ -449,6 +480,10 @@ static ssize_t nilfs_cpfile_do_get_ssinfo(struct inode *cpfile, __u64 *cnop,
 	void *kaddr;
 	int n = 0, ret;
 
+	nilfs2_debug(DBG_CPFILE,
+			"i_ino %lu, cnop %p, buf %p, cisz %u, nci %zu\n",
+			cpfile->i_ino, cnop, buf, cisz, nci);
+
 	down_read(&NILFS_MDT(cpfile)->mi_sem);
 
 	if (curr == 0) {
@@ -547,6 +582,10 @@ int nilfs_cpfile_delete_checkpoint(struct inode *cpfile, __u64 cno)
 	__u64 tcno = cno;
 	ssize_t nci;
 
+	nilfs2_debug(DBG_CPFILE,
+			"i_ino %lu, cno %llu\n",
+			cpfile->i_ino, cno);
+
 	nci = nilfs_cpfile_do_get_cpinfo(cpfile, &tcno, &ci, sizeof(ci), 1);
 	if (nci < 0)
 		return nci;
@@ -568,6 +607,10 @@ nilfs_cpfile_block_get_snapshot_list(const struct inode *cpfile,
 	struct nilfs_checkpoint *cp;
 	struct nilfs_snapshot_list *list;
 
+	nilfs2_debug(DBG_CPFILE,
+			"i_ino %lu, cno %llu, bh %p, kaddr %p\n",
+			cpfile->i_ino, cno, bh, kaddr);
+
 	if (cno != 0) {
 		cp = nilfs_cpfile_block_get_checkpoint(cpfile, cno, bh, kaddr);
 		list = &cp->cp_snapshot_list;
@@ -589,6 +632,10 @@ static int nilfs_cpfile_set_snapshot(struct inode *cpfile, __u64 cno)
 	void *kaddr;
 	int ret;
 
+	nilfs2_debug(DBG_CPFILE,
+			"i_ino %lu, cno %llu\n",
+			cpfile->i_ino, cno);
+
 	if (cno == 0)
 		return -ENOENT; /* checkpoint number 0 is invalid */
 	down_write(&NILFS_MDT(cpfile)->mi_sem);
@@ -707,6 +754,10 @@ static int nilfs_cpfile_clear_snapshot(struct inode *cpfile, __u64 cno)
 	void *kaddr;
 	int ret;
 
+	nilfs2_debug(DBG_CPFILE,
+			"i_ino %lu, cno %llu\n",
+			cpfile->i_ino, cno);
+
 	if (cno == 0)
 		return -ENOENT; /* checkpoint number 0 is invalid */
 	down_write(&NILFS_MDT(cpfile)->mi_sem);
@@ -824,6 +875,10 @@ int nilfs_cpfile_is_snapshot(struct inode *cpfile, __u64 cno)
 	void *kaddr;
 	int ret;
 
+	nilfs2_debug(DBG_CPFILE,
+			"i_ino %lu, cno %llu\n",
+			cpfile->i_ino, cno);
+
 	/* CP number is invalid if it's zero or larger than the
 	largest	exist one.*/
 	if (cno == 0 || cno >= nilfs_mdt_cno(cpfile))
@@ -869,6 +924,10 @@ int nilfs_cpfile_change_cpmode(struct inode *cpfile, __u64 cno, int mode)
 {
 	int ret;
 
+	nilfs2_debug(DBG_CPFILE,
+			"i_ino %lu, cno %llu, mode %#x\n",
+			cpfile->i_ino, cno, mode);
+
 	switch (mode) {
 	case NILFS_CHECKPOINT:
 		if (nilfs_checkpoint_is_mounted(cpfile->i_sb, cno))
@@ -911,6 +970,10 @@ int nilfs_cpfile_get_stat(struct inode *cpfile, struct nilfs_cpstat *cpstat)
 	void *kaddr;
 	int ret;
 
+	nilfs2_debug(DBG_CPFILE,
+			"i_ino %lu, cpstat %p\n",
+			cpfile->i_ino, cpstat);
+
 	down_read(&NILFS_MDT(cpfile)->mi_sem);
 
 	ret = nilfs_cpfile_get_header_block(cpfile, &bh);
@@ -942,6 +1005,10 @@ int nilfs_cpfile_read(struct super_block *sb, size_t cpsize,
 	struct inode *cpfile;
 	int err;
 
+	nilfs2_debug(DBG_CPFILE,
+			"sb %p, cpsize %zu, raw_inode %p, inodep %p\n",
+			sb, cpsize, raw_inode, inodep);
+
 	cpfile = nilfs_iget_locked(sb, NULL, NILFS_CPFILE_INO);
 	if (unlikely(!cpfile))
 		return -ENOMEM;
fs/nilfs2/dat.c +8 -0
index fa0f803..d382d00 100644
@@ -306,6 +306,10 @@ int nilfs_dat_mark_dirty(struct inode *dat, __u64 vblocknr)
  */
 int nilfs_dat_freev(struct inode *dat, __u64 *vblocknrs, size_t nitems)
 {
+	nilfs2_debug(DBG_DAT,
+			"i_ino %lu, vblocknrs %p, nitems %zu\n",
+			dat->i_ino, vblocknrs, nitems);
+
 	return nilfs_palloc_freev(dat, vblocknrs, nitems);
 }
 
@@ -484,6 +488,10 @@ int nilfs_dat_read(struct super_block *sb, size_t entry_size,
 	struct nilfs_dat_info *di;
 	int err;
 
+	nilfs2_debug(DBG_DAT,
+			"sb %p, entry_size %zu, raw_inode %p, inodep %p\n",
+			sb, entry_size, raw_inode, inodep);
+
 	dat = nilfs_iget_locked(sb, NULL, NILFS_DAT_INO);
 	if (unlikely(!dat))
 		return -ENOMEM;
fs/nilfs2/ifile.c +17 -0
index d8e65bd..28cd24d 100644
@@ -68,6 +68,10 @@ int nilfs_ifile_create_inode(struct inode *ifile, ino_t *out_ino,
 	struct nilfs_palloc_req req;
 	int ret;
 
+	nilfs2_debug(DBG_IFILE,
+		"i_ino %lu, out_ino ptr %p, out_bh %p\n",
+		ifile->i_ino, out_ino, out_bh);
+
 	req.pr_entry_nr = 0;  /* 0 says find free inode from beginning of
 				 a group. dull code!! */
 	req.pr_entry_bh = NULL;
@@ -87,6 +91,7 @@ int nilfs_ifile_create_inode(struct inode *ifile, ino_t *out_ino,
 	mark_buffer_dirty(req.pr_entry_bh);
 	nilfs_mdt_mark_dirty(ifile);
 	*out_ino = (ino_t)req.pr_entry_nr;
+	nilfs2_debug(DBG_IFILE, "out_ino %lu\n", *out_ino);
 	*out_bh = req.pr_entry_bh;
 	return 0;
 }
@@ -114,6 +119,10 @@ int nilfs_ifile_delete_inode(struct inode *ifile, ino_t ino)
 	void *kaddr;
 	int ret;
 
+	nilfs2_debug(DBG_IFILE,
+			"ifile ino %lu, deleted ino %lu\n",
+			ifile->i_ino, ino);
+
 	ret = nilfs_palloc_prepare_free_entry(ifile, &req);
 	if (!ret) {
 		ret = nilfs_palloc_get_entry_block(ifile, req.pr_entry_nr, 0,
@@ -146,6 +155,10 @@ int nilfs_ifile_get_inode_block(struct inode *ifile, ino_t ino,
 	struct super_block *sb = ifile->i_sb;
 	int err;
 
+	nilfs2_debug(DBG_IFILE,
+			"ifile ino %lu, get ino %lu, out_bh %p\n",
+			ifile->i_ino, ino, out_bh);
+
 	if (unlikely(!NILFS_VALID_INODE(sb, ino))) {
 		nilfs_error(sb, __func__, "bad inode number: %lu",
 			    (unsigned long) ino);
@@ -174,6 +187,10 @@ int nilfs_ifile_read(struct super_block *sb, struct nilfs_root *root,
 	struct inode *ifile;
 	int err;
 
+	nilfs2_debug(DBG_IFILE,
+		"sb %p, root %p, inode_size %zu, raw_inode %p, inodep %p\n",
+		sb, root, inode_size, raw_inode, inodep);
+
 	ifile = nilfs_iget_locked(sb, root, NILFS_IFILE_INO);
 	if (unlikely(!ifile))
 		return -ENOMEM;
fs/nilfs2/mdt.c +51 -0

147 lines not on this page · raw message

fs/nilfs2/sufile.c +78 -0

198 lines not on this page · raw message

Signature · 1 line
1.7.9.5