f433dc5634
I found a few bugs in the BFS driver. Detailed description of the bugs as well as the steps to reproduce the errors are given in the kernel bugzilla. Please follow these links for more information: http://bugzilla.kernel.org/show_bug.cgi?id=9363 http://bugzilla.kernel.org/show_bug.cgi?id=9364 http://bugzilla.kernel.org/show_bug.cgi?id=9365 http://bugzilla.kernel.org/show_bug.cgi?id=9366 This patch fixes the bugs described above. Besides, the patch introduces coding style changes to make the BFS driver conform to the requirements specified for Linux kernel code. Finally, I made a few cosmetic changes such as removal of trivial debug output. Also, the patch removes the fields `si_lf_ioff' and `si_lf_sblk' of the in-core superblock structure. These fields are initialized but never actually used. If you are wondering why I need BFS, here is the answer: I am using this driver in the context of Linux kernel classes I am teaching in the Moscow State University and in the International Institute of Information Technology in Pune, India. Signed-off-by: Dmitri Vorobiev <dmitri.vorobiev@gmail.com> Cc: Tigran Aivazian <tigran@veritas.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
58 lines
1.3 KiB
C
58 lines
1.3 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 */
|
|
};
|
|
|
|
/*
|
|
* 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, __FUNCTION__, ## args)
|
|
|
|
|
|
/* 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 */
|