diff options
Diffstat (limited to 'fs/jffs2/scan.c')
| -rw-r--r-- | fs/jffs2/scan.c | 250 | 
1 files changed, 140 insertions, 110 deletions
diff --git a/fs/jffs2/scan.c b/fs/jffs2/scan.c index b632dddcb48..7654e87b042 100644 --- a/fs/jffs2/scan.c +++ b/fs/jffs2/scan.c @@ -9,6 +9,8 @@   *   */ +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +  #include <linux/kernel.h>  #include <linux/sched.h>  #include <linux/slab.h> @@ -22,15 +24,15 @@  #define DEFAULT_EMPTY_SCAN_SIZE 256 -#define noisy_printk(noise, args...) do { \ -	if (*(noise)) { \ -		printk(KERN_NOTICE args); \ -		 (*(noise))--; \ -		 if (!(*(noise))) { \ -			 printk(KERN_NOTICE "Further such events for this erase block will not be printed\n"); \ -		 } \ -	} \ -} while(0) +#define noisy_printk(noise, fmt, ...)					\ +do {									\ +	if (*(noise)) {							\ +		pr_notice(fmt, ##__VA_ARGS__);				\ +		(*(noise))--;						\ +		if (!(*(noise)))					\ +			pr_notice("Further such events for this erase block will not be printed\n"); \ +	}								\ +} while (0)  static uint32_t pseudo_random; @@ -94,37 +96,39 @@ int jffs2_scan_medium(struct jffs2_sb_info *c)  	uint32_t buf_size = 0;  	struct jffs2_summary *s = NULL; /* summary info collected by the scan process */  #ifndef __ECOS -	size_t pointlen; - -	if (c->mtd->point) { -		ret = c->mtd->point(c->mtd, 0, c->mtd->size, &pointlen, -				    (void **)&flashbuf, NULL); -		if (!ret && pointlen < c->mtd->size) { -			/* Don't muck about if it won't let us point to the whole flash */ -			D1(printk(KERN_DEBUG "MTD point returned len too short: 0x%zx\n", pointlen)); -			c->mtd->unpoint(c->mtd, 0, pointlen); -			flashbuf = NULL; -		} -		if (ret) -			D1(printk(KERN_DEBUG "MTD point failed %d\n", ret)); +	size_t pointlen, try_size; + +	ret = mtd_point(c->mtd, 0, c->mtd->size, &pointlen, +			(void **)&flashbuf, NULL); +	if (!ret && pointlen < c->mtd->size) { +		/* Don't muck about if it won't let us point to the whole flash */ +		jffs2_dbg(1, "MTD point returned len too short: 0x%zx\n", +			  pointlen); +		mtd_unpoint(c->mtd, 0, pointlen); +		flashbuf = NULL;  	} +	if (ret && ret != -EOPNOTSUPP) +		jffs2_dbg(1, "MTD point failed %d\n", ret);  #endif  	if (!flashbuf) {  		/* For NAND it's quicker to read a whole eraseblock at a time,  		   apparently */  		if (jffs2_cleanmarker_oob(c)) -			buf_size = c->sector_size; +			try_size = c->sector_size;  		else -			buf_size = PAGE_SIZE; +			try_size = PAGE_SIZE; -		/* Respect kmalloc limitations */ -		if (buf_size > 128*1024) -			buf_size = 128*1024; +		jffs2_dbg(1, "Trying to allocate readbuf of %zu " +			  "bytes\n", try_size); -		D1(printk(KERN_DEBUG "Allocating readbuf of %d bytes\n", buf_size)); -		flashbuf = kmalloc(buf_size, GFP_KERNEL); +		flashbuf = mtd_kmalloc_up_to(c->mtd, &try_size);  		if (!flashbuf)  			return -ENOMEM; + +		jffs2_dbg(1, "Allocated readbuf of %zu bytes\n", +			  try_size); + +		buf_size = (uint32_t)try_size;  	}  	if (jffs2_sum_active()) { @@ -175,7 +179,8 @@ int jffs2_scan_medium(struct jffs2_sb_info *c)  				c->nr_free_blocks++;  			} else {  				/* Dirt */ -				D1(printk(KERN_DEBUG "Adding all-dirty block at 0x%08x to erase_pending_list\n", jeb->offset)); +				jffs2_dbg(1, "Adding all-dirty block at 0x%08x to erase_pending_list\n", +					  jeb->offset);  				list_add(&jeb->list, &c->erase_pending_list);  				c->nr_erasing_blocks++;  			} @@ -202,7 +207,8 @@ int jffs2_scan_medium(struct jffs2_sb_info *c)  				}  				/* update collected summary information for the current nextblock */  				jffs2_sum_move_collected(c, s); -				D1(printk(KERN_DEBUG "jffs2_scan_medium(): new nextblock = 0x%08x\n", jeb->offset)); +				jffs2_dbg(1, "%s(): new nextblock = 0x%08x\n", +					  __func__, jeb->offset);  				c->nextblock = jeb;  			} else {  				ret = file_dirty(c, jeb); @@ -214,20 +220,21 @@ 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 */ -			D1(printk(KERN_NOTICE "JFFS2: Erase block at 0x%08x is not formatted. It will be erased\n", jeb->offset)); +			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: -			D1(printk(KERN_NOTICE "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;  			bad_blocks++;  			break;  		default: -			printk(KERN_WARNING "jffs2_scan_medium(): unknown block state\n"); +			pr_warn("%s(): unknown block state\n", __func__);  			BUG();  		}  	} @@ -247,16 +254,17 @@ int jffs2_scan_medium(struct jffs2_sb_info *c)  		uint32_t skip = c->nextblock->free_size % c->wbuf_pagesize; -		D1(printk(KERN_DEBUG "jffs2_scan_medium(): Skipping %d bytes in nextblock to ensure page alignment\n", -			  skip)); +		jffs2_dbg(1, "%s(): Skipping %d bytes in nextblock to ensure page alignment\n", +			  __func__, skip);  		jffs2_prealloc_raw_node_refs(c, c->nextblock, 1);  		jffs2_scan_dirty_space(c, c->nextblock, skip);  	}  #endif  	if (c->nr_erasing_blocks) {  		if ( !c->used_size && ((c->nr_free_blocks+empty_blocks+bad_blocks)!= c->nr_blocks || bad_blocks == c->nr_blocks) ) { -			printk(KERN_NOTICE "Cowardly refusing to erase blocks on filesystem with no valid JFFS2 nodes\n"); -			printk(KERN_NOTICE "empty_blocks %d, bad_blocks %d, c->nr_blocks %d\n",empty_blocks,bad_blocks,c->nr_blocks); +			pr_notice("Cowardly refusing to erase blocks on filesystem with no valid JFFS2 nodes\n"); +			pr_notice("empty_blocks %d, bad_blocks %d, c->nr_blocks %d\n", +				  empty_blocks, bad_blocks, c->nr_blocks);  			ret = -EIO;  			goto out;  		} @@ -270,11 +278,9 @@ int jffs2_scan_medium(struct jffs2_sb_info *c)  		kfree(flashbuf);  #ifndef __ECOS  	else -		c->mtd->unpoint(c->mtd, 0, c->mtd->size); +		mtd_unpoint(c->mtd, 0, c->mtd->size);  #endif -	if (s) -		kfree(s); - +	kfree(s);  	return ret;  } @@ -286,11 +292,13 @@ static int jffs2_fill_scan_buf(struct jffs2_sb_info *c, void *buf,  	ret = jffs2_flash_read(c, ofs, len, &retlen, buf);  	if (ret) { -		D1(printk(KERN_WARNING "mtd->read(0x%x bytes from 0x%x) returned %d\n", len, ofs, ret)); +		jffs2_dbg(1, "mtd->read(0x%x bytes from 0x%x) returned %d\n", +			  len, ofs, ret);  		return ret;  	}  	if (retlen < len) { -		D1(printk(KERN_WARNING "Read at 0x%x gave only 0x%zx bytes\n", ofs, retlen)); +		jffs2_dbg(1, "Read at 0x%x gave only 0x%zx bytes\n", +			  ofs, retlen);  		return -EIO;  	}  	return 0; @@ -367,7 +375,7 @@ static int jffs2_scan_xattr_node(struct jffs2_sb_info *c, struct jffs2_erasebloc  	if (jffs2_sum_active())  		jffs2_sum_add_xattr_mem(s, rx, ofs - jeb->offset); -	dbg_xattr("scaning xdatum at %#08x (xid=%u, version=%u)\n", +	dbg_xattr("scanning xdatum at %#08x (xid=%u, version=%u)\n",  		  ofs, xd->xid, xd->version);  	return 0;  } @@ -448,17 +456,17 @@ static int jffs2_scan_eraseblock (struct jffs2_sb_info *c, struct jffs2_eraseblo  	ofs = jeb->offset;  	prevofs = jeb->offset - 1; -	D1(printk(KERN_DEBUG "jffs2_scan_eraseblock(): Scanning block at 0x%x\n", ofs)); +	jffs2_dbg(1, "%s(): Scanning block at 0x%x\n", __func__, ofs);  #ifdef CONFIG_JFFS2_FS_WRITEBUFFER  	if (jffs2_cleanmarker_oob(c)) {  		int ret; -		if (c->mtd->block_isbad(c->mtd, jeb->offset)) +		if (mtd_block_isbad(c->mtd, jeb->offset))  			return BLK_STATE_BADBLOCK;  		ret = jffs2_check_nand_cleanmarker(c, jeb); -		D2(printk(KERN_NOTICE "jffs_check_nand_cleanmarker returned %d\n",ret)); +		jffs2_dbg(2, "jffs_check_nand_cleanmarker returned %d\n", ret);  		/* Even if it's not found, we still scan to see  		   if the block is empty. We use this information @@ -560,7 +568,8 @@ static int jffs2_scan_eraseblock (struct jffs2_sb_info *c, struct jffs2_eraseblo  		if (jffs2_cleanmarker_oob(c)) {  			/* scan oob, take care of cleanmarker */  			int ret = jffs2_check_oob_empty(c, jeb, cleanmarkerfound); -			D2(printk(KERN_NOTICE "jffs2_check_oob_empty returned %d\n",ret)); +			jffs2_dbg(2, "jffs2_check_oob_empty returned %d\n", +				  ret);  			switch (ret) {  			case 0:		return cleanmarkerfound ? BLK_STATE_CLEANMARKER : BLK_STATE_ALLFF;  			case 1: 	return BLK_STATE_ALLDIRTY; @@ -568,15 +577,16 @@ static int jffs2_scan_eraseblock (struct jffs2_sb_info *c, struct jffs2_eraseblo  			}  		}  #endif -		D1(printk(KERN_DEBUG "Block at 0x%08x is empty (erased)\n", jeb->offset)); +		jffs2_dbg(1, "Block at 0x%08x is empty (erased)\n", +			  jeb->offset);  		if (c->cleanmarker_size == 0)  			return BLK_STATE_CLEANMARKER;	/* don't bother with re-erase */  		else  			return BLK_STATE_ALLFF;	/* OK to erase if all blocks are like this */  	}  	if (ofs) { -		D1(printk(KERN_DEBUG "Free space at %08x ends at %08x\n", jeb->offset, -			  jeb->offset + ofs)); +		jffs2_dbg(1, "Free space at %08x ends at %08x\n", jeb->offset, +			  jeb->offset + ofs);  		if ((err = jffs2_prealloc_raw_node_refs(c, jeb, 1)))  			return err;  		if ((err = jffs2_scan_dirty_space(c, jeb, ofs))) @@ -603,12 +613,13 @@ scan_more:  		cond_resched();  		if (ofs & 3) { -			printk(KERN_WARNING "Eep. ofs 0x%08x not word-aligned!\n", ofs); +			pr_warn("Eep. ofs 0x%08x not word-aligned!\n", ofs);  			ofs = PAD(ofs);  			continue;  		}  		if (ofs == prevofs) { -			printk(KERN_WARNING "ofs 0x%08x has already been seen. Skipping\n", ofs); +			pr_warn("ofs 0x%08x has already been seen. Skipping\n", +				ofs);  			if ((err = jffs2_scan_dirty_space(c, jeb, 4)))  				return err;  			ofs += 4; @@ -617,8 +628,10 @@ scan_more:  		prevofs = ofs;  		if (jeb->offset + c->sector_size < ofs + sizeof(*node)) { -			D1(printk(KERN_DEBUG "Fewer than %zd bytes left to end of block. (%x+%x<%x+%zx) Not reading\n", sizeof(struct jffs2_unknown_node), -				  jeb->offset, c->sector_size, ofs, sizeof(*node))); +			jffs2_dbg(1, "Fewer than %zd bytes left to end of block. (%x+%x<%x+%zx) Not reading\n", +				  sizeof(struct jffs2_unknown_node), +				  jeb->offset, c->sector_size, ofs, +				  sizeof(*node));  			if ((err = jffs2_scan_dirty_space(c, jeb, (jeb->offset + c->sector_size)-ofs)))  				return err;  			break; @@ -626,8 +639,9 @@ scan_more:  		if (buf_ofs + buf_len < ofs + sizeof(*node)) {  			buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs); -			D1(printk(KERN_DEBUG "Fewer than %zd bytes (node header) left to end of buf. Reading 0x%x at 0x%08x\n", -				  sizeof(struct jffs2_unknown_node), buf_len, ofs)); +			jffs2_dbg(1, "Fewer than %zd bytes (node header) left to end of buf. Reading 0x%x at 0x%08x\n", +				  sizeof(struct jffs2_unknown_node), +				  buf_len, ofs);  			err = jffs2_fill_scan_buf(c, buf, ofs, buf_len);  			if (err)  				return err; @@ -644,13 +658,13 @@ scan_more:  			ofs += 4;  			scan_end = min_t(uint32_t, EMPTY_SCAN_SIZE(c->sector_size)/8, buf_len); -			D1(printk(KERN_DEBUG "Found empty flash at 0x%08x\n", ofs)); +			jffs2_dbg(1, "Found empty flash at 0x%08x\n", ofs);  		more_empty:  			inbuf_ofs = ofs - buf_ofs;  			while (inbuf_ofs < scan_end) {  				if (unlikely(*(uint32_t *)(&buf[inbuf_ofs]) != 0xffffffff)) { -					printk(KERN_WARNING "Empty flash at 0x%08x ends at 0x%08x\n", -					       empty_start, ofs); +					pr_warn("Empty flash at 0x%08x ends at 0x%08x\n", +						empty_start, ofs);  					if ((err = jffs2_scan_dirty_space(c, jeb, ofs-empty_start)))  						return err;  					goto scan_more; @@ -660,13 +674,15 @@ scan_more:  				ofs += 4;  			}  			/* Ran off end. */ -			D1(printk(KERN_DEBUG "Empty flash to end of buffer at 0x%08x\n", ofs)); +			jffs2_dbg(1, "Empty flash to end of buffer at 0x%08x\n", +				  ofs);  			/* If we're only checking the beginning of a block with a cleanmarker,  			   bail now */  			if (buf_ofs == jeb->offset && jeb->used_size == PAD(c->cleanmarker_size) &&  			    c->cleanmarker_size && !jeb->dirty_size && !ref_next(jeb->first_node)) { -				D1(printk(KERN_DEBUG "%d bytes at start of block seems clean... assuming all clean\n", EMPTY_SCAN_SIZE(c->sector_size))); +				jffs2_dbg(1, "%d bytes at start of block seems clean... assuming all clean\n", +					  EMPTY_SCAN_SIZE(c->sector_size));  				return BLK_STATE_CLEANMARKER;  			}  			if (!buf_size && (scan_end != buf_len)) {/* XIP/point case */ @@ -679,13 +695,14 @@ scan_more:  			if (!buf_len) {  				/* No more to read. Break out of main loop without marking  				   this range of empty space as dirty (because it's not) */ -				D1(printk(KERN_DEBUG "Empty flash at %08x runs to end of block. Treating as free_space\n", -					  empty_start)); +				jffs2_dbg(1, "Empty flash at %08x runs to end of block. Treating as free_space\n", +					  empty_start);  				break;  			}  			/* point never reaches here */  			scan_end = buf_len; -			D1(printk(KERN_DEBUG "Reading another 0x%x at 0x%08x\n", buf_len, ofs)); +			jffs2_dbg(1, "Reading another 0x%x at 0x%08x\n", +				  buf_len, ofs);  			err = jffs2_fill_scan_buf(c, buf, ofs, buf_len);  			if (err)  				return err; @@ -694,22 +711,23 @@ scan_more:  		}  		if (ofs == jeb->offset && je16_to_cpu(node->magic) == KSAMTIB_CIGAM_2SFFJ) { -			printk(KERN_WARNING "Magic bitmask is backwards at offset 0x%08x. Wrong endian filesystem?\n", ofs); +			pr_warn("Magic bitmask is backwards at offset 0x%08x. Wrong endian filesystem?\n", +				ofs);  			if ((err = jffs2_scan_dirty_space(c, jeb, 4)))  				return err;  			ofs += 4;  			continue;  		}  		if (je16_to_cpu(node->magic) == JFFS2_DIRTY_BITMASK) { -			D1(printk(KERN_DEBUG "Dirty bitmask at 0x%08x\n", ofs)); +			jffs2_dbg(1, "Dirty bitmask at 0x%08x\n", ofs);  			if ((err = jffs2_scan_dirty_space(c, jeb, 4)))  				return err;  			ofs += 4;  			continue;  		}  		if (je16_to_cpu(node->magic) == JFFS2_OLD_MAGIC_BITMASK) { -			printk(KERN_WARNING "Old JFFS2 bitmask found at 0x%08x\n", ofs); -			printk(KERN_WARNING "You cannot use older JFFS2 filesystems with newer kernels\n"); +			pr_warn("Old JFFS2 bitmask found at 0x%08x\n", ofs); +			pr_warn("You cannot use older JFFS2 filesystems with newer kernels\n");  			if ((err = jffs2_scan_dirty_space(c, jeb, 4)))  				return err;  			ofs += 4; @@ -717,7 +735,8 @@ scan_more:  		}  		if (je16_to_cpu(node->magic) != JFFS2_MAGIC_BITMASK) {  			/* OK. We're out of possibilities. Whinge and move on */ -			noisy_printk(&noise, "jffs2_scan_eraseblock(): Magic bitmask 0x%04x not found at 0x%08x: 0x%04x instead\n", +			noisy_printk(&noise, "%s(): Magic bitmask 0x%04x not found at 0x%08x: 0x%04x instead\n", +				     __func__,  				     JFFS2_MAGIC_BITMASK, ofs,  				     je16_to_cpu(node->magic));  			if ((err = jffs2_scan_dirty_space(c, jeb, 4))) @@ -732,7 +751,8 @@ scan_more:  		hdr_crc = crc32(0, &crcnode, sizeof(crcnode)-4);  		if (hdr_crc != je32_to_cpu(node->hdr_crc)) { -			noisy_printk(&noise, "jffs2_scan_eraseblock(): Node at 0x%08x {0x%04x, 0x%04x, 0x%08x) has invalid CRC 0x%08x (calculated 0x%08x)\n", +			noisy_printk(&noise, "%s(): Node at 0x%08x {0x%04x, 0x%04x, 0x%08x) has invalid CRC 0x%08x (calculated 0x%08x)\n", +				     __func__,  				     ofs, je16_to_cpu(node->magic),  				     je16_to_cpu(node->nodetype),  				     je32_to_cpu(node->totlen), @@ -746,9 +766,9 @@ scan_more:  		if (ofs + je32_to_cpu(node->totlen) > jeb->offset + c->sector_size) {  			/* Eep. Node goes over the end of the erase block. */ -			printk(KERN_WARNING "Node at 0x%08x with length 0x%08x would run over the end of the erase block\n", -			       ofs, je32_to_cpu(node->totlen)); -			printk(KERN_WARNING "Perhaps the file system was created with the wrong erase size?\n"); +			pr_warn("Node at 0x%08x with length 0x%08x would run over the end of the erase block\n", +				ofs, je32_to_cpu(node->totlen)); +			pr_warn("Perhaps the file system was created with the wrong erase size?\n");  			if ((err = jffs2_scan_dirty_space(c, jeb, 4)))  				return err;  			ofs += 4; @@ -757,7 +777,8 @@ scan_more:  		if (!(je16_to_cpu(node->nodetype) & JFFS2_NODE_ACCURATE)) {  			/* Wheee. This is an obsoleted node */ -			D2(printk(KERN_DEBUG "Node at 0x%08x is obsolete. Skipping\n", ofs)); +			jffs2_dbg(2, "Node at 0x%08x is obsolete. Skipping\n", +				  ofs);  			if ((err = jffs2_scan_dirty_space(c, jeb, PAD(je32_to_cpu(node->totlen)))))  				return err;  			ofs += PAD(je32_to_cpu(node->totlen)); @@ -768,8 +789,9 @@ scan_more:  		case JFFS2_NODETYPE_INODE:  			if (buf_ofs + buf_len < ofs + sizeof(struct jffs2_raw_inode)) {  				buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs); -				D1(printk(KERN_DEBUG "Fewer than %zd bytes (inode node) left to end of buf. Reading 0x%x at 0x%08x\n", -					  sizeof(struct jffs2_raw_inode), buf_len, ofs)); +				jffs2_dbg(1, "Fewer than %zd bytes (inode node) left to end of buf. Reading 0x%x at 0x%08x\n", +					  sizeof(struct jffs2_raw_inode), +					  buf_len, ofs);  				err = jffs2_fill_scan_buf(c, buf, ofs, buf_len);  				if (err)  					return err; @@ -784,8 +806,9 @@ scan_more:  		case JFFS2_NODETYPE_DIRENT:  			if (buf_ofs + buf_len < ofs + je32_to_cpu(node->totlen)) {  				buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs); -				D1(printk(KERN_DEBUG "Fewer than %d bytes (dirent node) left to end of buf. Reading 0x%x at 0x%08x\n", -					  je32_to_cpu(node->totlen), buf_len, ofs)); +				jffs2_dbg(1, "Fewer than %d bytes (dirent node) left to end of buf. Reading 0x%x at 0x%08x\n", +					  je32_to_cpu(node->totlen), buf_len, +					  ofs);  				err = jffs2_fill_scan_buf(c, buf, ofs, buf_len);  				if (err)  					return err; @@ -801,9 +824,9 @@ scan_more:  		case JFFS2_NODETYPE_XATTR:  			if (buf_ofs + buf_len < ofs + je32_to_cpu(node->totlen)) {  				buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs); -				D1(printk(KERN_DEBUG "Fewer than %d bytes (xattr node)" -					  " left to end of buf. Reading 0x%x at 0x%08x\n", -					  je32_to_cpu(node->totlen), buf_len, ofs)); +				jffs2_dbg(1, "Fewer than %d bytes (xattr node) left to end of buf. Reading 0x%x at 0x%08x\n", +					  je32_to_cpu(node->totlen), buf_len, +					  ofs);  				err = jffs2_fill_scan_buf(c, buf, ofs, buf_len);  				if (err)  					return err; @@ -818,9 +841,9 @@ scan_more:  		case JFFS2_NODETYPE_XREF:  			if (buf_ofs + buf_len < ofs + je32_to_cpu(node->totlen)) {  				buf_len = min_t(uint32_t, buf_size, jeb->offset + c->sector_size - ofs); -				D1(printk(KERN_DEBUG "Fewer than %d bytes (xref node)" -					  " left to end of buf. Reading 0x%x at 0x%08x\n", -					  je32_to_cpu(node->totlen), buf_len, ofs)); +				jffs2_dbg(1, "Fewer than %d bytes (xref node) left to end of buf. Reading 0x%x at 0x%08x\n", +					  je32_to_cpu(node->totlen), buf_len, +					  ofs);  				err = jffs2_fill_scan_buf(c, buf, ofs, buf_len);  				if (err)  					return err; @@ -835,15 +858,17 @@ scan_more:  #endif	/* CONFIG_JFFS2_FS_XATTR */  		case JFFS2_NODETYPE_CLEANMARKER: -			D1(printk(KERN_DEBUG "CLEANMARKER node found at 0x%08x\n", ofs)); +			jffs2_dbg(1, "CLEANMARKER node found at 0x%08x\n", ofs);  			if (je32_to_cpu(node->totlen) != c->cleanmarker_size) { -				printk(KERN_NOTICE "CLEANMARKER node found at 0x%08x has totlen 0x%x != normal 0x%x\n", -				       ofs, je32_to_cpu(node->totlen), c->cleanmarker_size); +				pr_notice("CLEANMARKER node found at 0x%08x has totlen 0x%x != normal 0x%x\n", +					  ofs, je32_to_cpu(node->totlen), +					  c->cleanmarker_size);  				if ((err = jffs2_scan_dirty_space(c, jeb, PAD(sizeof(struct jffs2_unknown_node)))))  					return err;  				ofs += PAD(sizeof(struct jffs2_unknown_node));  			} else if (jeb->first_node) { -				printk(KERN_NOTICE "CLEANMARKER node found at 0x%08x, not first node in block (0x%08x)\n", ofs, jeb->offset); +				pr_notice("CLEANMARKER node found at 0x%08x, not first node in block (0x%08x)\n", +					  ofs, jeb->offset);  				if ((err = jffs2_scan_dirty_space(c, jeb, PAD(sizeof(struct jffs2_unknown_node)))))  					return err;  				ofs += PAD(sizeof(struct jffs2_unknown_node)); @@ -865,7 +890,8 @@ scan_more:  		default:  			switch (je16_to_cpu(node->nodetype) & JFFS2_COMPAT_MASK) {  			case JFFS2_FEATURE_ROCOMPAT: -				printk(KERN_NOTICE "Read-only compatible feature node (0x%04x) found at offset 0x%08x\n", je16_to_cpu(node->nodetype), ofs); +				pr_notice("Read-only compatible feature node (0x%04x) found at offset 0x%08x\n", +					  je16_to_cpu(node->nodetype), ofs);  				c->flags |= JFFS2_SB_FLAG_RO;  				if (!(jffs2_is_readonly(c)))  					return -EROFS; @@ -875,18 +901,21 @@ scan_more:  				break;  			case JFFS2_FEATURE_INCOMPAT: -				printk(KERN_NOTICE "Incompatible feature node (0x%04x) found at offset 0x%08x\n", je16_to_cpu(node->nodetype), ofs); +				pr_notice("Incompatible feature node (0x%04x) found at offset 0x%08x\n", +					  je16_to_cpu(node->nodetype), ofs);  				return -EINVAL;  			case JFFS2_FEATURE_RWCOMPAT_DELETE: -				D1(printk(KERN_NOTICE "Unknown but compatible feature node (0x%04x) found at offset 0x%08x\n", je16_to_cpu(node->nodetype), ofs)); +				jffs2_dbg(1, "Unknown but compatible feature node (0x%04x) found at offset 0x%08x\n", +					  je16_to_cpu(node->nodetype), ofs);  				if ((err = jffs2_scan_dirty_space(c, jeb, PAD(je32_to_cpu(node->totlen)))))  					return err;  				ofs += PAD(je32_to_cpu(node->totlen));  				break;  			case JFFS2_FEATURE_RWCOMPAT_COPY: { -				D1(printk(KERN_NOTICE "Unknown but compatible feature node (0x%04x) found at offset 0x%08x\n", je16_to_cpu(node->nodetype), ofs)); +				jffs2_dbg(1, "Unknown but compatible feature node (0x%04x) found at offset 0x%08x\n", +					  je16_to_cpu(node->nodetype), ofs);  				jffs2_link_node_ref(c, jeb, ofs | REF_PRISTINE, PAD(je32_to_cpu(node->totlen)), NULL); @@ -907,8 +936,9 @@ scan_more:  		}  	} -	D1(printk(KERN_DEBUG "Block at 0x%08x: free 0x%08x, dirty 0x%08x, unchecked 0x%08x, used 0x%08x, wasted 0x%08x\n", -		  jeb->offset,jeb->free_size, jeb->dirty_size, jeb->unchecked_size, jeb->used_size, jeb->wasted_size)); +	jffs2_dbg(1, "Block at 0x%08x: free 0x%08x, dirty 0x%08x, unchecked 0x%08x, used 0x%08x, wasted 0x%08x\n", +		  jeb->offset, jeb->free_size, jeb->dirty_size, +		  jeb->unchecked_size, jeb->used_size, jeb->wasted_size);  	/* mark_node_obsolete can add to wasted !! */  	if (jeb->wasted_size) { @@ -934,7 +964,7 @@ struct jffs2_inode_cache *jffs2_scan_make_ino_cache(struct jffs2_sb_info *c, uin  	ic = jffs2_alloc_inode_cache();  	if (!ic) { -		printk(KERN_NOTICE "jffs2_scan_make_inode_cache(): allocation of inode cache failed\n"); +		pr_notice("%s(): allocation of inode cache failed\n", __func__);  		return NULL;  	}  	memset(ic, 0, sizeof(*ic)); @@ -953,7 +983,7 @@ static int jffs2_scan_inode_node(struct jffs2_sb_info *c, struct jffs2_erasebloc  	struct jffs2_inode_cache *ic;  	uint32_t crc, ino = je32_to_cpu(ri->ino); -	D1(printk(KERN_DEBUG "jffs2_scan_inode_node(): Node at 0x%08x\n", ofs)); +	jffs2_dbg(1, "%s(): Node at 0x%08x\n", __func__, ofs);  	/* We do very little here now. Just check the ino# to which we should attribute  	   this node; we can do all the CRC checking etc. later. There's a tradeoff here -- @@ -967,9 +997,8 @@ static int jffs2_scan_inode_node(struct jffs2_sb_info *c, struct jffs2_erasebloc  	/* Check the node CRC in any case. */  	crc = crc32(0, ri, sizeof(*ri)-8);  	if (crc != je32_to_cpu(ri->node_crc)) { -		printk(KERN_NOTICE "jffs2_scan_inode_node(): CRC failed on " -		       "node at 0x%08x: Read 0x%08x, calculated 0x%08x\n", -		       ofs, je32_to_cpu(ri->node_crc), crc); +		pr_notice("%s(): CRC failed on node at 0x%08x: Read 0x%08x, calculated 0x%08x\n", +			  __func__, ofs, je32_to_cpu(ri->node_crc), crc);  		/*  		 * We believe totlen because the CRC on the node  		 * _header_ was OK, just the node itself failed. @@ -988,10 +1017,10 @@ static int jffs2_scan_inode_node(struct jffs2_sb_info *c, struct jffs2_erasebloc  	/* Wheee. It worked */  	jffs2_link_node_ref(c, jeb, ofs | REF_UNCHECKED, PAD(je32_to_cpu(ri->totlen)), ic); -	D1(printk(KERN_DEBUG "Node is ino #%u, version %d. Range 0x%x-0x%x\n", +	jffs2_dbg(1, "Node is ino #%u, version %d. Range 0x%x-0x%x\n",  		  je32_to_cpu(ri->ino), je32_to_cpu(ri->version),  		  je32_to_cpu(ri->offset), -		  je32_to_cpu(ri->offset)+je32_to_cpu(ri->dsize))); +		  je32_to_cpu(ri->offset)+je32_to_cpu(ri->dsize));  	pseudo_random += je32_to_cpu(ri->version); @@ -1011,15 +1040,15 @@ static int jffs2_scan_dirent_node(struct jffs2_sb_info *c, struct jffs2_eraseblo  	uint32_t crc;  	int err; -	D1(printk(KERN_DEBUG "jffs2_scan_dirent_node(): Node at 0x%08x\n", ofs)); +	jffs2_dbg(1, "%s(): Node at 0x%08x\n", __func__, ofs);  	/* We don't get here unless the node is still valid, so we don't have to  	   mask in the ACCURATE bit any more. */  	crc = crc32(0, rd, sizeof(*rd)-8);  	if (crc != je32_to_cpu(rd->node_crc)) { -		printk(KERN_NOTICE "jffs2_scan_dirent_node(): Node CRC failed on node at 0x%08x: Read 0x%08x, calculated 0x%08x\n", -		       ofs, je32_to_cpu(rd->node_crc), crc); +		pr_notice("%s(): Node CRC failed on node at 0x%08x: Read 0x%08x, calculated 0x%08x\n", +			  __func__, ofs, je32_to_cpu(rd->node_crc), crc);  		/* We believe totlen because the CRC on the node _header_ was OK, just the node itself failed. */  		if ((err = jffs2_scan_dirty_space(c, jeb, PAD(je32_to_cpu(rd->totlen)))))  			return err; @@ -1031,7 +1060,7 @@ static int jffs2_scan_dirent_node(struct jffs2_sb_info *c, struct jffs2_eraseblo  	/* Should never happen. Did. (OLPC trac #4184)*/  	checkedlen = strnlen(rd->name, rd->nsize);  	if (checkedlen < rd->nsize) { -		printk(KERN_ERR "Dirent at %08x has zeroes in name. Truncating to %d chars\n", +		pr_err("Dirent at %08x has zeroes in name. Truncating to %d chars\n",  		       ofs, checkedlen);  	}  	fd = jffs2_alloc_full_dirent(checkedlen+1); @@ -1043,9 +1072,10 @@ static int jffs2_scan_dirent_node(struct jffs2_sb_info *c, struct jffs2_eraseblo  	crc = crc32(0, fd->name, rd->nsize);  	if (crc != je32_to_cpu(rd->name_crc)) { -		printk(KERN_NOTICE "jffs2_scan_dirent_node(): Name CRC failed on node at 0x%08x: Read 0x%08x, calculated 0x%08x\n", -		       ofs, je32_to_cpu(rd->name_crc), crc); -		D1(printk(KERN_NOTICE "Name for which CRC failed is (now) '%s', ino #%d\n", fd->name, je32_to_cpu(rd->ino))); +		pr_notice("%s(): Name CRC failed on node at 0x%08x: Read 0x%08x, calculated 0x%08x\n", +			  __func__, ofs, je32_to_cpu(rd->name_crc), crc); +		jffs2_dbg(1, "Name for which CRC failed is (now) '%s', ino #%d\n", +			  fd->name, je32_to_cpu(rd->ino));  		jffs2_free_full_dirent(fd);  		/* FIXME: Why do we believe totlen? */  		/* We believe totlen because the CRC on the node _header_ was OK, just the name failed. */  | 
