- 论坛徽章:
- 0
|
没啥保密的啊,我是小菜菜,从网上down的啊
http://www.wiley.com//legacy/compbooks/pate/
绝对地址http://www.wiley.com//legacy/compbooks/pate/uxfs_rh8.tar.gz
我就是把它移植到2.6上了
主要出在mount上
2.4函数是
struct super_block *
ux_read_super(struct super_block *s, void *data, int silent)
{
struct ux_superblock *usb;
struct ux_fs *fs;
struct buffer_head *bh;
struct inode *inode;
kdev_t dev;
dev = s->s_dev;
set_blocksize(dev, UX_BSIZE);
s->s_blocksize = UX_BSIZE;
s->s_blocksize_bits = UX_BSIZE_BITS;
bh = sb_bread(s, 0);
if(!bh) {
goto out;
}
usb = (struct ux_superblock *)bh->b_data;
if (usb->s_magic != UX_MAGIC) {
if (!silent)
printk("Unable to find uxfs filesystem\n");
goto out;
}
if (usb->s_mod == UX_FSDIRTY) {
printk("Filesystem is not clean. Write and "
"run fsck!\n");
goto out;
}
/*
* We should really mark the superblock to
* be dirty and write it back to disk.
*/
fs = (struct ux_fs *)kmalloc(sizeof(struct ux_fs),
GFP_KERNEL);
fs->u_sb = usb;
fs->u_sbh = bh;
s->s_private = fs;
s->s_magic = UX_MAGIC;
s->s_op = &uxfs_sops;
inode = iget(s, UX_ROOT_INO);
if (!inode) {
goto out;
}
s->s_root = d_alloc_root(inode);
if (!s->s_root) {
iput(inode);
goto out;
}
if (!(s->s_flags & MS_RDONLY)) {
mark_buffer_dirty(bh);
s->s_dirt = 1;
}
return s;
out:
return NULL;
}
我把它该成了ux_get_sb()且回调uxfs_fill_super(),实现上就是这些了!
这个函数是2.4的相关数据结构我改为2.6了!
不过这不仔细看也看不出来什么啊!
我就是想知道怎么强制卸载!就是出现了段错误,我想一点一点printk调 |
|