diff options
Diffstat (limited to 'fs/efs')
| -rw-r--r-- | fs/efs/dir.c | 18 | ||||
| -rw-r--r-- | fs/efs/efs.h | 6 | ||||
| -rw-r--r-- | fs/efs/file.c | 14 | ||||
| -rw-r--r-- | fs/efs/inode.c | 42 | ||||
| -rw-r--r-- | fs/efs/namei.c | 8 | ||||
| -rw-r--r-- | fs/efs/super.c | 84 | 
6 files changed, 83 insertions, 89 deletions
diff --git a/fs/efs/dir.c b/fs/efs/dir.c index b72307ccdf7..ce63b24f7c3 100644 --- a/fs/efs/dir.c +++ b/fs/efs/dir.c @@ -26,7 +26,8 @@ static int efs_readdir(struct file *file, struct dir_context *ctx)  	int			slot;  	if (inode->i_size & (EFS_DIRBSIZE-1)) -		printk(KERN_WARNING "EFS: WARNING: readdir(): directory size not a multiple of EFS_DIRBSIZE\n"); +		pr_warn("%s(): directory size not a multiple of EFS_DIRBSIZE\n", +			__func__);  	/* work out where this entry can be found */  	block = ctx->pos >> EFS_DIRBSIZE_BITS; @@ -43,14 +44,15 @@ static int efs_readdir(struct file *file, struct dir_context *ctx)  		bh = sb_bread(inode->i_sb, efs_bmap(inode, block));  		if (!bh) { -			printk(KERN_ERR "EFS: readdir(): failed to read dir block %d\n", block); +			pr_err("%s(): failed to read dir block %d\n", +			       __func__, block);  			break;  		}  		dirblock = (struct efs_dir *) bh->b_data;   		if (be16_to_cpu(dirblock->magic) != EFS_DIRBLK_MAGIC) { -			printk(KERN_ERR "EFS: readdir(): invalid directory block\n"); +			pr_err("%s(): invalid directory block\n", __func__);  			brelse(bh);  			break;  		} @@ -69,10 +71,9 @@ static int efs_readdir(struct file *file, struct dir_context *ctx)  			inodenum = be32_to_cpu(dirslot->inode);  			namelen  = dirslot->namelen;  			nameptr  = dirslot->name; - -#ifdef DEBUG -			printk(KERN_DEBUG "EFS: readdir(): block %d slot %d/%d: inode %u, name \"%s\", namelen %u\n", block, slot, dirblock->slots-1, inodenum, nameptr, namelen); -#endif +			pr_debug("%s(): block %d slot %d/%d: inode %u, name \"%s\", namelen %u\n", +				 __func__, block, slot, dirblock->slots-1, +				 inodenum, nameptr, namelen);  			if (!namelen)  				continue;  			/* found the next entry */ @@ -80,7 +81,8 @@ static int efs_readdir(struct file *file, struct dir_context *ctx)  			/* sanity check */  			if (nameptr - (char *) dirblock + namelen > EFS_DIRBSIZE) { -				printk(KERN_WARNING "EFS: directory entry %d exceeds directory block\n", slot); +				pr_warn("directory entry %d exceeds directory block\n", +					slot);  				continue;  			} diff --git a/fs/efs/efs.h b/fs/efs/efs.h index 5528926ac7f..5bbf9612140 100644 --- a/fs/efs/efs.h +++ b/fs/efs/efs.h @@ -7,6 +7,12 @@  #ifndef _EFS_EFS_H_  #define _EFS_EFS_H_ +#ifdef pr_fmt +#undef pr_fmt +#endif + +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt +  #include <linux/fs.h>  #include <asm/uaccess.h> diff --git a/fs/efs/file.c b/fs/efs/file.c index 1ccb364ffa6..a37dcee4686 100644 --- a/fs/efs/file.c +++ b/fs/efs/file.c @@ -22,10 +22,8 @@ int efs_get_block(struct inode *inode, sector_t iblock,  		/*  		 * i have no idea why this happens as often as it does  		 */ -		printk(KERN_WARNING "EFS: bmap(): block %d >= %ld (filesize %ld)\n", -			block, -			inode->i_blocks, -			inode->i_size); +		pr_warn("%s(): block %d >= %ld (filesize %ld)\n", +			__func__, block, inode->i_blocks, inode->i_size);  #endif  		return 0;  	} @@ -38,7 +36,7 @@ int efs_get_block(struct inode *inode, sector_t iblock,  int efs_bmap(struct inode *inode, efs_block_t block) {  	if (block < 0) { -		printk(KERN_WARNING "EFS: bmap(): block < 0\n"); +		pr_warn("%s(): block < 0\n", __func__);  		return 0;  	} @@ -48,10 +46,8 @@ int efs_bmap(struct inode *inode, efs_block_t block) {  		/*  		 * i have no idea why this happens as often as it does  		 */ -		printk(KERN_WARNING "EFS: bmap(): block %d >= %ld (filesize %ld)\n", -			block, -			inode->i_blocks, -			inode->i_size); +		pr_warn("%s(): block %d >= %ld (filesize %ld)\n", +			__func__, block, inode->i_blocks, inode->i_size);  #endif  		return 0;  	} diff --git a/fs/efs/inode.c b/fs/efs/inode.c index d15ccf20f1b..079d20306ee 100644 --- a/fs/efs/inode.c +++ b/fs/efs/inode.c @@ -89,7 +89,7 @@ struct inode *efs_iget(struct super_block *super, unsigned long ino)  	bh = sb_bread(inode->i_sb, block);  	if (!bh) { -		printk(KERN_WARNING "EFS: bread() failed at block %d\n", block); +		pr_warn("%s() failed at block %d\n", __func__, block);  		goto read_inode_error;  	} @@ -130,19 +130,16 @@ struct inode *efs_iget(struct super_block *super, unsigned long ino)  	for(i = 0; i < EFS_DIRECTEXTENTS; i++) {  		extent_copy(&(efs_inode->di_u.di_extents[i]), &(in->extents[i]));  		if (i < in->numextents && in->extents[i].cooked.ex_magic != 0) { -			printk(KERN_WARNING "EFS: extent %d has bad magic number in inode %lu\n", i, inode->i_ino); +			pr_warn("extent %d has bad magic number in inode %lu\n", +				i, inode->i_ino);  			brelse(bh);  			goto read_inode_error;  		}  	}  	brelse(bh); -    -#ifdef DEBUG -	printk(KERN_DEBUG "EFS: efs_iget(): inode %lu, extents %d, mode %o\n", -		inode->i_ino, in->numextents, inode->i_mode); -#endif - +	pr_debug("efs_iget(): inode %lu, extents %d, mode %o\n", +		 inode->i_ino, in->numextents, inode->i_mode);  	switch (inode->i_mode & S_IFMT) {  		case S_IFDIR:   			inode->i_op = &efs_dir_inode_operations;  @@ -162,7 +159,7 @@ struct inode *efs_iget(struct super_block *super, unsigned long ino)  			init_special_inode(inode, inode->i_mode, device);  			break;  		default: -			printk(KERN_WARNING "EFS: unsupported inode mode %o\n", inode->i_mode); +			pr_warn("unsupported inode mode %o\n", inode->i_mode);  			goto read_inode_error;  			break;  	} @@ -171,7 +168,7 @@ struct inode *efs_iget(struct super_block *super, unsigned long ino)  	return inode;  read_inode_error: -	printk(KERN_WARNING "EFS: failed to read inode %lu\n", inode->i_ino); +	pr_warn("failed to read inode %lu\n", inode->i_ino);  	iget_failed(inode);  	return ERR_PTR(-EIO);  } @@ -216,7 +213,7 @@ efs_block_t efs_map_block(struct inode *inode, efs_block_t block) {  		/* if we only have one extent then nothing can be found */  		if (in->numextents == 1) { -			printk(KERN_ERR "EFS: map_block() failed to map (1 extent)\n"); +			pr_err("%s() failed to map (1 extent)\n", __func__);  			return 0;  		} @@ -234,13 +231,12 @@ efs_block_t efs_map_block(struct inode *inode, efs_block_t block) {  			}  		} -		printk(KERN_ERR "EFS: map_block() failed to map block %u (dir)\n", block); +		pr_err("%s() failed to map block %u (dir)\n", __func__, block);  		return 0;  	} -#ifdef DEBUG -	printk(KERN_DEBUG "EFS: map_block(): indirect search for logical block %u\n", block); -#endif +	pr_debug("%s(): indirect search for logical block %u\n", +		 __func__, block);  	direxts = in->extents[0].cooked.ex_offset;  	indexts = in->numextents; @@ -262,7 +258,8 @@ efs_block_t efs_map_block(struct inode *inode, efs_block_t block) {  		if (dirext == direxts) {  			/* should never happen */ -			printk(KERN_ERR "EFS: couldn't find direct extent for indirect extent %d (block %u)\n", cur, block); +			pr_err("couldn't find direct extent for indirect extent %d (block %u)\n", +			       cur, block);  			if (bh) brelse(bh);  			return 0;  		} @@ -279,12 +276,12 @@ efs_block_t efs_map_block(struct inode *inode, efs_block_t block) {  			bh = sb_bread(inode->i_sb, iblock);  			if (!bh) { -				printk(KERN_ERR "EFS: bread() failed at block %d\n", iblock); +				pr_err("%s() failed at block %d\n", +				       __func__, iblock);  				return 0;  			} -#ifdef DEBUG -			printk(KERN_DEBUG "EFS: map_block(): read indirect extent block %d\n", iblock); -#endif +			pr_debug("%s(): read indirect extent block %d\n", +				 __func__, iblock);  			first = 0;  			lastblock = iblock;  		} @@ -294,7 +291,8 @@ efs_block_t efs_map_block(struct inode *inode, efs_block_t block) {  		extent_copy(&(exts[ioffset]), &ext);  		if (ext.cooked.ex_magic != 0) { -			printk(KERN_ERR "EFS: extent %d has bad magic number in block %d\n", cur, iblock); +			pr_err("extent %d has bad magic number in block %d\n", +			       cur, iblock);  			if (bh) brelse(bh);  			return 0;  		} @@ -306,7 +304,7 @@ efs_block_t efs_map_block(struct inode *inode, efs_block_t block) {  		}  	}  	if (bh) brelse(bh); -	printk(KERN_ERR "EFS: map_block() failed to map block %u (indir)\n", block); +	pr_err("%s() failed to map block %u (indir)\n", __func__, block);  	return 0;  }   diff --git a/fs/efs/namei.c b/fs/efs/namei.c index 96f66d213a1..356c044e2cd 100644 --- a/fs/efs/namei.c +++ b/fs/efs/namei.c @@ -23,20 +23,22 @@ static efs_ino_t efs_find_entry(struct inode *inode, const char *name, int len)  	efs_block_t		block;  	if (inode->i_size & (EFS_DIRBSIZE-1)) -		printk(KERN_WARNING "EFS: WARNING: find_entry(): directory size not a multiple of EFS_DIRBSIZE\n"); +		pr_warn("%s(): directory size not a multiple of EFS_DIRBSIZE\n", +			__func__);  	for(block = 0; block < inode->i_blocks; block++) {  		bh = sb_bread(inode->i_sb, efs_bmap(inode, block));  		if (!bh) { -			printk(KERN_ERR "EFS: find_entry(): failed to read dir block %d\n", block); +			pr_err("%s(): failed to read dir block %d\n", +			       __func__, block);  			return 0;  		}  		dirblock = (struct efs_dir *) bh->b_data;  		if (be16_to_cpu(dirblock->magic) != EFS_DIRBLK_MAGIC) { -			printk(KERN_ERR "EFS: find_entry(): invalid directory block\n"); +			pr_err("%s(): invalid directory block\n", __func__);  			brelse(bh);  			return(0);  		} diff --git a/fs/efs/super.c b/fs/efs/super.c index c6f57a74a55..7fca462ea4e 100644 --- a/fs/efs/super.c +++ b/fs/efs/super.c @@ -26,11 +26,18 @@ static struct dentry *efs_mount(struct file_system_type *fs_type,  	return mount_bdev(fs_type, flags, dev_name, data, efs_fill_super);  } +static void efs_kill_sb(struct super_block *s) +{ +	struct efs_sb_info *sbi = SUPER_INFO(s); +	kill_block_super(s); +	kfree(sbi); +} +  static struct file_system_type efs_fs_type = {  	.owner		= THIS_MODULE,  	.name		= "efs",  	.mount		= efs_mount, -	.kill_sb	= kill_block_super, +	.kill_sb	= efs_kill_sb,  	.fs_flags	= FS_REQUIRES_DEV,  };  MODULE_ALIAS_FS("efs"); @@ -84,7 +91,7 @@ static void init_once(void *foo)  	inode_init_once(&ei->vfs_inode);  } -static int init_inodecache(void) +static int __init init_inodecache(void)  {  	efs_inode_cachep = kmem_cache_create("efs_inode_cache",  				sizeof(struct efs_inode_info), @@ -105,14 +112,9 @@ static void destroy_inodecache(void)  	kmem_cache_destroy(efs_inode_cachep);  } -static void efs_put_super(struct super_block *s) -{ -	kfree(s->s_fs_info); -	s->s_fs_info = NULL; -} -  static int efs_remount(struct super_block *sb, int *flags, char *data)  { +	sync_filesystem(sb);  	*flags |= MS_RDONLY;  	return 0;  } @@ -120,7 +122,6 @@ static int efs_remount(struct super_block *sb, int *flags, char *data)  static const struct super_operations efs_superblock_operations = {  	.alloc_inode	= efs_alloc_inode,  	.destroy_inode	= efs_destroy_inode, -	.put_super	= efs_put_super,  	.statfs		= efs_statfs,  	.remount_fs	= efs_remount,  }; @@ -133,7 +134,7 @@ static const struct export_operations efs_export_ops = {  static int __init init_efs_fs(void) {  	int err; -	printk("EFS: "EFS_VERSION" - http://aeschi.ch.eu.org/efs/\n"); +	pr_info(EFS_VERSION" - http://aeschi.ch.eu.org/efs/\n");  	err = init_inodecache();  	if (err)  		goto out1; @@ -178,12 +179,12 @@ static efs_block_t efs_validate_vh(struct volume_header *vh) {  		csum += be32_to_cpu(cs);  	}  	if (csum) { -		printk(KERN_INFO "EFS: SGI disklabel: checksum bad, label corrupted\n"); +		pr_warn("SGI disklabel: checksum bad, label corrupted\n");  		return 0;  	}  #ifdef DEBUG -	printk(KERN_DEBUG "EFS: bf: \"%16s\"\n", vh->vh_bootfile); +	pr_debug("bf: \"%16s\"\n", vh->vh_bootfile);  	for(i = 0; i < NVDIR; i++) {  		int	j; @@ -195,9 +196,8 @@ static efs_block_t efs_validate_vh(struct volume_header *vh) {  		name[j] = (char) 0;  		if (name[0]) { -			printk(KERN_DEBUG "EFS: vh: %8s block: 0x%08x size: 0x%08x\n", -				name, -				(int) be32_to_cpu(vh->vh_vd[i].vd_lbn), +			pr_debug("vh: %8s block: 0x%08x size: 0x%08x\n", +				name, (int) be32_to_cpu(vh->vh_vd[i].vd_lbn),  				(int) be32_to_cpu(vh->vh_vd[i].vd_nbytes));  		}  	} @@ -210,12 +210,11 @@ static efs_block_t efs_validate_vh(struct volume_header *vh) {  		}  #ifdef DEBUG  		if (be32_to_cpu(vh->vh_pt[i].pt_nblks)) { -			printk(KERN_DEBUG "EFS: pt %2d: start: %08d size: %08d type: 0x%02x (%s)\n", -				i, -				(int) be32_to_cpu(vh->vh_pt[i].pt_firstlbn), -				(int) be32_to_cpu(vh->vh_pt[i].pt_nblks), -				pt_type, -				(pt_entry->pt_name) ? pt_entry->pt_name : "unknown"); +			pr_debug("pt %2d: start: %08d size: %08d type: 0x%02x (%s)\n", +				 i, (int)be32_to_cpu(vh->vh_pt[i].pt_firstlbn), +				 (int)be32_to_cpu(vh->vh_pt[i].pt_nblks), +				 pt_type, (pt_entry->pt_name) ? +				 pt_entry->pt_name : "unknown");  		}  #endif  		if (IS_EFS(pt_type)) { @@ -225,11 +224,10 @@ static efs_block_t efs_validate_vh(struct volume_header *vh) {  	}  	if (slice == -1) { -		printk(KERN_NOTICE "EFS: partition table contained no EFS partitions\n"); +		pr_notice("partition table contained no EFS partitions\n");  #ifdef DEBUG  	} else { -		printk(KERN_INFO "EFS: using slice %d (type %s, offset 0x%x)\n", -			slice, +		pr_info("using slice %d (type %s, offset 0x%x)\n", slice,  			(pt_entry->pt_name) ? pt_entry->pt_name : "unknown",  			sblock);  #endif @@ -259,7 +257,6 @@ static int efs_fill_super(struct super_block *s, void *d, int silent)  	struct efs_sb_info *sb;  	struct buffer_head *bh;  	struct inode *root; -	int ret = -EINVAL;   	sb = kzalloc(sizeof(struct efs_sb_info), GFP_KERNEL);  	if (!sb) @@ -268,17 +265,17 @@ static int efs_fill_super(struct super_block *s, void *d, int silent)  	s->s_magic		= EFS_SUPER_MAGIC;  	if (!sb_set_blocksize(s, EFS_BLOCKSIZE)) { -		printk(KERN_ERR "EFS: device does not support %d byte blocks\n", +		pr_err("device does not support %d byte blocks\n",  			EFS_BLOCKSIZE); -		goto out_no_fs_ul; +		return -EINVAL;  	}  	/* read the vh (volume header) block */  	bh = sb_bread(s, 0);  	if (!bh) { -		printk(KERN_ERR "EFS: cannot read volume header\n"); -		goto out_no_fs_ul; +		pr_err("cannot read volume header\n"); +		return -EINVAL;  	}  	/* @@ -290,27 +287,28 @@ static int efs_fill_super(struct super_block *s, void *d, int silent)  	brelse(bh);  	if (sb->fs_start == -1) { -		goto out_no_fs_ul; +		return -EINVAL;  	}  	bh = sb_bread(s, sb->fs_start + EFS_SUPER);  	if (!bh) { -		printk(KERN_ERR "EFS: cannot read superblock\n"); -		goto out_no_fs_ul; +		pr_err("cannot read superblock\n"); +		return -EINVAL;  	}  	if (efs_validate_super(sb, (struct efs_super *) bh->b_data)) {  #ifdef DEBUG -		printk(KERN_WARNING "EFS: invalid superblock at block %u\n", sb->fs_start + EFS_SUPER); +		pr_warn("invalid superblock at block %u\n", +			sb->fs_start + EFS_SUPER);  #endif  		brelse(bh); -		goto out_no_fs_ul; +		return -EINVAL;  	}  	brelse(bh);  	if (!(s->s_flags & MS_RDONLY)) {  #ifdef DEBUG -		printk(KERN_INFO "EFS: forcing read-only mode\n"); +		pr_info("forcing read-only mode\n");  #endif  		s->s_flags |= MS_RDONLY;  	} @@ -318,25 +316,17 @@ static int efs_fill_super(struct super_block *s, void *d, int silent)  	s->s_export_op = &efs_export_ops;  	root = efs_iget(s, EFS_ROOTINODE);  	if (IS_ERR(root)) { -		printk(KERN_ERR "EFS: get root inode failed\n"); -		ret = PTR_ERR(root); -		goto out_no_fs; +		pr_err("get root inode failed\n"); +		return PTR_ERR(root);  	}  	s->s_root = d_make_root(root);  	if (!(s->s_root)) { -		printk(KERN_ERR "EFS: get root dentry failed\n"); -		ret = -ENOMEM; -		goto out_no_fs; +		pr_err("get root dentry failed\n"); +		return -ENOMEM;  	}  	return 0; - -out_no_fs_ul: -out_no_fs: -	s->s_fs_info = NULL; -	kfree(sb); -	return ret;  }  static int efs_statfs(struct dentry *dentry, struct kstatfs *buf) {  | 
