nilfs2: implement metadata (MDT) files subsystem debugging output
Subsystems (2)
Vyacheslav Dubeyko
maintainerPATCH 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).
Signed-off-by Vyacheslav Dubeyko <[email protected]>
CC Ryusuke Konishi <[email protected]>
--- 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
@@ -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
@@ -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
@@ -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