mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 16:38:31 +00:00 
			
		
		
		
	 3f165e4cf2
			
		
	
	
		3f165e4cf2
		
	
	
	
	
		
			
			Replace the BKL-based locking scheme used in the bfs driver by a private filesystem-wide mutex. Signed-off-by: Dmitri Vorobiev <dmitri.vorobiev@movial.fi> Cc: Tigran Aivazian <tigran_aivazian@symantec.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  *	fs/bfs/bfs.h
 | |
|  *	Copyright (C) 1999 Tigran Aivazian <tigran@veritas.com>
 | |
|  */
 | |
| #ifndef _FS_BFS_BFS_H
 | |
| #define _FS_BFS_BFS_H
 | |
| 
 | |
| #include <linux/bfs_fs.h>
 | |
| 
 | |
| /*
 | |
|  * BFS file system in-core superblock info
 | |
|  */
 | |
| struct bfs_sb_info {
 | |
| 	unsigned long si_blocks;
 | |
| 	unsigned long si_freeb;
 | |
| 	unsigned long si_freei;
 | |
| 	unsigned long si_lf_eblk;
 | |
| 	unsigned long si_lasti;
 | |
| 	unsigned long *si_imap;
 | |
| 	struct buffer_head *si_sbh;		/* buffer header w/superblock */
 | |
| 	struct mutex bfs_lock;
 | |
| };
 | |
| 
 | |
| /*
 | |
|  * BFS file system in-core inode info
 | |
|  */
 | |
| struct bfs_inode_info {
 | |
| 	unsigned long i_dsk_ino; /* inode number from the disk, can be 0 */
 | |
| 	unsigned long i_sblock;
 | |
| 	unsigned long i_eblock;
 | |
| 	struct inode vfs_inode;
 | |
| };
 | |
| 
 | |
| static inline struct bfs_sb_info *BFS_SB(struct super_block *sb)
 | |
| {
 | |
| 	return sb->s_fs_info;
 | |
| }
 | |
| 
 | |
| static inline struct bfs_inode_info *BFS_I(struct inode *inode)
 | |
| {
 | |
| 	return container_of(inode, struct bfs_inode_info, vfs_inode);
 | |
| }
 | |
| 
 | |
| 
 | |
| #define printf(format, args...) \
 | |
| 	printk(KERN_ERR "BFS-fs: %s(): " format, __func__, ## args)
 | |
| 
 | |
| /* inode.c */
 | |
| extern struct inode *bfs_iget(struct super_block *sb, unsigned long ino);
 | |
| 
 | |
| /* file.c */
 | |
| extern const struct inode_operations bfs_file_inops;
 | |
| extern const struct file_operations bfs_file_operations;
 | |
| extern const struct address_space_operations bfs_aops;
 | |
| 
 | |
| /* dir.c */
 | |
| extern const struct inode_operations bfs_dir_inops;
 | |
| extern const struct file_operations bfs_dir_operations;
 | |
| 
 | |
| #endif /* _FS_BFS_BFS_H */
 |