jffs2: logging message neatening
cover jffs2: logging message neatening
Joe Perches (4):
jffs2: Convert most D1/D2 macros to jffs2_dbg
jffs2: Convert printks to pr_<level>
jffs2: Use pr_fmt and remove jffs: from formats
jffs2: Standardize JFFS_<LEVEL> uses
fs/jffs2/acl.c | 2 + fs/jffs2/background.c | 29 +++-- fs/jffs2/build.c | 6 +- fs/jffs2/compr.c | 32 +++-- fs/jffs2/compr_rubin.c | 2 + fs/jffs2/compr_zlib.c | 39 ++++--- fs/jffs2/debug.c | 22 ++-- fs/jffs2/debug.h | 51 +++------ fs/jffs2/dir.c | 41 ++++--- fs/jffs2/erase.c | 71 +++++++---- fs/jffs2/file.c | 33 +++-- fs/jffs2/fs.c | 67 ++++++---- fs/jffs2/gc.c | 322 ++++++++++++++++++++++++++++-------------------- fs/jffs2/malloc.c | 2 + fs/jffs2/nodelist.c | 30 +++-- fs/jffs2/nodemgmt.c | 214 +++++++++++++++++++------------- fs/jffs2/read.c | 70 ++++++----- fs/jffs2/readinode.c | 2 + fs/jffs2/scan.c | 211 ++++++++++++++++++-------------- fs/jffs2/summary.c | 16 ++- fs/jffs2/super.c | 30 +++-- fs/jffs2/symlink.c | 7 +- fs/jffs2/wbuf.c | 148 ++++++++++++---------- fs/jffs2/write.c | 113 ++++++++++-------- fs/jffs2/xattr.c | 2 + 25 files changed, 900 insertions(+), 662 deletions(-)
Signature · 1 line
1.7.8.111.gad25c.dirty
PATCH 1/4 jffs2: Convert most D1/D2 macros to jffs2_dbg
D1 and D2 macros are mostly uses to emit debugging messages.
Convert the logging uses of D1 & D2 to jffs2_dbg(level, fmt, ...) to be a bit more consistent style with the rest of the kernel.
All jffs2_dbg output is now at KERN_DEBUG where some of the previous uses were emitted at various KERN_<LEVEL>s.
--- fs/jffs2/background.c | 23 ++++--- fs/jffs2/compr.c | 14 ++-- fs/jffs2/compr_zlib.c | 31 +++++---- fs/jffs2/debug.h | 7 ++ fs/jffs2/dir.c | 32 ++++++---- fs/jffs2/erase.c | 33 ++++++---- fs/jffs2/file.c | 31 ++++++---- fs/jffs2/fs.c | 43 ++++++++------ fs/jffs2/gc.c | 162 +++++++++++++++++++++++++++++-------------------- fs/jffs2/nodemgmt.c | 161 +++++++++++++++++++++++++++++-------------------- fs/jffs2/read.c | 47 +++++++++------ fs/jffs2/scan.c | 126 ++++++++++++++++++++++---------------- fs/jffs2/super.c | 10 ++-- fs/jffs2/symlink.c | 3 +- fs/jffs2/wbuf.c | 67 +++++++++++--------- fs/jffs2/write.c | 74 ++++++++++++---------- 16 files changed, 504 insertions(+), 360 deletions(-)
fs/jffs2/background.c +14 -9
@@ -47,7 +47,8 @@ int jffs2_start_garbage_collect_thread(struct jffs2_sb_info *c) ret =PTR_ERR (tsk); }else {/* Wait for it... */ -D1 (printk (KERN_DEBUG "JFFS2: Garbage collect thread is pid %d\n" , tsk->pid)); +jffs2_dbg (1 ,"JFFS2: Garbage collect thread is pid %d\n" , + tsk->pid);wait_for_completion (&c->gc_thread_start); ret = tsk->pid; }
@@ -60,7 +61,7 @@ void jffs2_stop_garbage_collect_thread(struct jffs2_sb_info *c)int wait =0 ;spin_lock (&c->erase_completion_lock);if (c->gc_task) { -D1 (printk (KERN_DEBUG "jffs2: Killing GC task %d\n" , c->gc_task->pid)); +jffs2_dbg (1 ,"jffs2: Killing GC task %d\n" , c->gc_task->pid);send_sig (SIGKILL , c->gc_task,1 ); wait =1 ; }
@@ -90,7 +91,7 @@ static int jffs2_garbage_collect_thread(void *_c)if (!jffs2_thread_should_wake (c)) {set_current_state (TASK_INTERRUPTIBLE );spin_unlock (&c->erase_completion_lock); -D1 (printk (KERN_DEBUG "jffs2_garbage_collect_thread sleeping...\n" )); +jffs2_dbg (1 ,"%s(): sleeping...\n" , __func__);schedule (); }else spin_unlock (&c->erase_completion_lock);
@@ -109,7 +110,7 @@ static int jffs2_garbage_collect_thread(void *_c)schedule_timeout_interruptible (msecs_to_jiffies (50 ));if (kthread_should_stop ()) { -D1 (printk (KERN_DEBUG "jffs2_garbage_collect_thread(): kthread_stop() called.\n" )); +jffs2_dbg (1 ,"%s(): kthread_stop() called\n" , __func__); goto die; }
@@ -126,26 +127,30 @@ static int jffs2_garbage_collect_thread(void *_c)switch (signr) {case SIGSTOP : -D1 (printk (KERN_DEBUG "jffs2_garbage_collect_thread(): SIGSTOP received.\n" )); +jffs2_dbg (1 ,"%s(): SIGSTOP received\n" , + __func__);set_current_state (TASK_STOPPED );schedule ();break ;case SIGKILL : -D1 (printk (KERN_DEBUG "jffs2_garbage_collect_thread(): SIGKILL received.\n" )); +jffs2_dbg (1 ,"%s(): SIGKILL received\n" , + __func__); goto die;case SIGHUP : -D1 (printk (KERN_DEBUG "jffs2_garbage_collect_thread(): SIGHUP received.\n" )); +jffs2_dbg (1 ,"%s(): SIGHUP received\n" , + __func__);break ;default : -D1 (printk (KERN_DEBUG "jffs2_garbage_collect_thread(): signal %ld received\n" , signr)); +jffs2_dbg (1 ,"%s(): signal %ld received\n" , + __func__, signr); } }/* We don't want SIGHUP to interrupt us. STOP and KILL are OK though. */ disallow_signal (SIGHUP ); -D1 (printk (KERN_DEBUG "jffs2_garbage_collect_thread(): pass\n" )); +jffs2_dbg (1 ,"%s(): pass\n" , __func__);if (jffs2_garbage_collect_pass (c) == -ENOSPC ) {printk (KERN_NOTICE "No space for garbage collection. Aborting GC thread\n" ); goto die;
fs/jffs2/compr.c +7 -7
@@ -309,7 +309,7 @@ int jffs2_register_compressor(struct jffs2_compressor *comp) comp->stat_compr_new_size=0 ; comp->stat_compr_blocks=0 ; comp->stat_decompr_blocks=0 ; -D1 (printk (KERN_DEBUG "Registering JFFS2 compressor \"%s\"\n" , comp->name)); +jffs2_dbg (1 ,"Registering JFFS2 compressor \"%s\"\n" , comp->name);spin_lock (&jffs2_compressor_list_lock);
@@ -332,9 +332,9 @@ out:int jffs2_unregister_compressor (struct jffs2_compressor *comp) { - D2(struct jffs2_compressor *this;) + D2(struct jffs2_compressor *this); -D1 (printk (KERN_DEBUG "Unregistering JFFS2 compressor \"%s\"\n" , comp->name)); +jffs2_dbg (1 ,"Unregistering JFFS2 compressor \"%s\"\n" , comp->name);spin_lock (&jffs2_compressor_list_lock);
@@ -377,17 +377,17 @@ int __init jffs2_compressors_init(void)/* Setting default compression mode */ #ifdef CONFIG_JFFS2_CMODE_NONE jffs2_compression_mode =JFFS2_COMPR_MODE_NONE ; - D1(printk(KERN_INFO "JFFS2: default compression mode: none\n");) +jffs2_dbg (1 ,"JFFS2: default compression mode: none\n" );#else #ifdef CONFIG_JFFS2_CMODE_SIZE jffs2_compression_mode =JFFS2_COMPR_MODE_SIZE ; - D1(printk(KERN_INFO "JFFS2: default compression mode: size\n");) +jffs2_dbg (1 ,"JFFS2: default compression mode: size\n" );#else #ifdef CONFIG_JFFS2_CMODE_FAVOURLZO jffs2_compression_mode =JFFS2_COMPR_MODE_FAVOURLZO ; - D1(printk(KERN_INFO "JFFS2: default compression mode: favourlzo\n");) +jffs2_dbg (1 ,"JFFS2: default compression mode: favourlzo\n" );#else - D1(printk(KERN_INFO "JFFS2: default compression mode: priority\n");) +jffs2_dbg (1 ,"JFFS2: default compression mode: priority\n" );#endif #endif #endif
fs/jffs2/compr_zlib.c +17 -14
@@ -45,13 +45,15 @@ static int __init alloc_workspaces(void)if (!def_strm.workspace)return -ENOMEM ; -D1 (printk (KERN_DEBUG "Allocated %d bytes for deflate workspace\n" ,zlib_deflate_workspacesize (MAX_WBITS ,MAX_MEM_LEVEL ))); +jffs2_dbg (1 ,"Allocated %d bytes for deflate workspace\n" , +zlib_deflate_workspacesize (MAX_WBITS ,MAX_MEM_LEVEL )); inf_strm.workspace =vmalloc (zlib_inflate_workspacesize ());if (!inf_strm.workspace) {vfree (def_strm.workspace);return -ENOMEM ; } -D1 (printk (KERN_DEBUG "Allocated %d bytes for inflate workspace\n" ,zlib_inflate_workspacesize ())); +jffs2_dbg (1 ,"Allocated %d bytes for inflate workspace\n" , +zlib_inflate_workspacesize ());return 0 ; }
@@ -91,13 +93,14 @@ static int jffs2_zlib_compress(unsigned char *data_in,while (def_strm.total_out < *dstlen -STREAM_END_SPACE && def_strm.total_in < *sourcelen) { def_strm.avail_out = *dstlen - (def_strm.total_out +STREAM_END_SPACE ); def_strm.avail_in =min ((unsigned )(*sourcelen-def_strm.total_in), def_strm.avail_out); -D1 (printk (KERN_DEBUG "calling deflate with avail_in %d, avail_out %d\n" , - def_strm.avail_in, def_strm.avail_out)); +jffs2_dbg (1 ,"calling deflate with avail_in %d, avail_out %d\n" , + def_strm.avail_in, def_strm.avail_out); ret =zlib_deflate (&def_strm,Z_PARTIAL_FLUSH ); -D1 (printk (KERN_DEBUG "deflate returned with avail_in %d, avail_out %d, total_in %ld, total_out %ld\n" , - def_strm.avail_in, def_strm.avail_out, def_strm.total_in, def_strm.total_out)); +jffs2_dbg (1 ,"deflate returned with avail_in %d, avail_out %d, total_in %ld, total_out %ld\n" , + def_strm.avail_in, def_strm.avail_out, + def_strm.total_in, def_strm.total_out);if (ret !=Z_OK ) { -D1 (printk (KERN_DEBUG "deflate in loop returned %d\n" , ret)); +jffs2_dbg (1 ,"deflate in loop returned %d\n" , ret);zlib_deflateEnd (&def_strm);mutex_unlock (&deflate_mutex);return -1 ;
@@ -109,20 +112,20 @@ static int jffs2_zlib_compress(unsigned char *data_in,zlib_deflateEnd (&def_strm);if (ret !=Z_STREAM_END ) { -D1 (printk (KERN_DEBUG "final deflate returned %d\n" , ret)); +jffs2_dbg (1 ,"final deflate returned %d\n" , ret); ret =-1 ; goto out; }if (def_strm.total_out >= def_strm.total_in) { -D1 (printk (KERN_DEBUG "zlib compressed %ld bytes into %ld; failing\n" , - def_strm.total_in, def_strm.total_out)); +jffs2_dbg (1 ,"zlib compressed %ld bytes into %ld; failing\n" , + def_strm.total_in, def_strm.total_out); ret =-1 ; goto out; } -D1 (printk (KERN_DEBUG "zlib compressed %ld bytes into %ld\n" , - def_strm.total_in, def_strm.total_out)); +jffs2_dbg (1 ,"zlib compressed %ld bytes into %ld\n" , + def_strm.total_in, def_strm.total_out); *dstlen = def_strm.total_out; *sourcelen = def_strm.total_in;
@@ -155,13 +158,13 @@ static int jffs2_zlib_decompress(unsigned char *data_in, ((data_in[0] & 0x0f) == Z_DEFLATED) && !(((data_in[0]<<8) + data_in[1]) % 31)) { - D2(printk(KERN_DEBUG "inflate skipping adler32\n")); + jffs2_dbg(2, "inflate skipping adler32\n"); wbits = -((data_in[0] >> 4) + 8); inf_strm.next_in += 2; inf_strm.avail_in -= 2; } else {/* Let this remain D1 for now -- it should never happen */ -D1 (printk (KERN_DEBUG "inflate not skipping adler32\n" )); +jffs2_dbg (1 ,"inflate not skipping adler32\n" ); }
fs/jffs2/debug.h +7 -0
@@ -51,6 +51,7 @@* superseded by nicer dbg_xxx() macros... */ #if CONFIG_JFFS2_FS_DEBUG >0 +#define DEBUG #define D1 (x) x#else #define D1 (x)
@@ -62,6 +63,12 @@#define D2 (x)#endif +#define jffs2_dbg (level, fmt, ...) \ +do { \ + if (CONFIG_JFFS2_FS_DEBUG >= level) \ + pr_debug(fmt, ##__VA_ARGS__); \ +} while (0) +/* The prefixes of JFFS2 messages */ #define JFFS2_DBG_PREFIX "[JFFS2 DBG]"#define JFFS2_ERR_PREFIX "JFFS2 error:"
fs/jffs2/dir.c +18 -14
@@ -79,7 +79,7 @@ static struct dentry *jffs2_lookup(struct inode *dir_i, struct dentry *target,uint32_t ino =0 ;struct inode *inode =NULL ; -D1 (printk (KERN_DEBUG "jffs2_lookup()\n" )); +jffs2_dbg (1 ,"jffs2_lookup()\n" );if (target->d_name.len >JFFS2_MAX_NAME_LEN )return ERR_PTR (-ENAMETOOLONG );
@@ -119,21 +119,22 @@ static int jffs2_readdir(struct file *filp, void *dirent, filldir_t filldir)struct jffs2_full_dirent *fd;unsigned long offset, curofs; -D1 (printk (KERN_DEBUG "jffs2_readdir() for dir_i #%lu\n" , filp->f_path.dentry->d_inode->i_ino)); +jffs2_dbg (1 ,"jffs2_readdir() for dir_i #%lu\n" , + filp->f_path.dentry->d_inode->i_ino); f =JFFS2_INODE_INFO (inode); offset = filp->f_pos;if (offset ==0 ) { -D1 (printk (KERN_DEBUG "Dirent 0: \".\", ino #%lu\n" , inode->i_ino)); +jffs2_dbg (1 ,"Dirent 0: \".\", ino #%lu\n" , inode->i_ino);if (filldir (dirent,"." ,1 ,0 , inode->i_ino,DT_DIR ) <0 ) goto out; offset++; }if (offset ==1 ) {unsigned long pino =parent_ino (filp->f_path.dentry); -D1 (printk (KERN_DEBUG "Dirent 1: \"..\", ino #%lu\n" , pino)); +jffs2_dbg (1 ,"Dirent 1: \"..\", ino #%lu\n" , pino);if (filldir (dirent,".." ,2 ,1 , pino,DT_DIR ) <0 ) goto out; offset++;
@@ -146,16 +147,18 @@ static int jffs2_readdir(struct file *filp, void *dirent, filldir_t filldir) curofs++;/* First loop: curofs = 2; offset = 2 */ if (curofs < offset) { -D2 (printk (KERN_DEBUG "Skipping dirent: \"%s\", ino #%u, type %d, because curofs %ld < offset %ld\n" , - fd->name, fd->ino, fd->type, curofs, offset)); +jffs2_dbg (2 ,"Skipping dirent: \"%s\", ino #%u, type %d, because curofs %ld < offset %ld\n" , + fd->name, fd->ino, fd->type, curofs, offset);continue ; }if (!fd->ino) { -D2 (printk (KERN_DEBUG "Skipping deletion dirent \"%s\"\n" , fd->name)); +jffs2_dbg (2 ,"Skipping deletion dirent \"%s\"\n" , + fd->name); offset++;continue ; } -D2 (printk (KERN_DEBUG "Dirent %ld: \"%s\", ino #%u, type %d\n" , offset, fd->name, fd->ino, fd->type)); +jffs2_dbg (2 ,"Dirent %ld: \"%s\", ino #%u, type %d\n" , + offset, fd->name, fd->ino, fd->type);if (filldir (dirent, fd->name,strlen (fd->name), offset, fd->ino, fd->type) <0 )break ; offset++;
@@ -184,12 +187,12 @@ static int jffs2_create(struct inode *dir_i, struct dentry *dentry, c =JFFS2_SB_INFO (dir_i->i_sb); -D1 (printk (KERN_DEBUG "jffs2_create()\n" )); +jffs2_dbg (1 ,"%s()\n" , __func__); inode =jffs2_new_inode (dir_i, mode, ri);if (IS_ERR (inode)) { -D1 (printk (KERN_DEBUG "jffs2_new_inode() failed\n" )); +jffs2_dbg (1 ,"jffs2_new_inode() failed\n" );jffs2_free_raw_inode (ri);return PTR_ERR (inode); }
@@ -217,9 +220,9 @@ static int jffs2_create(struct inode *dir_i, struct dentry *dentry,jffs2_free_raw_inode (ri); -D1 (printk (KERN_DEBUG "jffs2_create: Created ino #%lu with mode %o, nlink %d(%d). nrpages %ld\n" , - inode->i_ino, inode->i_mode, inode->i_nlink, - f->inocache->pino_nlink, inode->i_mapping->nrpages)); +jffs2_dbg (1 ,"%s(): Created ino #%lu with mode %o, nlink %d(%d). nrpages %ld\n" , + __func__, inode->i_ino, inode->i_mode, inode->i_nlink, + f->inocache->pino_nlink, inode->i_mapping->nrpages);d_instantiate (dentry, inode);unlock_new_inode (inode);
@@ -369,7 +372,8 @@ static int jffs2_symlink (struct inode *dir_i, struct dentry *dentry, const char goto fail; } -D1 (printk (KERN_DEBUG "jffs2_symlink: symlink's target '%s' cached\n" , (char *)f->target)); +jffs2_dbg (1 ,"%s(): symlink's target '%s' cached\n" , + __func__, (char *)f->target);/* No data here. Only a metadata node, which will be obsoleted by the first data write
fs/jffs2/erase.c +19 -14
@@ -46,8 +46,9 @@ static void jffs2_erase_block(struct jffs2_sb_info *c,#else /* Linux */ struct erase_info *instr; -D1 (printk (KERN_DEBUG "jffs2_erase_block(): erase block %#08x (range %#08x-%#08x)\n" , - jeb->offset, jeb->offset, jeb->offset + c->sector_size)); +jffs2_dbg (1 ,"%s(): erase block %#08x (range %#08x-%#08x)\n" , + __func__, + jeb->offset, jeb->offset, jeb->offset + c->sector_size); instr =kmalloc (sizeof (struct erase_info ) +sizeof (struct erase_priv_struct ),GFP_KERNEL );if (!instr) {printk (KERN_WARNING "kmalloc for struct erase_info in jffs2_erase_block failed. Refiling block for later\n" );
@@ -84,7 +85,8 @@ static void jffs2_erase_block(struct jffs2_sb_info *c,if (ret == -ENOMEM || ret == -EAGAIN ) {/* Erase failed immediately. Refile it on the list */ -D1 (printk (KERN_DEBUG "Erase at 0x%08x failed: %d. Refiling on erase_pending_list\n" , jeb->offset, ret)); +jffs2_dbg (1 ,"Erase at 0x%08x failed: %d. Refiling on erase_pending_list\n" , + jeb->offset, ret);mutex_lock (&c->erase_free_sem);spin_lock (&c->erase_completion_lock);list_move (&jeb->list, &c->erase_pending_list);
@@ -125,13 +127,14 @@ int jffs2_erase_pending_blocks(struct jffs2_sb_info *c, int count) work_done++;if (!--count) { -D1 (printk (KERN_DEBUG "Count reached. jffs2_erase_pending_blocks leaving\n" )); +jffs2_dbg (1 ,"Count reached. jffs2_erase_pending_blocks leaving\n" ); goto done; } }else if (!list_empty (&c->erase_pending_list)) { jeb = list_entry(c->erase_pending_list.next, struct jffs2_eraseblock, list); -D1 (printk (KERN_DEBUG "Starting erase of pending block 0x%08x\n" , jeb->offset)); +jffs2_dbg (1 ,"Starting erase of pending block 0x%08x\n" , + jeb->offset);list_del (&jeb->list); c->erasing_size += c->sector_size; c->wasted_size -= jeb->wasted_size;
@@ -159,13 +162,13 @@ int jffs2_erase_pending_blocks(struct jffs2_sb_info *c, int count)spin_unlock (&c->erase_completion_lock);mutex_unlock (&c->erase_free_sem); done: -D1 (printk (KERN_DEBUG "jffs2_erase_pending_blocks completed\n" )); +jffs2_dbg (1 ,"jffs2_erase_pending_blocks completed\n" );return work_done; }static void jffs2_erase_succeeded (struct jffs2_sb_info *c,struct jffs2_eraseblock *jeb) { -D1 (printk (KERN_DEBUG "Erase completed successfully at 0x%08x\n" , jeb->offset)); +jffs2_dbg (1 ,"Erase completed successfully at 0x%08x\n" , jeb->offset);mutex_lock (&c->erase_free_sem);spin_lock (&c->erase_completion_lock);list_move_tail (&jeb->list, &c->erase_complete_list);
@@ -269,8 +272,8 @@ static inline void jffs2_remove_node_refs_from_ino_list(struct jffs2_sb_info *c,return ; } -D1 (printk (KERN_DEBUG "Removed nodes in range 0x%08x-0x%08x from ino #%u\n" , - jeb->offset, jeb->offset + c->sector_size, ic->ino)); +jffs2_dbg (1 ,"Removed nodes in range 0x%08x-0x%08x from ino #%u\n" , + jeb->offset, jeb->offset + c->sector_size, ic->ino); D2({ int i=0;
@@ -310,7 +313,8 @@ static inline void jffs2_remove_node_refs_from_ino_list(struct jffs2_sb_info *c,void jffs2_free_jeb_node_refs (struct jffs2_sb_info *c,struct jffs2_eraseblock *jeb) {struct jffs2_raw_node_ref *block, *ref; -D1 (printk (KERN_DEBUG "Freeing all node refs for eraseblock offset 0x%08x\n" , jeb->offset)); +jffs2_dbg (1 ,"Freeing all node refs for eraseblock offset 0x%08x\n" , + jeb->offset); block = ref = jeb->first_node;
@@ -342,12 +346,13 @@ static int jffs2_block_check_erase(struct jffs2_sb_info *c, struct jffs2_erasebl &ebuf, NULL);if (ret != -EOPNOTSUPP ) {if (ret) { -D1 (printk (KERN_DEBUG "MTD point failed %d\n" , ret)); +jffs2_dbg (1 ,"MTD point failed %d\n" , ret); goto do_flash_read; }if (retlen < c->sector_size) {/* Don't muck about if it won't let us point to the whole erase sector */ -D1 (printk (KERN_DEBUG "MTD point returned len too short: 0x%zx\n" , retlen)); +jffs2_dbg (1 ,"MTD point returned len too short: 0x%zx\n" , + retlen);mtd_unpoint (c->mtd, jeb->offset, retlen); goto do_flash_read; }
@@ -372,7 +377,7 @@ static int jffs2_block_check_erase(struct jffs2_sb_info *c, struct jffs2_eraseblreturn -EAGAIN ; } -D1 (printk (KERN_DEBUG "Verifying erase at 0x%08x\n" , jeb->offset)); +jffs2_dbg (1 ,"Verifying erase at 0x%08x\n" , jeb->offset);for (ofs = jeb->offset; ofs < jeb->offset + c->sector_size; ) {uint32_t readlen =min ((uint32_t )PAGE_SIZE , jeb->offset + c->sector_size - ofs);
@@ -422,7 +427,7 @@ static void jffs2_mark_erased_block(struct jffs2_sb_info *c, struct jffs2_eraseb }/* Write the erase complete marker */ -D1 (printk (KERN_DEBUG "Writing erased marker to block at 0x%08x\n" , jeb->offset)); +jffs2_dbg (1 ,"Writing erased marker to block at 0x%08x\n" , jeb->offset); bad_offset = jeb->offset;/* Cleanmarker in oob area or no cleanmarker at all ? */
fs/jffs2/file.c +18 -13
@@ -85,7 +85,8 @@ static int jffs2_do_readpage_nolock (struct inode *inode, struct page *pg)unsigned char *pg_buf;int ret; -D2 (printk (KERN_DEBUG "jffs2_do_readpage_nolock(): ino #%lu, page at offset 0x%lx\n" , inode->i_ino, pg->index <<PAGE_CACHE_SHIFT )); +jffs2_dbg (2 ,"%s(): ino #%lu, page at offset 0x%lx\n" , + __func__, inode->i_ino, pg->index <<PAGE_CACHE_SHIFT );BUG_ON (!PageLocked (pg));
@@ -105,7 +106,7 @@ static int jffs2_do_readpage_nolock (struct inode *inode, struct page *pg)flush_dcache_page (pg);kunmap (pg); -D2 (printk (KERN_DEBUG "readpage finished\n" )); +jffs2_dbg (2 ,"readpage finished\n" );return ret; }
@@ -144,7 +145,7 @@ static int jffs2_write_begin(struct file *filp, struct address_space *mapping,return -ENOMEM ; *pagep = pg; -D1 (printk (KERN_DEBUG "jffs2_write_begin()\n" )); +jffs2_dbg (1 ,"%s()\n" , __func__);if (pageofs > inode->i_size) {/* Make new hole frag from old EOF to new page */
@@ -153,8 +154,8 @@ static int jffs2_write_begin(struct file *filp, struct address_space *mapping,struct jffs2_full_dnode *fn;uint32_t alloc_len; -D1 (printk (KERN_DEBUG "Writing new hole frag 0x%x-0x%x between current EOF and new page\n" , - (unsigned int )inode->i_size, pageofs)); +jffs2_dbg (1 ,"Writing new hole frag 0x%x-0x%x between current EOF and new page\n" , + (unsigned int )inode->i_size, pageofs); ret =jffs2_reserve_space (c,sizeof (ri), &alloc_len,ALLOC_NORMAL ,JFFS2_SUMMARY_INODE_SIZE );
@@ -198,7 +199,8 @@ static int jffs2_write_begin(struct file *filp, struct address_space *mapping, f->metadata =NULL ; }if (ret) { -D1 (printk (KERN_DEBUG "Eep. add_full_dnode_to_inode() failed in write_begin, returned %d\n" , ret)); +jffs2_dbg (1 ,"Eep. add_full_dnode_to_inode() failed in write_begin, returned %d\n" , + ret);jffs2_mark_node_obsolete (c, fn->raw);jffs2_free_full_dnode (fn);jffs2_complete_reservation (c);
@@ -222,7 +224,7 @@ static int jffs2_write_begin(struct file *filp, struct address_space *mapping,if (ret) goto out_page; } -D1 (printk (KERN_DEBUG "end write_begin(). pg->flags %lx\n" , pg->flags)); +jffs2_dbg (1 ,"end write_begin(). pg->flags %lx\n" , pg->flags);return ret; out_page:
@@ -248,8 +250,9 @@ static int jffs2_write_end(struct file *filp, struct address_space *mapping,int ret =0 ;uint32_t writtenlen =0 ; -D1 (printk (KERN_DEBUG "jffs2_write_end(): ino #%lu, page at 0x%lx, range %d-%d, flags %lx\n" , - inode->i_ino, pg->index <<PAGE_CACHE_SHIFT , start, end, pg->flags)); +jffs2_dbg (1 ,"%s(): ino #%lu, page at 0x%lx, range %d-%d, flags %lx\n" , + __func__, inode->i_ino, pg->index <<PAGE_CACHE_SHIFT , + start, end, pg->flags);/* We need to avoid deadlock with page_cache_read() in jffs2_garbage_collect_pass(). So the page must be
@@ -268,7 +271,8 @@ static int jffs2_write_end(struct file *filp, struct address_space *mapping, ri =jffs2_alloc_raw_inode ();if (!ri) { -D1 (printk (KERN_DEBUG "jffs2_write_end(): Allocation of raw inode failed\n" )); +jffs2_dbg (1 ,"%s(): Allocation of raw inode failed\n" , + __func__);unlock_page (pg);page_cache_release (pg);return -ENOMEM ;
@@ -315,13 +319,14 @@ static int jffs2_write_end(struct file *filp, struct address_space *mapping,/* generic_file_write has written more to the page cache than we've actually written to the medium. Mark the page !Uptodate so that it gets reread */ -D1 (printk (KERN_DEBUG "jffs2_write_end(): Not all bytes written. Marking page !uptodate\n" )); +jffs2_dbg (1 ,"%s(): Not all bytes written. Marking page !uptodate\n" , + __func__);SetPageError (pg);ClearPageUptodate (pg); } -D1 (printk (KERN_DEBUG "jffs2_write_end() returning %d\n" , - writtenlen >0 ? writtenlen : ret)); +jffs2_dbg (1 ,"%s() returning %d\n" , + __func__, writtenlen >0 ? writtenlen : ret);unlock_page (pg);page_cache_release (pg);return writtenlen >0 ? writtenlen : ret;
fs/jffs2/fs.c +25 -18
129 lines not on this page · raw message
fs/jffs2/gc.c +96 -66
410 lines not on this page · raw message
fs/jffs2/nodemgmt.c +96 -65
382 lines not on this page · raw message
fs/jffs2/read.c +28 -19
106 lines not on this page · raw message
fs/jffs2/scan.c +74 -52
340 lines not on this page · raw message
fs/jffs2/super.c +5 -5
@@ -69,7 +69,7 @@ static void jffs2_write_super(struct super_block *sb) sb->s_dirt =0 ;if (!(sb->s_flags &MS_RDONLY )) { -D1 (printk (KERN_DEBUG "jffs2_write_super()\n" )); +jffs2_dbg (1 ,"%s()\n" , __func__);jffs2_flush_wbuf_gc (c,0 ); }
@@ -266,9 +266,9 @@ static int jffs2_fill_super(struct super_block *sb, void *data, int silent)struct jffs2_sb_info *c;int ret; -D1 (printk (KERN_DEBUG "jffs2_get_sb_mtd():" +jffs2_dbg (1 ,"jffs2_get_sb_mtd():" " New superblock for device %d (\"%s\")\n" , - sb->s_mtd->index, sb->s_mtd->name)); + sb->s_mtd->index, sb->s_mtd->name); c =kzalloc (sizeof (*c),GFP_KERNEL );if (!c)
@@ -315,7 +315,7 @@ static void jffs2_put_super (struct super_block *sb) {struct jffs2_sb_info *c =JFFS2_SB_INFO (sb); -D2 (printk (KERN_DEBUG "jffs2: jffs2_put_super()\n" )); +jffs2_dbg (2 ,"%s()\n" , __func__);if (sb->s_dirt)jffs2_write_super (sb);
@@ -336,7 +336,7 @@ static void jffs2_put_super (struct super_block *sb)kfree (c->inocache_list);jffs2_clear_xattr_subsystem (c);mtd_sync (c->mtd); -D1 (printk (KERN_DEBUG "jffs2_put_super returning\n" )); +jffs2_dbg (1 ,"%s(): returning\n" , __func__); }static void jffs2_kill_sb (struct super_block *sb)
fs/jffs2/symlink.c +2 -1
@@ -50,7 +50,8 @@ static void *jffs2_follow_link(struct dentry *dentry, struct nameidata *nd)printk (KERN_ERR "jffs2_follow_link(): can't find symlink target\n" ); p =ERR_PTR (-EIO ); } -D1 (printk (KERN_DEBUG "jffs2_follow_link(): target path is '%s'\n" , (char *) f->target)); +jffs2_dbg (1 ,"%s(): target path is '%s'\n" , + __func__, (char *)f->target);nd_set_link (nd, p);
fs/jffs2/wbuf.c +37 -30
201 lines not on this page · raw message
fs/jffs2/write.c +41 -33
207 lines not on this page · raw message
Signature · 1 line
1.7.8.111.gad25c.dirty
Re: [PATCH 1/4] jffs2: Convert most D1/D2 macros to jffs2_dbg
Quoted 7 lines · Joe Perches
D1 and D2 macros are mostly uses to emit debugging messages.
Convert the logging uses of D1 & D2 to
jffs2_dbg(level, fmt, ...)to be a bit more consistent style with the rest of the kernel.All
jffs2_dbgoutput is now atKERN_DEBUGwhere some of the previous uses were emitted at various KERN_<LEVEL>s.
I would just kill all the levels and left only the first one - others are not useful. This FS is in the kernel for ages and it is safe to assume it is robust enough to require no level 2. And change the Kconfig correspondingly.
I would accept that to my l2 tree, although the final word is from dwmw2, of course.
Quoted 2 lines
Signed-off-by Joe Perches <[email protected]>
Would it please be possible to make the patch which introduces jffs2_dbg macros be separate? It is very difficult to find the definition (most interesting in this patch) while looking at the e-mail.
fs/jffs2/background.c int jffs2_start_garbage_collect_thread(struct jffs2_sb_info *c) · line 51
Quoted 7 lines
fs/jffs2/background.c +2
-1@@ -47,7 +47,8 @@ int jffs2_start_garbage_collect_thread(struct jffs2_sb_info *c) ret =PTR_ERR (tsk); }else {/* Wait for it... */ -D1 (printk (KERN_DEBUG "JFFS2: Garbage collect thread is pid %d\n" , tsk->pid)); +jffs2_dbg (1 ,"JFFS2: Garbage collect thread is pid %d\n" , + tsk->pid);
Notice JFFS2 prefix.
fs/jffs2/background.c void jffs2_stop_garbage_collect_thread(struct jffs2_sb_info *c) · line 64
Quoted 2 lines
fs/jffs2/background.c +1
-1-D1 (printk (KERN_DEBUG "jffs2: Killing GC task %d\n" , c->gc_task->pid)); +jffs2_dbg (1 ,"jffs2: Killing GC task %d\n" , c->gc_task->pid);
Here and in many other places we have jffs2: prefix.
How about make one more step forward and remove this prefix from all the messages and make it to be part of the 'jffs2_dbg' macro?
Really, just mechanical D1 -> jffs2_dbg() translation is not so interesting.
fs/jffs2/background.c static int jffs2_garbage_collect_thread(void *_c) · line 113
Quoted 2 lines
fs/jffs2/background.c +1
-1-D1 (printk (KERN_DEBUG "jffs2_garbage_collect_thread(): kthread_stop() called.\n" )); +jffs2_dbg (1 ,"%s(): kthread_stop() called\n" , __func__);
A lot of messages have the function name prefix - would you make another step forward and make this to be generated by 'jffs2_dbg()' instead as well?
I believe you may not worry about breaking anything by changing the messages.
Review int jffs2_start_garbage_collect_thread(struct jffs2_sb_info *c)
Quoted 2 lines
(quoted diff) +2
-0+ jffs2_dbg(1, "%s(): SIGSTOP received\n", + __func__);
May become a one-liner here and in many other places.
Review
Quoted 3 lines
;
(quoted diff) +2
-0+ jffs2_dbg(1, "%s(): SIGKILL received\n", + __func__);
Ditto, and there are many other places.
fs/jffs2/erase.c static void jffs2_erase_block(struct jffs2_sb_info *c, · line 51
Quoted 5 lines
fs/jffs2/erase.c +3
-2-D1 (printk (KERN_DEBUG "jffs2_erase_block(): erase block %#08x (range %#08x-%#08x)\n" , - jeb->offset, jeb->offset, jeb->offset + c->sector_size)); +jffs2_dbg (1 ,"%s(): erase block %#08x (range %#08x-%#08x)\n" , + __func__, + jeb->offset, jeb->offset, jeb->offset + c->sector_size);
Probably lines can be joined?
fs/jffs2/gc.c static int jffs2_garbage_collect_dnode(struct jffs2_sb_info *c, struct jffs2_era · line 1195
Quoted 7 lines
fs/jffs2/gc.c +4
-2if (jeb == c->gcblock) { -D1 (printk (KERN_DEBUG "Expanding down to cover frag (0x%x-0x%x) in gcblock at %08x\n" , - frag->ofs, frag->ofs+frag->size,ref_offset (raw))); +jffs2_dbg (1 ,"Expanding down to cover frag (0x%x-0x%x) in gcblock at %08x\n" , + frag->ofs, + frag->ofs + frag->size, +ref_offset (raw));
Lines can be joined, and in other places as well.
fs/jffs2/gc.c static int jffs2_garbage_collect_dnode(struct jffs2_sb_info *c, struct jffs2_era
Quoted 9 lines
fs/jffs2/gc.c +6
-2- frag->ofs, frag->ofs+frag->size, jeb->offset)); +jffs2_dbg (1 ,"Not expanding down to cover frag (0x%x-0x%x) in clean block %08x\n" , + frag->ofs, + frag->ofs + frag->size, + jeb->offset); -D1 (printk (KERN_DEBUG "Obsoleting previously unchecked node at 0x%08x of len %x: " ,ref_offset (ref), freed_len)); +jffs2_dbg (1 ,"Obsoleting previously unchecked node at 0x%08x of len %x\n" , +ref_offset (ref), freed_len);
What happened to the indentation?
fs/jffs2/nodemgmt.c void jffs2_mark_node_obsolete(struct jffs2_sb_info *c, struct jffs2_raw_node_ref · line 579
Quoted 3 lines
fs/jffs2/nodemgmt.c +2
-1-D1 (printk (KERN_DEBUG "Obsoleting node at 0x%08x of len %#x: " ,ref_offset (ref), freed_len)); +jffs2_dbg (1 ,"Obsoleting node at 0x%08x of len %#x: " , +ref_offset (ref), freed_len);
And here.
... did not review further.
Signature · 2 lines
Best Regards, Artem Bityutskiy
Re: [PATCH 1/4] jffs2: Convert most D1/D2 macros to jffs2_dbg
Quoted 1 line · Artem Bityutskiy
On Wed, 2012-02-15 at 15:56 -0800, Joe Perches wrote:
[]
Quoted 7 lines
I would just kill all the levels and left only the first one - others are not useful. This FS is in the kernel for ages and it is safe to assume it is robust enough to require no level 2. And change the
Kconfigcorrespondingly.I would accept that to my l2 tree, although the final word is from dwmw2, of course.
Separate patch I think.
Quoted 3 lines
Would it please be possible to make the patch which introduces
jffs2_dbgmacros be separate? It is very difficult to find the definition (most interesting in this patch) while looking at the e-mail.
Shrug. Maybe if David W wants it so.
Quoted 2 lines
How about make one more step forward and remove this prefix from all the messages and make it to be part of the '
jffs2_dbg' macro?
Maybe in another patch.
[]
Quoted 2 lines
Review
Quoted 2 lines
(quoted diff) +2
-0+ jffs2_dbg(1, "%s(): SIGSTOP received\n", + __func__);
jffs2_dbg(1, "%s(): SIGSTOP received\n",
Quoted 1 line
May become a one-liner here and in many other places.
Goes beyond 80 chars.
Quoted 4 lines
Review
Quoted 2 lines
(quoted diff) +2
-0+ jffs2_dbg(1, "%s(): SIGKILL received\n", + __func__);Ditto, and there are many other places.
Same as above.
Quoted 7 lines
fs/jffs2/erase.c static void jffs2_erase_block(struct jffs2_sb_info *c, · line 51
Quoted 5 lines
fs/jffs2/erase.c +3
-2-D1 (printk (KERN_DEBUG "jffs2_erase_block(): erase block %#08x (range %#08x-%#08x)\n" , - jeb->offset, jeb->offset, jeb->offset + c->sector_size)); +jffs2_dbg (1 ,"%s(): erase block %#08x (range %#08x-%#08x)\n" , + __func__, + jeb->offset, jeb->offset, jeb->offset + c->sector_size);Probably lines can be joined?
Going to have that many lines anyway.
Quoted 9 lines
fs/jffs2/gc.c static int jffs2_garbage_collect_dnode(struct jffs2_sb_info *c, struct jffs2_era · line 1195
Quoted 7 lines
fs/jffs2/gc.c +4
-2if (jeb == c->gcblock) { -D1 (printk (KERN_DEBUG "Expanding down to cover frag (0x%x-0x%x) in gcblock at %08x\n" , - frag->ofs, frag->ofs+frag->size,ref_offset (raw))); +jffs2_dbg (1 ,"Expanding down to cover frag (0x%x-0x%x) in gcblock at %08x\n" , + frag->ofs, + frag->ofs + frag->size, +ref_offset (raw));Lines can be joined, and in other places as well.
Not really. Try it.
Quoted 11 lines
fs/jffs2/gc.c static int jffs2_garbage_collect_dnode(struct jffs2_sb_info *c, struct jffs2_era
Quoted 9 lines
fs/jffs2/gc.c +6
-2- frag->ofs, frag->ofs+frag->size, jeb->offset)); +jffs2_dbg (1 ,"Not expanding down to cover frag (0x%x-0x%x) in clean block %08x\n" , + frag->ofs, + frag->ofs + frag->size, + jeb->offset); -D1 (printk (KERN_DEBUG "Obsoleting previously unchecked node at 0x%08x of len %x: " ,ref_offset (ref), freed_len)); +jffs2_dbg (1 ,"Obsoleting previously unchecked node at 0x%08x of len %x\n" , +ref_offset (ref), freed_len);What happened to the indentation?
Incorrect before, correct now.
It's still in a D1 block.
Artem Bityutskiy
AppliedRe: [PATCH 1/4] jffs2: Convert most D1/D2 macros to jffs2_dbg
Quoted 8 lines · Joe Perches
Quoted 1 line · Artem Bityutskiy
On Wed, 2012-02-15 at 15:56 -0800, Joe Perches wrote:
[]
Quoted 5 lines
I would just kill all the levels and left only the first one - others are not useful. This FS is in the kernel for ages and it is safe to assume it is robust enough to require no level 2. And change the
Kconfigcorrespondingly.
Quoted 4 lines
Quoted 2 lines
I would accept that to my l2 tree, although the final word is from dwmw2, of course.
Separate patch I think.
OK, pushed these ones, although I think that mechanical D1->jffs2_dbg() conversion is not very useful and to make your patch-set worth the trouble you should do few more clean-up steps, like I suggested.
Let's push these patches as they are anyway to make sure the work you have done does not get lost.
Pushed to l2-mtd.git, thanks!
Signature · 2 lines
Best Regards, Artem Bityutskiy
Re: [PATCH 1/4] jffs2: Convert most D1/D2 macros to jffs2_dbg
Quoted 3 lines · Artem Bityutskiy
OK, pushed these ones, although I think that mechanical
D1->jffs2_dbg()conversion is not very useful and to make your patch-set worth the trouble you should do few more clean-up steps, like I suggested.
Do you want me to remove the D2/jffs2_dbg(2, ...) instances or just eliminate the first arg to jffs2_dbg and keep the current jffs2_dbg(2,...) instances?
Re: [PATCH 1/4] jffs2: Convert most D1/D2 macros to jffs2_dbg
Quoted 8 lines · Joe Perches
Quoted 3 lines · Artem Bityutskiy
OK, pushed these ones, although I think that mechanical
D1->jffs2_dbg()conversion is not very useful and to make your patch-set worth the trouble you should do few more clean-up steps, like I suggested.Do you want me to remove the D2/jffs2_dbg(2, ...) instances or just eliminate the first arg to
jffs2_dbgand keep the currentjffs2_dbg(2,...)instances?
Just remove. There were few other suggestions as well :-)
Signature · 2 lines
Best Regards, Artem Bityutskiy
Re: [PATCH 1/4] jffs2: Convert most D1/D2 macros to jffs2_dbg
Quoted 11 lines · Artem Bityutskiy
Quoted 8 lines · Joe Perches
Quoted 3 lines · Artem Bityutskiy
OK, pushed these ones, although I think that mechanical
D1->jffs2_dbg()conversion is not very useful and to make your patch-set worth the trouble you should do few more clean-up steps, like I suggested.Do you want me to remove the D2/jffs2_dbg(2, ...) instances or just eliminate the first arg to
jffs2_dbgand keep the currentjffs2_dbg(2,...)instances?Just remove. There were few other suggestions as well :-)
what about all the dbg_<foo> calls likedbg_readinode(fmt, ...)?
I tentatively converted them to a bitmap
and a single jffs2_dbg(mask, fmt, ...)
but perhaps all of these could be deleted
too.
Re: [PATCH 1/4] jffs2: Convert most D1/D2 macros to jffs2_dbg
Quoted 13 lines · Joe Perches
Quoted 11 lines · Artem Bityutskiy
Quoted 8 lines · Joe Perches
Quoted 3 lines · Artem Bityutskiy
OK, pushed these ones, although I think that mechanical
D1->jffs2_dbg()conversion is not very useful and to make your patch-set worth the trouble you should do few more clean-up steps, like I suggested.Do you want me to remove the D2/jffs2_dbg(2, ...) instances or just eliminate the first arg to
jffs2_dbgand keep the currentjffs2_dbg(2,...)instances?Just remove. There were few other suggestions as well :-)
Quoted 7 lines
what about all the dbg_<foo> calls like
dbg_readinode(fmt, ...)?I tentatively converted them to a bitmap
and a singlejffs2_dbg(mask, fmt, ...)
but perhaps all of these could be deleted
too.
I think it is better to convert them to jffs2_debug(). And I guess after the change the "mask" parameter will go away?
Signature · 2 lines
Best Regards, Artem Bityutskiy
Re: [PATCH 1/4] jffs2: Convert most D1/D2 macros to jffs2_dbg
Quoted 8 lines · Artem Bityutskiy
Quoted 4 lines · Joe Perches
I tentatively converted them to a bitmap
and a singlejffs2_dbg(mask, fmt, ...)
but perhaps all of these could be deleted
too.I think it is better to convert them to
jffs2_debug(). And I guess after the change the "mask" parameter will go away?
Mask would remain and perhaps become a module variable instead of a compile #define.
What is jffs2_debug? Do you mean JFFS2_DEBUG? My intent was to remove JFFS2_<LEVEL> defines and uses. These #defines add
"(%d) %s" ... task_pid_nr(current), __func__
which can be added if really necessary via pr_fmt to generic pr_<level> uses.
I am not certain of the value for generic uses of task_pid_nr in pr_notice,pr_err, or pr_info.
Dynamic debugging has the ability to optionally add task_pid_vnr and __func__ to pr_debug output.
Re: [PATCH 1/4] jffs2: Convert most D1/D2 macros to jffs2_dbg
Quoted 7 lines · Joe Perches
Quoted 6 lines · Artem Bityutskiy
Quoted 4 lines · Joe Perches
I tentatively converted them to a bitmap
and a singlejffs2_dbg(mask, fmt, ...)
but perhaps all of these could be deleted
too.
Quoted 7 lines
Quoted 2 lines
I think it is better to convert them to
jffs2_debug(). And I guess after the change the "mask" parameter will go away?Mask would remain and perhaps become a module
variable instead of a compile #define.What is
jffs2_debug?
Sorry, I meant to suggest to just turn them all to jffs2_dbg() which you introduced, without any bitmasks.
Signature · 2 lines
Best Regards, Artem Bityutskiy
Re: [PATCH 1/4] jffs2: Convert most D1/D2 macros to jffs2_dbg
Quoted 7 lines · Artem Bityutskiy
Quoted 6 lines · Joe Perches
Quoted 5 lines · Artem Bityutskiy
Quoted 4 lines · Joe Perches
I tentatively converted them to a bitmap
and a singlejffs2_dbg(mask, fmt, ...)
but perhaps all of these could be deleted
too.
Quoted 7 lines
Quoted 5 lines
Quoted 2 lines
I think it is better to convert them to
jffs2_debug(). And I guess after the change the "mask" parameter will go away?Mask would remain and perhaps become a module
variable instead of a compile #define.
What isjffs2_debug?Sorry, I meant to suggest to just turn them all to
jffs2_dbg()which you introduced, without any bitmasks.
These functions are conditionally compiled today.
Introducing a bitmask allows the same conditional
compilation optimization.
David? as nominal maintainer, do you have an opinion?
btw: Artem, you are not listed in the MAINTAINERS
entry for jffs2. Should you be?
Re: [PATCH 1/4] jffs2: Convert most D1/D2 macros to jffs2_dbg
Quoted 4 lines · Joe Perches
These functions are conditionally compiled today.
Introducing a bitmask allows the same conditional
compilation optimization.
Yeah, I know, but I think this is useless and can be just killed.
Quoted 1 line
David? as nominal maintainer, do you have an opinion?
But you are right that I do not give guarantee David will accept this. I can only get this to my l2-mtd.git tree.
Quoted 2 lines
btw: Artem, you are not listed in the
MAINTAINERS
entry for jffs2. Should you be?
No, I am not JFFS2 maintainer and would not want to be because nowadays JFFS2 is on its slow death path and very few people take care of it.
P.S.: it looks like this is where whole MTD stuff is trending as well :-(
Signature · 2 lines
Best Regards, Artem Bityutskiy
PATCH 1/1 jffs2: Fix build when CONFIG_JFFS2_FS_DEBUG > 0
In reply to Artem Bityutskiycommit c6f6dad20d71 ("jffs2: Standardize JFFS_<LEVEL> uses") broke the build when CONFIG_JFFS2_FS_DEBUG > 0. Similarly, commit 41f75c15285c ("jffs2: Convert printks to pr_<level>") also broke the build.
Oops. Insufficient compile testing...
--- fs/jffs2/debug.c | 2 +- fs/jffs2/debug.h | 5 +++++ 2 files changed, 6 insertions(+), 1 deletions(-)
fs/jffs2/debug.c +1 -1
@@ -267,7 +267,7 @@ void __jffs2_dbg_superblock_counts(struct jffs2_sb_info *c) do { \ if (sz != c->sz##_size) { \ pr_warn("%s_size mismatch counted 0x%x, c->%s_size 0x%x\n", \ - #sz, #sz, sz, c->sz##_size); \ + #sz, sz, #sz, c->sz##_size); \ dump = 1; \ } \ } while (0)
fs/jffs2/debug.h +5 -0
@@ -69,6 +69,11 @@ do { \ pr_debug(fmt, ##__VA_ARGS__); \ }while (0 ) +/* The prefixes of JFFS2 messages */ +#define JFFS2_DBG KERN_DEBUG +#define JFFS2_DBG_PREFIX "[JFFS2 DBG]" +#define JFFS2_DBG_MSG_PREFIX JFFS2_DBG JFFS2_DBG_PREFIX +/* JFFS2 message macros */ #define JFFS2_ERROR (fmt, ...) \ pr_err("error: (%d) %s: " fmt, \
Signature · 1 line
1.7.8.111.gad25c.dirty
Re: [PATCH l2-mtd] jffs2: Fix build when CONFIG_JFFS2_FS_DEBUG > 0
Quoted 6 lines · Joe Perches
commit
c6f6dad20d71("jffs2: Standardize JFFS_<LEVEL> uses") broke the build whenCONFIG_JFFS2_FS_DEBUG> 0. Similarly, commit41f75c15285c("jffs2: Convert printks to pr_<level>") also broke the build.Oops. Insufficient compile testing...
Folded in and pushed to l2-mtd.git, thanks!
Signature · 2 lines
Best Regards, Artem Bityutskiy
PATCH 2/4 jffs2: Convert printks to pr_<level>
In reply to Joe PerchesUse the more current logging style.
Coalesce formats, align arguments.
Convert uses of embedded function names to %s, __func__.
A couple of long line checkpatch errors I don't care about exist.
--- fs/jffs2/background.c | 5 +- fs/jffs2/compr.c | 17 +++-- fs/jffs2/compr_zlib.c | 6 +- fs/jffs2/debug.c | 20 ++++--- fs/jffs2/dir.c | 7 +- fs/jffs2/erase.c | 36 +++++++---- fs/jffs2/fs.c | 22 ++++--- fs/jffs2/gc.c | 158 +++++++++++++++++++++++++++--------------------- fs/jffs2/nodelist.c | 28 +++++---- fs/jffs2/nodemgmt.c | 51 ++++++++++------ fs/jffs2/read.c | 21 ++++--- fs/jffs2/scan.c | 84 ++++++++++++++------------ fs/jffs2/summary.c | 11 ++- fs/jffs2/super.c | 18 +++--- fs/jffs2/symlink.c | 2 +- fs/jffs2/wbuf.c | 83 +++++++++++++------------- fs/jffs2/write.c | 37 +++++++----- 17 files changed, 342 insertions(+), 264 deletions(-)
fs/jffs2/background.c +3 -2
@@ -42,7 +42,8 @@ int jffs2_start_garbage_collect_thread(struct jffs2_sb_info *c) tsk =kthread_run (jffs2_garbage_collect_thread, c,"jffs2_gcd_mtd%d" , c->mtd->index);if (IS_ERR (tsk)) { -printk (KERN_WARNING "fork failed for JFFS2 garbage collect thread: %ld\n" , -PTR_ERR (tsk)); +pr_warn ("fork failed for JFFS2 garbage collect thread: %ld\n" , + -PTR_ERR (tsk));complete (&c->gc_thread_exit); ret =PTR_ERR (tsk); }else {
@@ -152,7 +153,7 @@ static int jffs2_garbage_collect_thread(void *_c)jffs2_dbg (1 ,"%s(): pass\n" , __func__);if (jffs2_garbage_collect_pass (c) == -ENOSPC ) { -printk (KERN_NOTICE "No space for garbage collection. Aborting GC thread\n" ); +pr_notice ("No space for garbage collection. Aborting GC thread\n" ); goto die; } }
fs/jffs2/compr.c +10 -7
@@ -79,7 +79,7 @@ static int jffs2_selected_compress(u8 compr, unsigned char *data_in, output_buf =kmalloc (*cdatalen,GFP_KERNEL );if (!output_buf) { -printk (KERN_WARNING "JFFS2: No memory for compressor allocation. Compression failed.\n" ); +pr_warn ("JFFS2: No memory for compressor allocation. Compression failed.\n" );return ret; } orig_slen = *datalen;
@@ -188,7 +188,8 @@ uint16_t jffs2_compress(struct jffs2_sb_info *c, struct jffs2_inode_info *f, tmp_buf =kmalloc (orig_slen,GFP_KERNEL );spin_lock (&jffs2_compressor_list_lock);if (!tmp_buf) { -printk (KERN_WARNING "JFFS2: No memory for compressor allocation. (%d bytes)\n" , orig_slen); +pr_warn ("JFFS2: No memory for compressor allocation. (%d bytes)\n" , + orig_slen);continue ; }else {
@@ -235,7 +236,7 @@ uint16_t jffs2_compress(struct jffs2_sb_info *c, struct jffs2_inode_info *f, cpage_out, datalen, cdatalen);break ;default : -printk (KERN_ERR "JFFS2: unknown compression mode.\n" ); +pr_err ("JFFS2: unknown compression mode\n" ); }if (ret ==JFFS2_COMPR_NONE ) {
@@ -277,7 +278,8 @@ int jffs2_decompress(struct jffs2_sb_info *c, struct jffs2_inode_info *f, ret = this->decompress (cdata_in, data_out, cdatalen, datalen);spin_lock (&jffs2_compressor_list_lock);if (ret) { -printk (KERN_WARNING "Decompressor \"%s\" returned %d\n" , this->name, ret); +pr_warn ("Decompressor \"%s\" returned %d\n" , + this->name, ret); }else { this->stat_decompr_blocks++;
@@ -287,7 +289,8 @@ int jffs2_decompress(struct jffs2_sb_info *c, struct jffs2_inode_info *f,return ret; } } -printk (KERN_WARNING "JFFS2 compression type 0x%02x not available.\n" , comprtype); +pr_warn ("JFFS2 compression type 0x%02x not available\n" , + comprtype);spin_unlock (&jffs2_compressor_list_lock);return -EIO ; }
@@ -299,7 +302,7 @@ int jffs2_register_compressor(struct jffs2_compressor *comp)struct jffs2_compressor *this;if (!comp->name) { -printk (KERN_WARNING "NULL compressor name at registering JFFS2 compressor. Failed.\n" ); +pr_warn ("NULL compressor name at registering JFFS2 compressor. Failed.\n" );return -1 ; } comp->compr_buf_size=0 ;
@@ -340,7 +343,7 @@ int jffs2_unregister_compressor(struct jffs2_compressor *comp)if (comp->usecount) {spin_unlock (&jffs2_compressor_list_lock); -printk (KERN_WARNING "JFFS2: Compressor module is in use. Unregister failed.\n" ); +pr_warn ("JFFS2: Compressor module is in use. Unregister failed.\n" );return -1 ; }list_del (&comp->list);
fs/jffs2/compr_zlib.c +3 -3
@@ -79,7 +79,7 @@ static int jffs2_zlib_compress(unsigned char *data_in,mutex_lock (&deflate_mutex);if (Z_OK !=zlib_deflateInit (&def_strm,3 )) { -printk (KERN_WARNING "deflateInit failed\n" ); +pr_warn ("deflateInit failed\n" );mutex_unlock (&deflate_mutex);return -1 ; }
@@ -169,7 +169,7 @@ static int jffs2_zlib_decompress(unsigned char *data_in,if (Z_OK !=zlib_inflateInit2 (&inf_strm, wbits)) { -printk (KERN_WARNING "inflateInit failed\n" ); +pr_warn ("inflateInit failed\n" );mutex_unlock (&inflate_mutex);return 1 ; }
@@ -177,7 +177,7 @@ static int jffs2_zlib_decompress(unsigned char *data_in,while ((ret =zlib_inflate (&inf_strm,Z_FINISH )) ==Z_OK ) ;if (ret !=Z_STREAM_END ) { -printk (KERN_NOTICE "inflate returned %d\n" , ret); +pr_notice ("inflate returned %d\n" , ret); }zlib_inflateEnd (&inf_strm);mutex_unlock (&inflate_mutex);
fs/jffs2/debug.c +12 -8
@@ -261,12 +261,15 @@ void __jffs2_dbg_superblock_counts(struct jffs2_sb_info *c) bad += c->sector_size; } -#define check (sz) \ - if (sz != c->sz##_size) { \ - printk(KERN_WARNING #sz "_size mismatch counted 0x%x, c->" #sz "_size 0x%x\n", \ - sz, c->sz##_size); \ - dump = 1; \ - } +#define check (sz) \ +do { \ + if (sz != c->sz##_size) { \ + pr_warn("%s_size mismatch counted 0x%x, c->%s_size 0x%x\n", \ + #sz, #sz, sz, c->sz##_size); \ + dump = 1; \ + } \ +} while (0) +check (free);check (dirty);check (used);
@@ -274,11 +277,12 @@ void __jffs2_dbg_superblock_counts(struct jffs2_sb_info *c)check (unchecked);check (bad);check (erasing); +#undef checkif (nr_counted != c->nr_blocks) { -printk (KERN_WARNING "%s counted only 0x%x blocks of 0x%x. Where are the others?\n" , - __func__, nr_counted, c->nr_blocks); +pr_warn ("%s counted only 0x%x blocks of 0x%x. Where are the others?\n" , + __func__, nr_counted, c->nr_blocks); dump =1 ; }
fs/jffs2/dir.c +4 -3
@@ -103,7 +103,7 @@ static struct dentry *jffs2_lookup(struct inode *dir_i, struct dentry *target,if (ino) { inode =jffs2_iget (dir_i->i_sb, ino);if (IS_ERR (inode)) -printk (KERN_WARNING "iget() failed for ino #%u\n" , ino); +pr_warn ("iget() failed for ino #%u\n" , ino); }return d_splice_alias (inode, target);
@@ -365,7 +365,7 @@ static int jffs2_symlink (struct inode *dir_i, struct dentry *dentry, const char/* We use f->target field to store the target path. */ f->target =kmemdup (target, targetlen +1 ,GFP_KERNEL );if (!f->target) { -printk (KERN_WARNING "Can't allocate %d bytes of memory\n" , targetlen +1 ); +pr_warn ("Can't allocate %d bytes of memory\n" , targetlen +1 );mutex_unlock (&f->sem);jffs2_complete_reservation (c); ret = -ENOMEM ;
@@ -860,7 +860,8 @@ static int jffs2_rename (struct inode *old_dir_i, struct dentry *old_dentry, f->inocache->pino_nlink++;mutex_unlock (&f->sem); -printk (KERN_NOTICE "jffs2_rename(): Link succeeded, unlink failed (err %d). You now have a hard link\n" , ret); +pr_notice ("%s(): Link succeeded, unlink failed (err %d). You now have a hard link\n" , + __func__, ret);/* Might as well let the VFS know */ d_instantiate (new_dentry, old_dentry->d_inode);ihold (old_dentry->d_inode);
fs/jffs2/erase.c +22 -14
@@ -51,7 +51,7 @@ static void jffs2_erase_block(struct jffs2_sb_info *c, jeb->offset, jeb->offset, jeb->offset + c->sector_size); instr =kmalloc (sizeof (struct erase_info ) +sizeof (struct erase_priv_struct ),GFP_KERNEL );if (!instr) { -printk (KERN_WARNING "kmalloc for struct erase_info in jffs2_erase_block failed. Refiling block for later\n" ); +pr_warn ("kmalloc for struct erase_info in jffs2_erase_block failed. Refiling block for later\n" );mutex_lock (&c->erase_free_sem);spin_lock (&c->erase_completion_lock);list_move (&jeb->list, &c->erase_pending_list);
@@ -99,9 +99,11 @@ static void jffs2_erase_block(struct jffs2_sb_info *c, }if (ret == -EROFS ) -printk (KERN_WARNING "Erase at 0x%08x failed immediately: -EROFS. Is the sector locked?\n" , jeb->offset); +pr_warn ("Erase at 0x%08x failed immediately: -EROFS. Is the sector locked?\n" , + jeb->offset);else -printk (KERN_WARNING "Erase at 0x%08x failed immediately: errno %d\n" , jeb->offset, ret); +pr_warn ("Erase at 0x%08x failed immediately: errno %d\n" , + jeb->offset, ret);jffs2_erase_failed (c, jeb, bad_offset); }
@@ -217,7 +219,7 @@ static void jffs2_erase_callback(struct erase_info *instr)struct erase_priv_struct *priv = (void *)instr->priv;if (instr->state !=MTD_ERASE_DONE ) { -printk (KERN_WARNING "Erase at 0x%08llx finished, but state != MTD_ERASE_DONE. State is 0x%x instead.\n" , +pr_warn ("Erase at 0x%08llx finished, but state != MTD_ERASE_DONE. State is 0x%x instead.\n" , (unsigned long long )instr->addr, instr->state);jffs2_erase_failed (priv->c, priv->jeb, instr->fail_addr); }else {
@@ -284,7 +286,7 @@ static inline void jffs2_remove_node_refs_from_ino_list(struct jffs2_sb_info *c,printk (KERN_DEBUG );while (this) { -printk (KERN_CONT "0x%08x(%d)->" , +pr_cont ("0x%08x(%d)->" ,ref_offset (this),ref_flags (this));if (++i ==5 ) {printk (KERN_DEBUG );
@@ -292,7 +294,7 @@ static inline void jffs2_remove_node_refs_from_ino_list(struct jffs2_sb_info *c, } this = this->next_in_ino; } -printk (KERN_CONT "\n" ); +pr_cont ("\n" ); });switch (ic->class) {
@@ -364,8 +366,10 @@ static int jffs2_block_check_erase(struct jffs2_sb_info *c, struct jffs2_erasebl }while (--retlen);mtd_unpoint (c->mtd, jeb->offset, c->sector_size);if (retlen) { -printk (KERN_WARNING "Newly-erased block contained word 0x%lx at offset 0x%08tx\n" , - *wordebuf, jeb->offset + c->sector_size-retlen*sizeof (*wordebuf)); +pr_warn ("Newly-erased block contained word 0x%lx at offset 0x%08tx\n" , + *wordebuf, + jeb->offset + + c->sector_size-retlen *sizeof (*wordebuf));return -EIO ; }return 0 ;
@@ -373,7 +377,8 @@ static int jffs2_block_check_erase(struct jffs2_sb_info *c, struct jffs2_erasebl do_flash_read: ebuf =kmalloc (PAGE_SIZE ,GFP_KERNEL );if (!ebuf) { -printk (KERN_WARNING "Failed to allocate page buffer for verifying erase at 0x%08x. Refiling\n" , jeb->offset); +pr_warn ("Failed to allocate page buffer for verifying erase at 0x%08x. Refiling\n" , + jeb->offset);return -EAGAIN ; }
@@ -387,12 +392,14 @@ static int jffs2_block_check_erase(struct jffs2_sb_info *c, struct jffs2_erasebl ret =mtd_read (c->mtd, ofs, readlen, &retlen, ebuf);if (ret) { -printk (KERN_WARNING "Read of newly-erased block at 0x%08x failed: %d. Putting on bad_list\n" , ofs, ret); +pr_warn ("Read of newly-erased block at 0x%08x failed: %d. Putting on bad_list\n" , + ofs, ret); ret = -EIO ; goto fail; }if (retlen != readlen) { -printk (KERN_WARNING "Short read from newly-erased block at 0x%08x. Wanted %d, got %zd\n" , ofs, readlen, retlen); +pr_warn ("Short read from newly-erased block at 0x%08x. Wanted %d, got %zd\n" , + ofs, readlen, retlen); ret = -EIO ; goto fail; }
@@ -401,7 +408,8 @@ static int jffs2_block_check_erase(struct jffs2_sb_info *c, struct jffs2_eraseblunsigned long *datum = ebuf + i;if (*datum +1 ) { *bad_offset += i; -printk (KERN_WARNING "Newly-erased block contained word 0x%lx at offset 0x%08x\n" , *datum, *bad_offset); +pr_warn ("Newly-erased block contained word 0x%lx at offset 0x%08x\n" , + *datum, *bad_offset); ret = -EIO ; goto fail; }
@@ -456,10 +464,10 @@ static void jffs2_mark_erased_block(struct jffs2_sb_info *c, struct jffs2_erasebif (ret || retlen !=sizeof (marker)) {if (ret) -printk (KERN_WARNING "Write clean marker to block at 0x%08x failed: %d\n" , +pr_warn ("Write clean marker to block at 0x%08x failed: %d\n" , jeb->offset, ret);else -printk (KERN_WARNING "Short write to newly-erased block at 0x%08x: Wanted %zd, got %zd\n" , +pr_warn ("Short write to newly-erased block at 0x%08x: Wanted %zd, got %zd\n" , jeb->offset,sizeof (marker), retlen); goto filebad;
fs/jffs2/fs.c +13 -9
@@ -320,14 +320,16 @@ struct inode *jffs2_iget(struct super_block *sb, unsigned long ino)/* Read the device numbers from the media */ if (f->metadata->size !=sizeof (jdev.old_id) && f->metadata->size !=sizeof (jdev.new_id)) { -printk (KERN_NOTICE "Device node has strange size %d\n" , f->metadata->size); +pr_notice ("Device node has strange size %d\n" , + f->metadata->size); goto error_io; }jffs2_dbg (1 ,"Reading device numbers from flash\n" ); ret =jffs2_read_dnode (c, f, f->metadata, (char *)&jdev,0 , f->metadata->size);if (ret <0 ) {/* Eep */ -printk (KERN_NOTICE "Read device numbers for inode %lu failed\n" , (unsigned long )inode->i_ino); +pr_notice ("Read device numbers for inode %lu failed\n" , + (unsigned long )inode->i_ino); goto error; }if (f->metadata->size ==sizeof (jdev.old_id))
@@ -342,7 +344,8 @@ struct inode *jffs2_iget(struct super_block *sb, unsigned long ino)break ;default : -printk (KERN_WARNING "jffs2_read_inode(): Bogus imode %o for ino %lu\n" , inode->i_mode, (unsigned long )inode->i_ino); +pr_warn ("%s(): Bogus i_mode %o for ino %lu\n" , + __func__, inode->i_mode, (unsigned long )inode->i_ino); }mutex_unlock (&f->sem);
@@ -510,11 +513,11 @@ int jffs2_do_fill_super(struct super_block *sb, void *data, int silent)#ifndef CONFIG_JFFS2_FS_WRITEBUFFER if (c->mtd->type ==MTD_NANDFLASH ) { -printk (KERN_ERR "jffs2: Cannot operate on NAND flash unless jffs2 NAND support is compiled in.\n" ); +pr_err ("jffs2: Cannot operate on NAND flash unless jffs2 NAND support is compiled in.\n" );return -EINVAL ; }if (c->mtd->type ==MTD_DATAFLASH ) { -printk (KERN_ERR "jffs2: Cannot operate on DataFlash unless jffs2 DataFlash support is compiled in.\n" ); +pr_err ("jffs2: Cannot operate on DataFlash unless jffs2 DataFlash support is compiled in.\n" );return -EINVAL ; }#endif
@@ -528,12 +531,13 @@ int jffs2_do_fill_super(struct super_block *sb, void *data, int silent)*/ if ((c->sector_size * blocks) != c->flash_size) { c->flash_size = c->sector_size * blocks; -printk (KERN_INFO "jffs2: Flash size not aligned to erasesize, reducing to %dKiB\n" , +pr_info ("jffs2: Flash size not aligned to erasesize, reducing to %dKiB\n" , c->flash_size /1024 ); }if (c->flash_size <5 *c->sector_size) { -printk (KERN_ERR "jffs2: Too few erase blocks (%d)\n" , c->flash_size / c->sector_size); +pr_err ("jffs2: Too few erase blocks (%d)\n" , + c->flash_size / c->sector_size);return -EINVAL ; }
@@ -656,8 +660,8 @@ struct jffs2_inode_info *jffs2_gc_fetch_inode(struct jffs2_sb_info *c,return ERR_CAST (inode); }if (is_bad_inode (inode)) { -printk (KERN_NOTICE "Eep. read_inode() failed for ino #%u. unlinked %d\n" , - inum, unlinked); +pr_notice ("Eep. read_inode() failed for ino #%u. unlinked %d\n" , + inum, unlinked);/* NB. This will happen again. We need to do something appropriate here. */ iput (inode);return ERR_PTR (-EIO );
fs/jffs2/gc.c +89 -69
369 lines not on this page · raw message
fs/jffs2/nodelist.c +17 -11
@@ -687,8 +687,8 @@ int jffs2_scan_dirty_space(struct jffs2_sb_info *c, struct jffs2_eraseblock *jebif (!size)return 0 ;if (unlikely (size > jeb->free_size)) { -printk (KERN_CRIT "Dirty space 0x%x larger then free_size 0x%x (wasted 0x%x)\n" , - size, jeb->free_size, jeb->wasted_size); +pr_crit ("Dirty space 0x%x larger then free_size 0x%x (wasted 0x%x)\n" , + size, jeb->free_size, jeb->wasted_size);BUG (); }/* REF_EMPTY_NODE is !obsolete, so that works OK */
@@ -726,8 +726,10 @@ static inline uint32_t __ref_totlen(struct jffs2_sb_info *c,/* Last node in block. Use free_space */ if (unlikely (ref != jeb->last_node)) { -printk (KERN_CRIT "ref %p @0x%08x is not jeb->last_node (%p @0x%08x)\n" , - ref,ref_offset (ref), jeb->last_node, jeb->last_node?ref_offset (jeb->last_node):0 ); +pr_crit ("ref %p @0x%08x is not jeb->last_node (%p @0x%08x)\n" , + ref,ref_offset (ref), jeb->last_node, + jeb->last_node ? +ref_offset (jeb->last_node) :0 );BUG (); } ref_end = jeb->offset + c->sector_size - jeb->free_size;
@@ -747,16 +749,20 @@ uint32_t __jffs2_ref_totlen(struct jffs2_sb_info *c, struct jffs2_eraseblock *jeif (!jeb) jeb = &c->blocks[ref->flash_offset / c->sector_size]; -printk (KERN_CRIT "Totlen for ref at %p (0x%08x-0x%08x) miscalculated as 0x%x instead of %x\n" , - ref,ref_offset (ref),ref_offset (ref)+ref->__totlen, - ret, ref->__totlen); +pr_crit ("Totlen for ref at %p (0x%08x-0x%08x) miscalculated as 0x%x instead of %x\n" , + ref,ref_offset (ref),ref_offset (ref) + ref->__totlen, + ret, ref->__totlen);if (ref_next (ref)) { -printk (KERN_CRIT "next %p (0x%08x-0x%08x)\n" ,ref_next (ref),ref_offset (ref_next (ref)), -ref_offset (ref_next (ref))+ref->__totlen); +pr_crit ("next %p (0x%08x-0x%08x)\n" , +ref_next (ref),ref_offset (ref_next (ref)), +ref_offset (ref_next (ref)) + ref->__totlen); }else -printk (KERN_CRIT "No next ref. jeb->last_node is %p\n" , jeb->last_node); +pr_crit ("No next ref. jeb->last_node is %p\n" , + jeb->last_node); -printk (KERN_CRIT "jeb->wasted_size %x, dirty_size %x, used_size %x, free_size %x\n" , jeb->wasted_size, jeb->dirty_size, jeb->used_size, jeb->free_size); +pr_crit ("jeb->wasted_size %x, dirty_size %x, used_size %x, free_size %x\n" , + jeb->wasted_size, jeb->dirty_size, jeb->used_size, + jeb->free_size);#if defined(JFFS2_DBG_DUMPS ) || defined(JFFS2_DBG_PARANOIA_CHECKS )__jffs2_dbg_dump_node_refs_nolock (c, jeb);
fs/jffs2/nodemgmt.c +32 -19
116 lines not on this page · raw message
fs/jffs2/read.c +11 -10
@@ -36,13 +36,14 @@ int jffs2_read_dnode(struct jffs2_sb_info *c, struct jffs2_inode_info *f, ret =jffs2_flash_read (c,ref_offset (fd->raw),sizeof (*ri), &readlen, (char *)ri);if (ret) {jffs2_free_raw_inode (ri); -printk (KERN_WARNING "Error reading node from 0x%08x: %d\n" ,ref_offset (fd->raw), ret); +pr_warn ("Error reading node from 0x%08x: %d\n" , +ref_offset (fd->raw), ret);return ret; }if (readlen !=sizeof (*ri)) {jffs2_free_raw_inode (ri); -printk (KERN_WARNING "Short read from 0x%08x: wanted 0x%zx bytes, got 0x%zx\n" , -ref_offset (fd->raw),sizeof (*ri), readlen); +pr_warn ("Short read from 0x%08x: wanted 0x%zx bytes, got 0x%zx\n" , +ref_offset (fd->raw),sizeof (*ri), readlen);return -EIO ; } crc =crc32 (0 , ri,sizeof (*ri)-8 );
@@ -52,8 +53,8 @@ int jffs2_read_dnode(struct jffs2_sb_info *c, struct jffs2_inode_info *f, crc,je32_to_cpu (ri->dsize),je32_to_cpu (ri->csize), je32_to_cpu(ri->offset), buf);if (crc !=je32_to_cpu (ri->node_crc)) { -printk (KERN_WARNING "Node CRC %08x != calculated CRC %08x for node at %08x\n" , -je32_to_cpu (ri->node_crc), crc,ref_offset (fd->raw)); +pr_warn ("Node CRC %08x != calculated CRC %08x for node at %08x\n" , +je32_to_cpu (ri->node_crc), crc,ref_offset (fd->raw)); ret = -EIO ; goto out_ri; }
@@ -66,8 +67,8 @@ int jffs2_read_dnode(struct jffs2_sb_info *c, struct jffs2_inode_info *f, } D1(if(ofs + len > je32_to_cpu(ri->dsize)) { -printk (KERN_WARNING "jffs2_read_dnode() asked for %d bytes at %d from %d-byte node\n" , - len, ofs,je32_to_cpu (ri->dsize)); +pr_warn ("jffs2_read_dnode() asked for %d bytes at %d from %d-byte node\n" , + len, ofs,je32_to_cpu (ri->dsize)); ret = -EINVAL ; goto out_ri; });
@@ -119,8 +120,8 @@ int jffs2_read_dnode(struct jffs2_sb_info *c, struct jffs2_inode_info *f, crc =crc32 (0 , readbuf,je32_to_cpu (ri->csize));if (crc !=je32_to_cpu (ri->data_crc)) { -printk (KERN_WARNING "Data CRC %08x != calculated CRC %08x for node at %08x\n" , -je32_to_cpu (ri->data_crc), crc,ref_offset (fd->raw)); +pr_warn ("Data CRC %08x != calculated CRC %08x for node at %08x\n" , +je32_to_cpu (ri->data_crc), crc,ref_offset (fd->raw)); ret = -EIO ; goto out_decomprbuf; }
@@ -131,7 +132,7 @@ int jffs2_read_dnode(struct jffs2_sb_info *c, struct jffs2_inode_info *f, je32_to_cpu(ri->dsize), decomprbuf); ret =jffs2_decompress (c, f, ri->compr | (ri->usercompr <<8 ), readbuf, decomprbuf,je32_to_cpu (ri->csize),je32_to_cpu (ri->dsize));if (ret) { -printk (KERN_WARNING "Error: jffs2_decompress returned %d\n" , ret); +pr_warn ("Error: jffs2_decompress returned %d\n" , ret); goto out_decomprbuf; } }
fs/jffs2/scan.c +46 -38
200 lines not on this page · raw message
fs/jffs2/summary.c +7 -4
@@ -442,13 +442,16 @@ static int jffs2_sum_process_sum_data(struct jffs2_sb_info *c, struct jffs2_eras/* This should never happen, but https://dev.laptop.org/ticket/4184 */ checkedlen =strnlen (spd->name, spd->nsize);if (!checkedlen) { -printk (KERN_ERR "Dirent at %08x has zero at start of name. Aborting mount.\n" , - jeb->offset +je32_to_cpu (spd->offset)); +pr_err ("Dirent at %08x has zero at start of name. Aborting mount.\n" , + jeb->offset + +je32_to_cpu (spd->offset));return -EIO ; }if (checkedlen < spd->nsize) { -printk (KERN_ERR "Dirent at %08x has zeroes in name. Truncating to %d chars\n" , - jeb->offset +je32_to_cpu (spd->offset), checkedlen); +pr_err ("Dirent at %08x has zeroes in name. Truncating to %d chars\n" , + jeb->offset + +je32_to_cpu (spd->offset), + checkedlen); }
fs/jffs2/super.c +9 -9
@@ -214,8 +214,8 @@ static int jffs2_parse_options(struct jffs2_sb_info *c, char *data)JFFS2_COMPR_MODE_FORCEZLIB ;#endif else { -printk (KERN_ERR "JFFS2 Error: unknown compressor \"%s\"" , - name); +pr_err ("JFFS2 Error: unknown compressor \"%s\"" , + name);kfree (name);return -EINVAL ; }
@@ -223,8 +223,8 @@ static int jffs2_parse_options(struct jffs2_sb_info *c, char *data) c->mount_opts.override_compr = true;break ;default : -printk (KERN_ERR "JFFS2 Error: unrecognized mount option '%s' or missing value\n" , - p); +pr_err ("JFFS2 Error: unrecognized mount option '%s' or missing value\n" , + p);return -EINVAL ; } }
@@ -371,7 +371,7 @@ static int __init init_jffs2_fs(void)BUILD_BUG_ON (sizeof (struct jffs2_raw_inode ) !=68 );BUILD_BUG_ON (sizeof (struct jffs2_raw_summary ) !=32 ); - printk(KERN_INFO "JFFS2 version 2.2." + pr_info("JFFS2 version 2.2." #ifdef CONFIG_JFFS2_FS_WRITEBUFFER " (NAND)" #endif
@@ -386,22 +386,22 @@ static int __init init_jffs2_fs(void) SLAB_MEM_SPREAD), jffs2_i_init_once);if (!jffs2_inode_cachep) { -printk (KERN_ERR "JFFS2 error: Failed to initialise inode cache\n" ); +pr_err ("JFFS2 error: Failed to initialise inode cache\n" );return -ENOMEM ; } ret =jffs2_compressors_init ();if (ret) { -printk (KERN_ERR "JFFS2 error: Failed to initialise compressors\n" ); +pr_err ("JFFS2 error: Failed to initialise compressors\n" ); goto out; } ret =jffs2_create_slab_caches ();if (ret) { -printk (KERN_ERR "JFFS2 error: Failed to initialise slab caches\n" ); +pr_err ("JFFS2 error: Failed to initialise slab caches\n" ); goto out_compressors; } ret =register_filesystem (&jffs2_fs_type);if (ret) { -printk (KERN_ERR "JFFS2 error: Failed to register filesystem\n" ); +pr_err ("JFFS2 error: Failed to register filesystem\n" ); goto out_slab; }return 0 ;
fs/jffs2/symlink.c +1 -1
@@ -47,7 +47,7 @@ static void *jffs2_follow_link(struct dentry *dentry, struct nameidata *nd)*/ if (!p) { -printk (KERN_ERR "jffs2_follow_link(): can't find symlink target\n" ); +pr_err ("%s(): can't find symlink target\n" , __func__); p =ERR_PTR (-EIO ); } jffs2_dbg(1, "%s(): target path is '%s'\n",
fs/jffs2/wbuf.c +42 -41
229 lines not on this page · raw message
fs/jffs2/write.c +21 -16
@@ -68,7 +68,7 @@ struct jffs2_full_dnode *jffs2_write_dnode(struct jffs2_sb_info *c, struct jffs2unsigned long cnt =2 ; D1(if(je32_to_cpu(ri->hdr_crc) != crc32(0, ri, sizeof(struct jffs2_unknown_node)-4)) { -printk (KERN_CRIT "Eep. CRC not correct in jffs2_write_dnode()\n" ); +pr_crit ("Eep. CRC not correct in jffs2_write_dnode()\n" );BUG (); } );
@@ -78,7 +78,9 @@ struct jffs2_full_dnode *jffs2_write_dnode(struct jffs2_sb_info *c, struct jffs2 vecs[1 ].iov_len = datalen;if (je32_to_cpu (ri->totlen) !=sizeof (*ri) + datalen) { -printk (KERN_WARNING "jffs2_write_dnode: ri->totlen (0x%08x) != sizeof(*ri) (0x%08zx) + datalen (0x%08x)\n" ,je32_to_cpu (ri->totlen),sizeof (*ri), datalen); +pr_warn ("%s(): ri->totlen (0x%08x) != sizeof(*ri) (0x%08zx) + datalen (0x%08x)\n" , + __func__,je32_to_cpu (ri->totlen), +sizeof (*ri), datalen); } fn =jffs2_alloc_full_dnode ();
@@ -106,8 +108,8 @@ struct jffs2_full_dnode *jffs2_write_dnode(struct jffs2_sb_info *c, struct jffs2 (alloc_mode==ALLOC_GC)?0:f->inocache->ino);if (ret || (retlen !=sizeof (*ri) + datalen)) { -printk (KERN_NOTICE "Write of %zd bytes at 0x%08x failed. returned %d, retlen %zd\n" , -sizeof (*ri)+datalen, flash_ofs, ret, retlen); +pr_notice ("Write of %zd bytes at 0x%08x failed. returned %d, retlen %zd\n" , +sizeof (*ri) + datalen, flash_ofs, ret, retlen);/* Mark the space as dirtied */ if (retlen) {
@@ -118,7 +120,8 @@ struct jffs2_full_dnode *jffs2_write_dnode(struct jffs2_sb_info *c, struct jffs2this node */ jffs2_add_physical_node_ref (c, flash_ofs |REF_OBSOLETE ,PAD (sizeof (*ri)+datalen),NULL ); }else { -printk (KERN_NOTICE "Not marking the space at 0x%08x as dirty because the flash driver returned retlen zero\n" , flash_ofs); +pr_notice ("Not marking the space at 0x%08x as dirty because the flash driver returned retlen zero\n" , + flash_ofs); }if (!retried && alloc_mode !=ALLOC_NORETRY ) {/* Try to reallocate space and retry */
@@ -214,17 +217,17 @@ struct jffs2_full_dirent *jffs2_write_dirent(struct jffs2_sb_info *c, struct jff je32_to_cpu(rd->name_crc)); D1(if(je32_to_cpu(rd->hdr_crc) != crc32(0, rd, sizeof(struct jffs2_unknown_node)-4)) { -printk (KERN_CRIT "Eep. CRC not correct in jffs2_write_dirent()\n" ); +pr_crit ("Eep. CRC not correct in jffs2_write_dirent()\n" );BUG (); });if (strnlen (name, namelen) != namelen) {/* This should never happen, but seems to have done on at least one occasion: https://dev.laptop.org/ticket/4184 */ -printk (KERN_CRIT "Error in jffs2_write_dirent() -- name contains zero bytes!\n" ); -printk (KERN_CRIT "Directory inode #%u, name at *0x%p \"%s\"->ino #%u, name_crc 0x%08x\n" , -je32_to_cpu (rd->pino), name, name,je32_to_cpu (rd->ino), -je32_to_cpu (rd->name_crc)); +pr_crit ("Error in jffs2_write_dirent() -- name contains zero bytes!\n" ); +pr_crit ("Directory inode #%u, name at *0x%p \"%s\"->ino #%u, name_crc 0x%08x\n" , +je32_to_cpu (rd->pino), name, name,je32_to_cpu (rd->ino), +je32_to_cpu (rd->name_crc));WARN_ON (1 );return ERR_PTR (-EIO ); }
@@ -263,13 +266,14 @@ struct jffs2_full_dirent *jffs2_write_dirent(struct jffs2_sb_info *c, struct jff ret =jffs2_flash_writev (c, vecs,2 , flash_ofs, &retlen, (alloc_mode==ALLOC_GC )?0 :je32_to_cpu (rd->pino));if (ret || (retlen !=sizeof (*rd) + namelen)) { -printk (KERN_NOTICE "Write of %zd bytes at 0x%08x failed. returned %d, retlen %zd\n" , -sizeof (*rd)+namelen, flash_ofs, ret, retlen); +pr_notice ("Write of %zd bytes at 0x%08x failed. returned %d, retlen %zd\n" , +sizeof (*rd) + namelen, flash_ofs, ret, retlen);/* Mark the space as dirtied */ if (retlen) {jffs2_add_physical_node_ref (c, flash_ofs |REF_OBSOLETE ,PAD (sizeof (*rd)+namelen),NULL ); }else { -printk (KERN_NOTICE "Not marking the space at 0x%08x as dirty because the flash driver returned retlen zero\n" , flash_ofs); +pr_notice ("Not marking the space at 0x%08x as dirty because the flash driver returned retlen zero\n" , + flash_ofs); }if (!retried) {/* Try to reallocate space and retry */
@@ -417,7 +421,7 @@ int jffs2_write_inode_range(struct jffs2_sb_info *c, struct jffs2_inode_info *f,mutex_unlock (&f->sem);jffs2_complete_reservation (c);if (!datalen) { -printk (KERN_WARNING "Eep. We didn't actually write any data in jffs2_write_inode_range()\n" ); +pr_warn ("Eep. We didn't actually write any data in jffs2_write_inode_range()\n" ); ret = -EIO ;break ; }
@@ -634,8 +638,9 @@ int jffs2_do_unlink(struct jffs2_sb_info *c, struct jffs2_inode_info *dir_f, dead_f->dents = fd->next;if (fd->ino) { -printk (KERN_WARNING "Deleting inode #%u with active dentry \"%s\"->ino #%u\n" , - dead_f->inocache->ino, fd->name, fd->ino); +pr_warn ("Deleting inode #%u with active dentry \"%s\"->ino #%u\n" , + dead_f->inocache->ino, + fd->name, fd->ino); }else { jffs2_dbg(1, "Removing deletion dirent for \"%s\" from dir ino #%u\n", fd->name,
Signature · 1 line
1.7.8.111.gad25c.dirty
PATCH 3/4 jffs2: Use pr_fmt and remove jffs: from formats
In reply to Joe PerchesUse pr_fmt to prefix KBUILD_MODNAME to appropriate logging messages.
Remove now unnecessary internal prefixes from formats.
--- fs/jffs2/acl.c | 2 ++ fs/jffs2/background.c | 7 ++++--- fs/jffs2/build.c | 6 ++++-- fs/jffs2/compr.c | 21 +++++++++++---------- fs/jffs2/compr_rubin.c | 2 ++ fs/jffs2/compr_zlib.c | 2 ++ fs/jffs2/debug.c | 2 ++ fs/jffs2/dir.c | 2 ++ fs/jffs2/erase.c | 2 ++ fs/jffs2/file.c | 2 ++ fs/jffs2/fs.c | 10 ++++++---- fs/jffs2/gc.c | 6 ++++-- fs/jffs2/malloc.c | 2 ++ fs/jffs2/nodelist.c | 2 ++ fs/jffs2/nodemgmt.c | 2 ++ fs/jffs2/read.c | 2 ++ fs/jffs2/readinode.c | 2 ++ fs/jffs2/scan.c | 7 ++++--- fs/jffs2/summary.c | 5 +++-- fs/jffs2/super.c | 16 +++++++++------- fs/jffs2/symlink.c | 2 ++ fs/jffs2/wbuf.c | 12 +++++++----- fs/jffs2/write.c | 2 ++ 23 files changed, 80 insertions(+), 38 deletions(-)
fs/jffs2/acl.c +2 -0
@@ -9,6 +9,8 @@* */ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/kernel.h> #include <linux/slab.h> #include <linux/fs.h>
fs/jffs2/background.c +4 -3
@@ -10,6 +10,8 @@* */ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/kernel.h> #include <linux/jffs2.h> #include <linux/mtd/mtd.h>
@@ -48,8 +50,7 @@ int jffs2_start_garbage_collect_thread(struct jffs2_sb_info *c) ret =PTR_ERR (tsk); }else {/* Wait for it... */ -jffs2_dbg (1 ,"JFFS2: Garbage collect thread is pid %d\n" , - tsk->pid); +jffs2_dbg (1 ,"Garbage collect thread is pid %d\n" , tsk->pid);wait_for_completion (&c->gc_thread_start); ret = tsk->pid; }
@@ -62,7 +63,7 @@ void jffs2_stop_garbage_collect_thread(struct jffs2_sb_info *c)int wait =0 ;spin_lock (&c->erase_completion_lock);if (c->gc_task) { -jffs2_dbg (1 ,"jffs2: Killing GC task %d\n" , c->gc_task->pid); +jffs2_dbg (1 ,"Killing GC task %d\n" , c->gc_task->pid);send_sig (SIGKILL , c->gc_task,1 ); wait =1 ; }
fs/jffs2/build.c +4 -2
@@ -10,6 +10,8 @@* */ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/kernel.h> #include <linux/sched.h> #include <linux/slab.h>
@@ -307,8 +309,8 @@ static void jffs2_calc_trigger_levels(struct jffs2_sb_info *c)trying to GC to make more space. It'll be a fruitless task */ c->nospc_dirty_size = c->sector_size + (c->flash_size /100 ); -dbg_fsbuild ("JFFS2 trigger levels (size %d KiB, block size %d KiB, %d blocks)\n" , - c->flash_size /1024 , c->sector_size /1024 , c->nr_blocks); +dbg_fsbuild ("trigger levels (size %d KiB, block size %d KiB, %d blocks)\n" , + c->flash_size /1024 , c->sector_size /1024 , c->nr_blocks);dbg_fsbuild ("Blocks required to allow deletion: %d (%d KiB)\n" , c->resv_blocks_deletion, c->resv_blocks_deletion*c->sector_size/1024 ); dbg_fsbuild("Blocks required to allow writes: %d (%d KiB)\n",
fs/jffs2/compr.c +11 -10
@@ -12,6 +12,8 @@* */ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include "compr.h" static DEFINE_SPINLOCK (jffs2_compressor_list_lock);
@@ -79,7 +81,7 @@ static int jffs2_selected_compress(u8 compr, unsigned char *data_in, output_buf =kmalloc (*cdatalen,GFP_KERNEL );if (!output_buf) { -pr_warn ("JFFS2: No memory for compressor allocation. Compression failed.\n" ); +pr_warn ("No memory for compressor allocation. Compression failed.\n" );return ret; } orig_slen = *datalen;
@@ -188,7 +190,7 @@ uint16_t jffs2_compress(struct jffs2_sb_info *c, struct jffs2_inode_info *f, tmp_buf =kmalloc (orig_slen,GFP_KERNEL );spin_lock (&jffs2_compressor_list_lock);if (!tmp_buf) { -pr_warn ("JFFS2: No memory for compressor allocation. (%d bytes)\n" , +pr_warn ("No memory for compressor allocation. (%d bytes)\n" , orig_slen);continue ; }
@@ -236,7 +238,7 @@ uint16_t jffs2_compress(struct jffs2_sb_info *c, struct jffs2_inode_info *f, cpage_out, datalen, cdatalen);break ;default : -pr_err ("JFFS2: unknown compression mode\n" ); +pr_err ("unknown compression mode\n" ); }if (ret ==JFFS2_COMPR_NONE ) {
@@ -289,8 +291,7 @@ int jffs2_decompress(struct jffs2_sb_info *c, struct jffs2_inode_info *f,return ret; } } -pr_warn ("JFFS2 compression type 0x%02x not available\n" , - comprtype); +pr_warn ("compression type 0x%02x not available\n" , comprtype);spin_unlock (&jffs2_compressor_list_lock);return -EIO ; }
@@ -343,7 +344,7 @@ int jffs2_unregister_compressor(struct jffs2_compressor *comp)if (comp->usecount) {spin_unlock (&jffs2_compressor_list_lock); -pr_warn ("JFFS2: Compressor module is in use. Unregister failed.\n" ); +pr_warn ("Compressor module is in use. Unregister failed.\n" );return -1 ; }list_del (&comp->list);
@@ -380,17 +381,17 @@ int __init jffs2_compressors_init(void)/* Setting default compression mode */ #ifdef CONFIG_JFFS2_CMODE_NONE jffs2_compression_mode =JFFS2_COMPR_MODE_NONE ; -jffs2_dbg (1 ,"JFFS2: default compression mode: none\n" ); +jffs2_dbg (1 ,"default compression mode: none\n" );#else #ifdef CONFIG_JFFS2_CMODE_SIZE jffs2_compression_mode =JFFS2_COMPR_MODE_SIZE ; -jffs2_dbg (1 ,"JFFS2: default compression mode: size\n" ); +jffs2_dbg (1 ,"default compression mode: size\n" );#else #ifdef CONFIG_JFFS2_CMODE_FAVOURLZO jffs2_compression_mode =JFFS2_COMPR_MODE_FAVOURLZO ; -jffs2_dbg (1 ,"JFFS2: default compression mode: favourlzo\n" ); +jffs2_dbg (1 ,"default compression mode: favourlzo\n" );#else -jffs2_dbg (1 ,"JFFS2: default compression mode: priority\n" ); +jffs2_dbg (1 ,"default compression mode: priority\n" );#endif #endif #endif
fs/jffs2/compr_rubin.c +2 -0
@@ -10,6 +10,8 @@* */ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/string.h> #include <linux/types.h> #include <linux/jffs2.h>
fs/jffs2/compr_zlib.c +2 -0
@@ -14,6 +14,8 @@#error "The userspace support got too messy and was removed. Update your mkfs.jffs2"#endif +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/kernel.h> #include <linux/zlib.h> #include <linux/zutil.h>
fs/jffs2/debug.c +2 -0
@@ -10,6 +10,8 @@* */ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/kernel.h> #include <linux/types.h> #include <linux/pagemap.h>
fs/jffs2/dir.c +2 -0
@@ -10,6 +10,8 @@* */ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/kernel.h> #include <linux/slab.h> #include <linux/fs.h>
fs/jffs2/erase.c +2 -0
@@ -10,6 +10,8 @@* */ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/kernel.h> #include <linux/slab.h> #include <linux/mtd/mtd.h>
fs/jffs2/file.c +2 -0
@@ -10,6 +10,8 @@* */ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/kernel.h> #include <linux/fs.h> #include <linux/time.h>
fs/jffs2/fs.c +6 -4
@@ -10,6 +10,8 @@* */ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/capability.h> #include <linux/kernel.h> #include <linux/sched.h>
@@ -513,11 +515,11 @@ int jffs2_do_fill_super(struct super_block *sb, void *data, int silent)#ifndef CONFIG_JFFS2_FS_WRITEBUFFER if (c->mtd->type ==MTD_NANDFLASH ) { -pr_err ("jffs2: Cannot operate on NAND flash unless jffs2 NAND support is compiled in.\n" ); +pr_err ("Cannot operate on NAND flash unless jffs2 NAND support is compiled in\n" );return -EINVAL ; }if (c->mtd->type ==MTD_DATAFLASH ) { -pr_err ("jffs2: Cannot operate on DataFlash unless jffs2 DataFlash support is compiled in.\n" ); +pr_err ("Cannot operate on DataFlash unless jffs2 DataFlash support is compiled in\n" );return -EINVAL ; }#endif
@@ -531,12 +533,12 @@ int jffs2_do_fill_super(struct super_block *sb, void *data, int silent)*/ if ((c->sector_size * blocks) != c->flash_size) { c->flash_size = c->sector_size * blocks; -pr_info ("jffs2: Flash size not aligned to erasesize, reducing to %dKiB\n" , +pr_info ("Flash size not aligned to erasesize, reducing to %dKiB\n" , c->flash_size /1024 ); }if (c->flash_size <5 *c->sector_size) { -pr_err ("jffs2: Too few erase blocks (%d)\n" , +pr_err ("Too few erase blocks (%d)\n" , c->flash_size / c->sector_size);return -EINVAL ; }
fs/jffs2/gc.c +4 -2
@@ -10,6 +10,8 @@* */ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/kernel.h> #include <linux/mtd/mtd.h> #include <linux/slab.h>
@@ -88,7 +90,7 @@ again: goto again; }else {/* Eep. All were empty */ -jffs2_dbg (1 ,"jffs2: No clean, dirty _or_ erasable blocks to GC from! Where are they all?\n" ); +jffs2_dbg (1 ,"No clean, dirty _or_ erasable blocks to GC from! Where are they all?\n" );return NULL ; }
@@ -249,7 +251,7 @@ int jffs2_garbage_collect_pass(struct jffs2_sb_info *c)mutex_unlock (&c->alloc_sem);return -EAGAIN ; } -jffs2_dbg (1 ,"jffs2: Couldn't find erase block to garbage collect!\n" ); +jffs2_dbg (1 ,"Couldn't find erase block to garbage collect!\n" );spin_unlock (&c->erase_completion_lock);mutex_unlock (&c->alloc_sem);return -EIO ;
fs/jffs2/malloc.c +2 -0
@@ -9,6 +9,8 @@* */ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/kernel.h> #include <linux/slab.h> #include <linux/init.h>
fs/jffs2/nodelist.c +2 -0
@@ -9,6 +9,8 @@* */ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/kernel.h> #include <linux/sched.h> #include <linux/fs.h>
fs/jffs2/nodemgmt.c +2 -0
@@ -9,6 +9,8 @@* */ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/kernel.h> #include <linux/mtd/mtd.h> #include <linux/compiler.h>
fs/jffs2/read.c +2 -0
@@ -9,6 +9,8 @@* */ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/kernel.h> #include <linux/slab.h> #include <linux/crc32.h>
fs/jffs2/readinode.c +2 -0
@@ -9,6 +9,8 @@* */ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/kernel.h> #include <linux/sched.h> #include <linux/slab.h>
fs/jffs2/scan.c +4 -3
@@ -9,6 +9,8 @@* */ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/kernel.h> #include <linux/sched.h> #include <linux/slab.h>
@@ -218,15 +220,14 @@ int jffs2_scan_medium(struct jffs2_sb_info *c)case BLK_STATE_ALLDIRTY :/* Nothing valid - not even a clean marker. Needs erasing. */ /* For now we just put it on the erasing list. We'll start the erases later */ -jffs2_dbg (1 ,"JFFS2: Erase block at 0x%08x is not formatted. It will be erased\n" , +jffs2_dbg (1 ,"Erase block at 0x%08x is not formatted. It will be erased\n" , jeb->offset);list_add (&jeb->list, &c->erase_pending_list); c->nr_erasing_blocks++;break ;case BLK_STATE_BADBLOCK : -jffs2_dbg (1 ,"JFFS2: Block at 0x%08x is bad\n" , - jeb->offset); +jffs2_dbg (1 ,"Block at 0x%08x is bad\n" , jeb->offset);list_add (&jeb->list, &c->bad_list); c->bad_size += c->sector_size; c->free_size -= c->sector_size;
fs/jffs2/summary.c +3 -2
@@ -11,6 +11,8 @@* */ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/kernel.h> #include <linux/slab.h> #include <linux/mtd/mtd.h>
@@ -811,8 +813,7 @@ static int jffs2_sum_write_data(struct jffs2_sb_info *c, struct jffs2_eraseblock sum_ofs = jeb->offset + c->sector_size - jeb->free_size; -dbg_summary ("JFFS2: writing out data to flash to pos : 0x%08x\n" , - sum_ofs); +dbg_summary ("writing out data to flash to pos : 0x%08x\n" , sum_ofs); ret =jffs2_flash_writev (c, vecs,2 , sum_ofs, &retlen,0 );
fs/jffs2/super.c +9 -7
@@ -9,6 +9,8 @@* */ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/kernel.h> #include <linux/module.h> #include <linux/slab.h>
@@ -214,7 +216,7 @@ static int jffs2_parse_options(struct jffs2_sb_info *c, char *data)JFFS2_COMPR_MODE_FORCEZLIB ;#endif else { -pr_err ("JFFS2 Error: unknown compressor \"%s\"" , +pr_err ("Error: unknown compressor \"%s\"\n" , name);kfree (name);return -EINVAL ;
@@ -223,7 +225,7 @@ static int jffs2_parse_options(struct jffs2_sb_info *c, char *data) c->mount_opts.override_compr = true;break ;default : -pr_err ("JFFS2 Error: unrecognized mount option '%s' or missing value\n" , +pr_err ("Error: unrecognized mount option '%s' or missing value\n" , p);return -EINVAL ; }
@@ -371,7 +373,7 @@ static int __init init_jffs2_fs(void)BUILD_BUG_ON (sizeof (struct jffs2_raw_inode ) !=68 );BUILD_BUG_ON (sizeof (struct jffs2_raw_summary ) !=32 ); - pr_info("JFFS2 version 2.2." + pr_info("version 2.2." #ifdef CONFIG_JFFS2_FS_WRITEBUFFER " (NAND)" #endif
@@ -386,22 +388,22 @@ static int __init init_jffs2_fs(void) SLAB_MEM_SPREAD), jffs2_i_init_once);if (!jffs2_inode_cachep) { -pr_err ("JFFS2 error: Failed to initialise inode cache\n" ); +pr_err ("error: Failed to initialise inode cache\n" );return -ENOMEM ; } ret =jffs2_compressors_init ();if (ret) { -pr_err ("JFFS2 error: Failed to initialise compressors\n" ); +pr_err ("error: Failed to initialise compressors\n" ); goto out; } ret =jffs2_create_slab_caches ();if (ret) { -pr_err ("JFFS2 error: Failed to initialise slab caches\n" ); +pr_err ("error: Failed to initialise slab caches\n" ); goto out_compressors; } ret =register_filesystem (&jffs2_fs_type);if (ret) { -pr_err ("JFFS2 error: Failed to register filesystem\n" ); +pr_err ("error: Failed to register filesystem\n" ); goto out_slab; }return 0 ;
fs/jffs2/symlink.c +2 -0
@@ -9,6 +9,8 @@* */ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/kernel.h> #include <linux/fs.h> #include <linux/namei.h>
fs/jffs2/wbuf.c +7 -5
@@ -11,6 +11,8 @@* */ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/kernel.h> #include <linux/slab.h> #include <linux/mtd/mtd.h>
@@ -1135,7 +1137,7 @@ int jffs2_write_nand_badblock(struct jffs2_sb_info *c, struct jffs2_eraseblock *if ( ++jeb->bad_count <MAX_ERASE_FAILURES )return 0 ; -pr_warn ("JFFS2: marking eraseblock at %08x as bad\n" , bad_offset); +pr_warn ("marking eraseblock at %08x as bad\n" , bad_offset); ret =mtd_block_markbad (c->mtd, bad_offset);if (ret) {
@@ -1161,7 +1163,7 @@ int jffs2_nand_flash_setup(struct jffs2_sb_info *c)return -EINVAL ; } -jffs2_dbg (1 ,"JFFS2 using OOB on NAND\n" ); +jffs2_dbg (1 ,"using OOB on NAND\n" ); c->oobavail = oinfo->oobavail;
@@ -1228,7 +1230,7 @@ int jffs2_dataflash_setup(struct jffs2_sb_info *c) {if ((c->flash_size % c->sector_size) !=0 ) { c->flash_size = (c->flash_size / c->sector_size) * c->sector_size; -pr_warn ("JFFS2 flash size adjusted to %dKiB\n" , c->flash_size); +pr_warn ("flash size adjusted to %dKiB\n" , c->flash_size); }; c->wbuf_ofs =0xFFFFFFFF ;
@@ -1245,7 +1247,7 @@ int jffs2_dataflash_setup(struct jffs2_sb_info *c) { }#endif -pr_info ("JFFS2 write-buffering enabled buffer (%d) erasesize (%d)\n" , +pr_info ("write-buffering enabled buffer (%d) erasesize (%d)\n" , c->wbuf_pagesize, c->sector_size);return 0 ;
@@ -1304,7 +1306,7 @@ int jffs2_ubivol_setup(struct jffs2_sb_info *c) {if (!c->wbuf)return -ENOMEM ; -pr_info ("JFFS2 write-buffering enabled buffer (%d) erasesize (%d)\n" , +pr_info ("write-buffering enabled buffer (%d) erasesize (%d)\n" , c->wbuf_pagesize, c->sector_size);return 0 ;
fs/jffs2/write.c +2 -0
@@ -9,6 +9,8 @@* */ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/kernel.h> #include <linux/fs.h> #include <linux/crc32.h>
Signature · 1 line
1.7.8.111.gad25c.dirty
PATCH 4/4 jffs2: Standardize JFFS_<LEVEL> uses
In reply to Joe PerchesUse pr_<level> to prefix KBUILD_MODNAME via pr_fmt.
Remove obfuscating defines and use constants in pr_<level> No need for a do {} while (0) for single statements.
Form of JFFS_<LEVEL> output changes from
"JFFS2 notice: " to "jffs2: notice: "
Added pr_fmt to xattr.c
--- fs/jffs2/debug.h | 46 +++++++++------------------------------------- fs/jffs2/xattr.c | 2 ++ 2 files changed, 11 insertions(+), 37 deletions(-)
fs/jffs2/debug.h +9 -37
@@ -69,50 +69,22 @@ do { \ pr_debug(fmt, ##__VA_ARGS__); \ }while (0 ) -/* The prefixes of JFFS2 messages */ -#define JFFS2_DBG_PREFIX "[JFFS2 DBG]" -#define JFFS2_ERR_PREFIX "JFFS2 error:" -#define JFFS2_WARN_PREFIX "JFFS2 warning:" -#define JFFS2_NOTICE_PREFIX "JFFS2 notice:" - -#define JFFS2_ERR KERN_ERR -#define JFFS2_WARN KERN_WARNING -#define JFFS2_NOT KERN_NOTICE -#define JFFS2_DBG KERN_DEBUG - -#define JFFS2_DBG_MSG_PREFIX JFFS2_DBG JFFS2_DBG_PREFIX -#define JFFS2_ERR_MSG_PREFIX JFFS2_ERR JFFS2_ERR_PREFIX -#define JFFS2_WARN_MSG_PREFIX JFFS2_WARN JFFS2_WARN_PREFIX -#define JFFS2_NOTICE_MSG_PREFIX JFFS2_NOT JFFS2_NOTICE_PREFIX - /* JFFS2 message macros */ -#define JFFS2_ERROR (fmt, ...) \ - do { \ - printk(JFFS2_ERR_MSG_PREFIX \ - " (%d) %s: " fmt, task_pid_nr(current), \ - __func__ , ##__VA_ARGS__); \ - } while(0) +#define JFFS2_ERROR (fmt, ...) \ + pr_err("error: (%d) %s: " fmt, \ + task_pid_nr(current), __func__, ##__VA_ARGS__)#define JFFS2_WARNING (fmt, ...) \ - do { \ - printk(JFFS2_WARN_MSG_PREFIX \ - " (%d) %s: " fmt, task_pid_nr(current), \ - __func__ , ##__VA_ARGS__); \ - } while(0) + pr_warn("warning: (%d) %s: " fmt, \ + task_pid_nr(current), __func__, ##__VA_ARGS__)#define JFFS2_NOTICE (fmt, ...) \ - do { \ - printk(JFFS2_NOTICE_MSG_PREFIX \ - " (%d) %s: " fmt, task_pid_nr(current), \ - __func__ , ##__VA_ARGS__); \ - } while(0) + pr_notice("notice: (%d) %s: " fmt, \ + task_pid_nr(current), __func__, ##__VA_ARGS__)#define JFFS2_DEBUG (fmt, ...) \ - do { \ - printk(JFFS2_DBG_MSG_PREFIX \ - " (%d) %s: " fmt, task_pid_nr(current), \ - __func__ , ##__VA_ARGS__); \ - } while(0) + printk(KERN_DEBUG "[JFFS2 DBG] (%d) %s: " fmt, \ + task_pid_nr(current), __func__, ##__VA_ARGS__)/* * We split our debugging messages on several parts, depending on the JFFS2
fs/jffs2/xattr.c +2 -0
@@ -9,6 +9,8 @@* */ +#define pr_fmt (fmt) KBUILD_MODNAME ": " fmt +#include <linux/kernel.h> #include <linux/slab.h> #include <linux/fs.h>
Signature · 1 line
1.7.8.111.gad25c.dirty
Quoted 5 lines · Joe Perches
Joe Perches (4):
jffs2: Convert most D1/D2 macros tojffs2_dbg
jffs2: Convert printks to pr_<level>
jffs2: Usepr_fmtand remove jffs: from formats
jffs2: Standardize JFFS_<LEVEL> uses
Thanks for the work, appreciated. But your patch introduces new sparse and smatch warnings, which did not exist before your patch:
Successfully built configuration "l2_mxs_defconfig,arm,arm-unknown-linux-gnueabi-", results:
after_patching.log renamed from before_patching.log +0 -0
@@ @@ +fs/jffs2/file.c:330:2: warning: signed and unsigned type in conditional expression [-Wsign-compare] -fs/jffs2/read.c:154 jffs2_read_dnode(129) warn: possible memory leak of 'decomprbuf' [smatch] -fs/jffs2/read.c:154 jffs2_read_dnode(129) warn: possible memory leak of 'readbuf' [smatch] +fs/jffs2/read.c:154 jffs2_read_dnode(131) warn: possible memory leak of 'decomprbuf' [smatch] +fs/jffs2/read.c:154 jffs2_read_dnode(131) warn: possible memory leak of 'readbuf' [smatch] -fs/jffs2/scan.c:108:54: warning: suggest braces around empty body in an 'if' statement [-Wempty-body] +fs/jffs2/super.c:377:1: error: directive in argument list [sparse] +fs/jffs2/super.c:379:1: error: directive in argument list [sparse] +fs/jffs2/super.c:380:1: error: directive in argument list [sparse] +fs/jffs2/super.c:382:1: error: directive in argument list [sparse]
Would you please take a look? Ideally patches should eliminate warnings, not introduce new ones.
Also, your patch does not apply cleanly to my l2-mtd tree - and this is the tree which is currently used for merging MTD and JFFS2 stuff upstream, and it is in linux-next as well. Would you send patches against the l2 tree?
Also, there are several checkpatch.pl complaints, please, take a look:
--------------------------------------------------------------------------------
checkpatch.pl has some complaints:
--------------------------------------------------------------------------------
checkpatch.pl results for patch "[PATCH 2/4] jffs2: Convert printks to pr_<level>"
WARNING:LONG_LINE: line over 80 characters
#893: FILE: fs/jffs2/nodemgmt.c:269:
+ list_empty(&c->erase_pending_list) ? "yes" : "no");
WARNING:LONG_LINE: line over 80 characters
#1094: FILE: fs/jffs2/scan.c:31:
+ pr_notice("Further such events for this erase block will not be printed\n"); \
total: 0 errors, 2 warnings, 1523 lines checked
--------------------------------------------------------------------------------
checkpatch.pl results for patch "[PATCH 3/4] jffs2: Use pr_fmt and remove jffs: from formats"
WARNING:LONG_LINE: line over 80 characters
#102: FILE: fs/jffs2/build.c:312:
+ dbg_fsbuild("trigger levels (size %d KiB, block size %d KiB, %d blocks)\n",
total: 0 errors, 1 warnings, 432 lines checked
--------------------------------------------------------------------------------
checkpatch.pl results for the entire squashed patch-set
WARNING:LONG_LINE: line over 80 characters
#3480: FILE: fs/jffs2/nodemgmt.c:269:
+ list_empty(&c->erase_pending_list) ? "yes" : "no");
WARNING:LONG_LINE: line over 80 characters
#3681: FILE: fs/jffs2/scan.c:31:
+ pr_notice("Further such events for this erase block will not be printed\n"); \
WARNING:LONG_LINE: line over 80 characters
#4448: FILE: fs/jffs2/build.c:312:
+ dbg_fsbuild("trigger levels (size %d KiB, block size %d KiB, %d blocks)\n",
total: 0 errors, 3 warnings, 4324 lines checked
--------------------------------------------------------------------------------
Signature · 2 lines
Best Regards, Artem Bityutskiy
Quoted 1 line · Artem Bityutskiy
Also, there are several checkpatch.pl complaints, please, take a look:
Ok, I copy-pasted them, but actually took a look now and the checkpatch.pl ones are non-issues.
Signature · 2 lines
Best Regards, Artem Bityutskiy
Quoted 9 lines · Artem Bityutskiy
Quoted 5 lines · Joe Perches
Joe Perches (4):
jffs2: Convert most D1/D2 macros tojffs2_dbg
jffs2: Convert printks to pr_<level>
jffs2: Usepr_fmtand remove jffs: from formats
jffs2: Standardize JFFS_<LEVEL> usesThanks for the work, appreciated. But your patch introduces new sparse and smatch warnings, which did not exist before your patch:
Hello Artem.
Quoted 14 lines
Successfully built configuration "l2_mxs_defconfig,arm,arm-unknown-linux-gnueabi-", results:
after_patching.log renamed from before_patching.log +0
-0@@ @@
+fs/jffs2/file.c:330:2: warning: signed and unsigned type in conditional expression [-Wsign-compare] @@ @@after_patching.log renamed from before_patching.log +2
-2-fs/jffs2/read.c:154 jffs2_read_dnode(129) warn: possible memory leak of 'decomprbuf' [smatch] -fs/jffs2/read.c:154 jffs2_read_dnode(129) warn: possible memory leak of 'readbuf' [smatch] +fs/jffs2/read.c:154 jffs2_read_dnode(131) warn: possible memory leak of 'decomprbuf' [smatch] +fs/jffs2/read.c:154 jffs2_read_dnode(131) warn: possible memory leak of 'readbuf' [smatch]@@ @@
-fs/jffs2/scan.c:108:54: warning: suggest braces around empty body in an 'if' statement [-Wempty-body] @@ @@
after_patching.log
Quoted 4 lines
after_patching.log renamed from before_patching.log +4
-0+fs/jffs2/super.c:377:1: error: directive in argument list [sparse] +fs/jffs2/super.c:379:1: error: directive in argument list [sparse] +fs/jffs2/super.c:380:1: error: directive in argument list [sparse] +fs/jffs2/super.c:382:1: error: directive in argument list [sparse]
I don't see how this is a new error.
printk vs pr_info shouldn't change this.
maybe it's a smatch issue?
Quoted 2 lines
Would you please take a look? Ideally patches should eliminate warnings, not introduce new ones.
I believe this simply exposes a current defect rather than adds "new" ones. It seems the old D1/D2 macros hide them.
Quoted 4 lines
Also, your patch does not apply cleanly to my l2-mtd tree - and this is the tree which is currently used for merging MTD and JFFS2 stuff upstream, and it is in linux-next as well. Would you send patches against the l2 tree?
This patchset applies cleanly against next-20120229 Where is your git tree?
cheers, Joe
Quoted 2 lines · Joe Perches
I believe this simply exposes a current defect rather than adds "new" ones. It seems the old D1/D2 macros hide them.
OK, I'll take a closer look as soon as I have time.
Quoted 7 lines
Quoted 4 lines
Also, your patch does not apply cleanly to my l2-mtd tree - and this is the tree which is currently used for merging MTD and JFFS2 stuff upstream, and it is in linux-next as well. Would you send patches against the l2 tree?
This patchset applies cleanly against next-20120229 Where is your git tree?
git://git.infradead.org/users/dedekind/l2-mtd.git
The conflicts were minor anyway and I am able to fix them up myself.
Signature · 2 lines
Best Regards, Artem Bityutskiy