X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fsmfs%2Fcache.c;fp=lustre%2Fsmfs%2Fcache.c;h=f68a1a8985a2148e324f6c8f4089812c38d2ae86;hb=cd9c585e8c7bdd6cfd802be64ef277dfd466be17;hp=d94a0cb2a6b595bd312df28dd7e0cd38979bdd42;hpb=076069a9d05fb6228d45745cde26c2a87f3580a6;p=fs%2Flustre-release.git diff --git a/lustre/smfs/cache.c b/lustre/smfs/cache.c index d94a0cb..f68a1a8 100644 --- a/lustre/smfs/cache.c +++ b/lustre/smfs/cache.c @@ -1,5 +1,23 @@ -/* - * snapfs/cache.c +/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- + * vim:expandtab:shiftwidth=8:tabstop=8: + * + * Copyright (C) 2004 Cluster File Systems, Inc. + * + * This file is part of Lustre, http://www.lustre.org. + * + * Lustre is free software; you can redistribute it and/or + * modify it under the terms of version 2 of the GNU General Public + * License as published by the Free Software Foundation. + * + * Lustre is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Lustre; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * */ #define DEBUG_SUBSYSTEM S_SM @@ -11,378 +29,333 @@ #include #include #include +#include +#include +#include +#include -#include "smfs_internal.h" -struct sm_ops smfs_operations; - -extern struct inode_operations smfs_file_iops; -extern struct file_operations smfs_file_fops; -extern struct inode_operations smfs_sym_iops; -extern struct file_operations smfs_sym_fops; -extern struct super_operations smfs_super_ops; -extern struct journal_operations smfs_journal_ops; +#include "smfs_internal.h" +int smfs_init_sm_ops(struct smfs_super_info *smb) +{ + struct sm_operations *sm_ops; /*cache ops for set cache inode ops*/ + OBD_ALLOC(sm_ops, sizeof(struct sm_operations)); + if (!sm_ops) + RETURN(-ENOMEM); -inline struct super_operations *cache_sops(struct sm_ops *smfs_ops) -{ - return &smfs_ops->sm_sb_ops; + smb->sm_ops = sm_ops; + RETURN(0); } -inline struct inode_operations *cache_diops(struct sm_ops *smfs_ops) +void smfs_cleanup_sm_ops(struct smfs_super_info *smb) { - return &smfs_ops->sm_dir_iops; + if (smb->sm_ops) + OBD_FREE(smb->sm_ops, sizeof(struct sm_operations)); } -inline struct inode_operations *cache_fiops(struct sm_ops *smfs_ops) +static void setup_iops(struct inode *cache_inode, + struct inode_operations *iops, + struct inode_operations *cache_iops) { - return &smfs_ops->sm_file_iops; -} -inline struct inode_operations *cache_siops(struct sm_ops *smfs_ops) -{ - return &smfs_ops->sm_sym_iops; + if (cache_inode->i_op && cache_iops && iops) { + if (cache_inode->i_op->create) + iops->create = cache_iops->create; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) + if (cache_inode->i_op->create_it) + iops->create_it = cache_iops->create_it; +#endif + if (cache_inode->i_op->lookup) + iops->lookup = cache_iops->lookup; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) + if (cache_inode->i_op->lookup_raw) + iops->lookup_raw = cache_iops->lookup_raw; + if (cache_inode->i_op->lookup_it) + iops->lookup_it = cache_iops->lookup_it; +#endif + if (cache_inode->i_op->link) + iops->link = cache_iops->link; + if (cache_inode->i_op->link_raw) + iops->link_raw = cache_iops->link_raw; + if (cache_inode->i_op->unlink) + iops->unlink = cache_iops->unlink; + if (cache_inode->i_op->unlink_raw) + iops->unlink_raw = cache_iops->unlink_raw; + if (cache_inode->i_op->symlink) + iops->symlink = cache_iops->symlink; + if (cache_inode->i_op->symlink_raw) + iops->symlink_raw = cache_iops->symlink_raw; + if (cache_inode->i_op->mkdir) + iops->mkdir = cache_iops->mkdir; + if (cache_inode->i_op->mkdir_raw) + iops->mkdir_raw = cache_iops->mkdir_raw; + if (cache_inode->i_op->rmdir) + iops->rmdir = cache_iops->rmdir; + if (cache_inode->i_op->rmdir_raw) + iops->rmdir_raw = cache_iops->rmdir_raw; + if (cache_inode->i_op->mknod) + iops->mknod = cache_iops->mknod; + if (cache_inode->i_op->mknod_raw) + iops->mknod_raw = cache_iops->mknod_raw; + if (cache_inode->i_op->rename) + iops->rename = cache_iops->rename; + if (cache_inode->i_op->rename_raw) + iops->rename_raw = cache_iops->rename_raw; + if (cache_inode->i_op->readlink) + iops->readlink = cache_iops->readlink; + if (cache_inode->i_op->follow_link) + iops->follow_link = cache_iops->follow_link; + if (cache_inode->i_op->truncate) + iops->truncate = cache_iops->truncate; + if (cache_inode->i_op->permission) + iops->permission = cache_iops->permission; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) + if (cache_inode->i_op->revalidate) + iops->revalidate = cache_iops->revalidate; + if (cache_inode->i_op->revalidate_it) + iops->revalidate_it = cache_iops->revalidate_it; +#endif + if (cache_inode->i_op->setattr) + iops->setattr = cache_iops->setattr; + if (cache_inode->i_op->setattr_raw) + iops->setattr_raw = cache_iops->setattr_raw; + if (cache_inode->i_op->getattr) + iops->getattr = cache_iops->getattr; + if (cache_inode->i_op->setxattr) + iops->setxattr = cache_iops->setxattr; + if (cache_inode->i_op->getxattr) + iops->getxattr = cache_iops->getxattr; + if (cache_inode->i_op->listxattr) + iops->listxattr = cache_iops->listxattr; + if (cache_inode->i_op->removexattr) + iops->removexattr = cache_iops->removexattr; + } } -inline struct file_operations *cache_dfops(struct sm_ops *smfs_ops) +static void setup_fops(struct inode *cache_inode, + struct file_operations *fops, + struct file_operations *cache_fops) { - return &smfs_ops->sm_dir_fops; + if (cache_inode->i_fop && cache_fops && fops) { + if (cache_inode->i_fop->llseek) + fops->llseek = cache_fops->llseek; + if (cache_inode->i_fop->read) + fops->read = cache_fops->read; + if (cache_inode->i_fop->write) + fops->write = cache_fops->write; + if (cache_inode->i_fop->readdir) + fops->readdir = cache_fops->readdir; + if (cache_inode->i_fop->poll) + fops->poll = cache_fops->poll; + if (cache_inode->i_fop->ioctl) + fops->ioctl = cache_fops->ioctl; + if (cache_inode->i_fop->mmap) + fops->mmap = cache_fops->mmap; +// if (cache_inode->i_fop->open) + fops->open = cache_fops->open; + if (cache_inode->i_fop->flush) + fops->flush = cache_fops->flush; + // if (cache_inode->i_fop->release) + fops->release = cache_fops->release; + if (cache_inode->i_fop->fsync) + fops->fsync = cache_fops->fsync; + if (cache_inode->i_fop->fasync) + fops->fasync = cache_fops->fasync; + if (cache_inode->i_fop->lock) + fops->lock = cache_fops->lock; + if (cache_inode->i_fop->readv) + fops->readv = cache_fops->readv; + if (cache_inode->i_fop->writev) + fops->writev = cache_fops->writev; + if (cache_inode->i_fop->sendpage) + fops->sendpage = cache_fops->sendpage; + if (cache_inode->i_fop->get_unmapped_area) + fops->get_unmapped_area = cache_fops->get_unmapped_area; + } } -inline struct file_operations *cache_ffops(struct sm_ops *smfs_ops) +static void setup_sm_file_ops(struct inode *cache_inode, + struct inode *inode, + struct inode_operations *cache_iops, + struct file_operations *cache_fops) { - return &smfs_ops->sm_file_fops; -} + struct smfs_super_info *smb; + struct inode_operations *iops; + struct file_operations *fops; -inline struct file_operations *cache_sfops(struct sm_ops *smfs_ops) -{ - return &smfs_ops->sm_sym_fops; -} + smb = S2SMI(inode->i_sb); -inline struct dentry_operations *cache_dops(struct sm_ops *smfs_ops) -{ - return &smfs_ops->sm_dentry_ops; -} + if (smb->ops_check & FILE_OPS_CHECK) + return; + smb->ops_check |= FILE_OPS_CHECK; -inline struct journal_operations *journal_ops(struct sm_ops *smfs_ops) -{ - return &smfs_ops->sm_journal_ops; -} + iops = cache_fiops(smb); + fops = cache_ffops(smb); -void init_smfs_cache() -{ - memset(&smfs_operations, 0, sizeof(struct sm_ops)); -} -void cleanup_smfs_cache() -{ - return; -} + memset(iops , 0 , sizeof (struct inode_operations)); + memset(fops , 0 , sizeof (struct file_operations)); -static void setup_iops(struct inode *cache_inode, - struct inode_operations *iops, - struct inode_operations *cache_iops) -{ + setup_iops(cache_inode, iops, cache_iops); + setup_fops(cache_inode, fops, cache_fops); - if (cache_inode->i_op && cache_iops && iops) { - if (cache_inode->i_op->create) - iops->create = cache_iops->create; - if (cache_inode->i_op->create_it) - iops->create_it = cache_iops->create_it; - if (cache_inode->i_op->lookup) - iops->lookup = cache_iops->lookup; - if (cache_inode->i_op->lookup_raw) - iops->lookup_raw = cache_iops->lookup_raw; - if (cache_inode->i_op->lookup_it) - iops->lookup_it = cache_iops->lookup_it; - if (cache_inode->i_op->link) - iops->link = cache_iops->link; - if (cache_inode->i_op->link_raw) - iops->link_raw = cache_iops->link_raw; - if (cache_inode->i_op->unlink) - iops->unlink = cache_iops->unlink; - if (cache_inode->i_op->unlink_raw) - iops->unlink_raw = cache_iops->unlink_raw; - if (cache_inode->i_op->symlink) - iops->symlink = cache_iops->symlink; - if (cache_inode->i_op->symlink_raw) - iops->symlink_raw = cache_iops->symlink_raw; - if (cache_inode->i_op->mkdir) - iops->mkdir = cache_iops->mkdir; - if (cache_inode->i_op->mkdir_raw) - iops->mkdir_raw = cache_iops->mkdir_raw; - if (cache_inode->i_op->rmdir) - iops->rmdir = cache_iops->rmdir; - if (cache_inode->i_op->rmdir_raw) - iops->rmdir_raw = cache_iops->rmdir_raw; - if (cache_inode->i_op->mknod) - iops->mknod = cache_iops->mknod; - if (cache_inode->i_op->mknod_raw) - iops->mknod_raw = cache_iops->mknod_raw; - if (cache_inode->i_op->rename) - iops->rename = cache_iops->rename; - if (cache_inode->i_op->rename_raw) - iops->rename_raw = cache_iops->rename_raw; - if (cache_inode->i_op->readlink) - iops->readlink = cache_iops->readlink; - if (cache_inode->i_op->follow_link) - iops->follow_link = cache_iops->follow_link; - if (cache_inode->i_op->truncate) - iops->truncate = cache_iops->truncate; - if (cache_inode->i_op->permission) - iops->permission = cache_iops->permission; - if (cache_inode->i_op->revalidate) - iops->revalidate = cache_iops->revalidate; - if (cache_inode->i_op->revalidate_it) - iops->revalidate_it = cache_iops->revalidate_it; - if (cache_inode->i_op->setattr) - iops->setattr = cache_iops->setattr; - if (cache_inode->i_op->setattr_raw) - iops->setattr_raw = cache_iops->setattr_raw; - if (cache_inode->i_op->getattr) - iops->getattr = cache_iops->getattr; - if (cache_inode->i_op->setxattr) - iops->setxattr = cache_iops->setxattr; - if (cache_inode->i_op->getxattr) - iops->getxattr = cache_iops->getxattr; - if (cache_inode->i_op->listxattr) - iops->listxattr = cache_iops->listxattr; - if (cache_inode->i_op->removexattr) - iops->removexattr = cache_iops->removexattr; - } + return; } -static void setup_fops(struct inode *cache_inode, - struct file_operations *fops, - struct file_operations *cache_fops) -{ - if (cache_inode->i_fop && cache_fops && fops) { - if (cache_inode->i_fop->llseek) - fops->llseek = cache_fops->llseek; - if (cache_inode->i_fop->read) - fops->read = cache_fops->read; - if (cache_inode->i_fop->write) - fops->write = cache_fops->write; - if (cache_inode->i_fop->readdir) - fops->readdir = cache_fops->readdir; - if (cache_inode->i_fop->poll) - fops->poll = cache_fops->poll; - if (cache_inode->i_fop->ioctl) - fops->ioctl = cache_fops->ioctl; - if (cache_inode->i_fop->mmap) - fops->mmap = cache_fops->mmap; - if (cache_inode->i_fop->open) - fops->open = cache_fops->open; - if (cache_inode->i_fop->flush) - fops->flush = cache_fops->flush; - if (cache_inode->i_fop->release) - fops->release = cache_fops->release; - if (cache_inode->i_fop->fsync) - fops->fsync = cache_fops->fsync; - if (cache_inode->i_fop->fasync) - fops->fasync = cache_fops->fasync; - if (cache_inode->i_fop->lock) - fops->lock = cache_fops->lock; - if (cache_inode->i_fop->readv) - fops->readv = cache_fops->readv; - if (cache_inode->i_fop->writev) - fops->writev = cache_fops->writev; - if (cache_inode->i_fop->sendpage) - fops->sendpage = cache_fops->sendpage; - if (cache_inode->i_fop->get_unmapped_area) - fops->get_unmapped_area = cache_fops->get_unmapped_area; - } -} -static void setup_sm_file_ops(struct inode *cache_inode, - struct inode *inode, - struct inode_operations *cache_iops, - struct file_operations *cache_fops) + +static void setup_sm_dir_ops(struct inode *cache_inode, + struct inode *inode, + struct inode_operations *cache_dir_iops, + struct file_operations *cache_dir_fops) { - struct smfs_super_info *smb; - struct inode_operations *iops; - struct file_operations *fops; + struct smfs_super_info *smb; + struct inode_operations *iops; + struct file_operations *fops; + + smb = S2SMI(inode->i_sb); - smb = S2SMI(inode->i_sb); - - if (smb->ops_check & FILE_OPS_CHECK) - return; - smb->ops_check |= FILE_OPS_CHECK; + if (smb->ops_check & DIR_OPS_CHECK) + return; + smb->ops_check |= DIR_OPS_CHECK; - iops = cache_fiops(&smfs_operations); - fops = cache_ffops(&smfs_operations); + iops = cache_diops(smb); + fops = cache_dfops(smb); - memset(iops , 0 , sizeof (struct inode_operations)); - memset(fops , 0 , sizeof (struct file_operations)); + memset(iops, 0, sizeof (struct inode_operations)); + memset(fops, 0, sizeof (struct file_operations)); - setup_iops(cache_inode, iops, cache_iops); - setup_fops(cache_inode, fops, cache_fops); + setup_iops(cache_inode, iops, cache_dir_iops); + setup_fops(cache_inode, fops, cache_dir_fops); - return; + return; } -static void setup_sm_dir_ops(struct inode *cache_inode, - struct inode *inode, - struct inode_operations *cache_dir_iops, - struct file_operations *cache_dir_fops) +static void setup_sm_symlink_ops(struct inode *cache_inode, + struct inode *inode, + struct inode_operations *cache_sym_iops, + struct file_operations *cache_sym_fops) { - struct smfs_super_info *smb; - struct inode_operations *iops; - struct file_operations *fops; + struct smfs_super_info *smb; + struct inode_operations *iops; + struct file_operations *fops; + + smb = S2SMI(inode->i_sb); - smb = S2SMI(inode->i_sb); - - if (smb->ops_check & DIR_OPS_CHECK) - return; - smb->ops_check |= DIR_OPS_CHECK; + if (smb->ops_check & SYMLINK_OPS_CHECK) + return; + smb->ops_check |= SYMLINK_OPS_CHECK; - iops = cache_diops(&smfs_operations); - fops = cache_dfops(&smfs_operations); + iops = cache_siops(smb); + fops = cache_sfops(smb); - memset(iops, 0, sizeof (struct inode_operations)); - memset(fops, 0, sizeof (struct file_operations)); + memset(iops , 0 , sizeof (struct inode_operations)); + memset(fops , 0 , sizeof (struct file_operations)); - setup_iops(cache_inode, iops, cache_dir_iops); - setup_fops(cache_inode, fops, cache_dir_fops); + setup_iops(cache_inode, iops, cache_sym_iops); + setup_fops(cache_inode, fops, cache_sym_fops); - return; + return; } -static void setup_sm_symlink_ops(struct inode *cache_inode, - struct inode *inode, - struct inode_operations *cache_sym_iops, - struct file_operations *cache_sym_fops) +static void setup_sm_sb_ops(struct super_block *cache_sb, + struct super_block *sb, + struct super_operations *smfs_sops) { - struct smfs_super_info *smb; - struct inode_operations *iops; - struct file_operations *fops; + struct smfs_super_info *smb; + struct super_operations *sops; - smb = S2SMI(inode->i_sb); - - if (smb->ops_check & SYMLINK_OPS_CHECK) - return; - smb->ops_check |= SYMLINK_OPS_CHECK; + ENTRY; - iops = cache_siops(&smfs_operations); - fops = cache_sfops(&smfs_operations); + smb = S2SMI(sb); - memset(iops , 0 , sizeof (struct inode_operations)); - memset(fops , 0 , sizeof (struct file_operations)); + if (smb->ops_check & SB_OPS_CHECK) + return; + smb->ops_check |= SB_OPS_CHECK; + sops = cache_sops(smb); + memset(sops, 0, sizeof (struct super_operations)); - setup_iops(cache_inode, iops, cache_sym_iops); - setup_fops(cache_inode, fops, cache_sym_fops); + if (cache_sb->s_op) { + if (cache_sb->s_op->read_inode) + sops->read_inode = smfs_sops->read_inode; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) + if (cache_sb->s_op->read_inode2) + sops->read_inode2 = smfs_sops->read_inode2; +#endif + if (cache_sb->s_op->dirty_inode) + sops->dirty_inode = smfs_sops->dirty_inode; + if (cache_sb->s_op->write_inode) + sops->write_inode = smfs_sops->write_inode; + if (cache_sb->s_op->put_inode) + sops->put_inode = smfs_sops->put_inode; + if (cache_sb->s_op->delete_inode) + sops->delete_inode = smfs_sops->delete_inode; + if (cache_sb->s_op->put_super) + sops->put_super = smfs_sops->put_super; + if (cache_sb->s_op->write_super) + sops->write_super = smfs_sops->write_super; + if (cache_sb->s_op->write_super_lockfs) + sops->write_super_lockfs =smfs_sops->write_super_lockfs; + if (cache_sb->s_op->unlockfs) + sops->unlockfs = smfs_sops->unlockfs; + if (cache_sb->s_op->statfs) + sops->statfs = smfs_sops->statfs; + if (cache_sb->s_op->remount_fs) + sops->remount_fs = smfs_sops->remount_fs; + if (cache_sb->s_op->umount_begin) + sops->umount_begin = smfs_sops->umount_begin; +#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) + if (cache_sb->s_op->fh_to_dentry) + sops->fh_to_dentry = smfs_sops->fh_to_dentry; + if (cache_sb->s_op->dentry_to_fh) + sops->dentry_to_fh = smfs_sops->dentry_to_fh; +#endif + if (cache_sb->s_op->show_options) + sops->show_options = smfs_sops->show_options; + + /* FIXME-WANGDI: we need this method to clear the cache + * inode. */ + sops->clear_inode = smfs_sops->clear_inode; + } - return; + return; } -static void setup_sm_sb_ops(struct super_block *cache_sb, - struct super_block *sb, - struct super_operations *smfs_sops) -{ - struct smfs_super_info *smb; - struct super_operations *sops; - - ENTRY; - - smb = S2SMI(sb); - - if (smb->ops_check & SB_OPS_CHECK) - return; - smb->ops_check |= SB_OPS_CHECK; - sops = cache_sops(&smfs_operations); - memset(sops, 0, sizeof (struct super_operations)); - - if (cache_sb->s_op) { - if (cache_sb->s_op->read_inode) - sops->read_inode = smfs_sops->read_inode; - if (cache_sb->s_op->read_inode2) - sops->read_inode2 = smfs_sops->read_inode2; - if (cache_sb->s_op->dirty_inode) - sops->dirty_inode = smfs_sops->dirty_inode; - if (cache_sb->s_op->write_inode) - sops->write_inode = smfs_sops->write_inode; - if (cache_sb->s_op->put_inode) - sops->put_inode = smfs_sops->put_inode; - if (cache_sb->s_op->delete_inode) - sops->delete_inode = smfs_sops->delete_inode; - if (cache_sb->s_op->put_super) - sops->put_super = smfs_sops->put_super; - if (cache_sb->s_op->write_super) - sops->write_super = smfs_sops->write_super; - if (cache_sb->s_op->write_super_lockfs) - sops->write_super_lockfs = smfs_sops->write_super_lockfs; - if (cache_sb->s_op->unlockfs) - sops->unlockfs = smfs_sops->unlockfs; - if (cache_sb->s_op->statfs) - sops->statfs = smfs_sops->statfs; - if (cache_sb->s_op->remount_fs) - sops->remount_fs = smfs_sops->remount_fs; - if (cache_sb->s_op->umount_begin) - sops->umount_begin = smfs_sops->umount_begin; - if (cache_sb->s_op->fh_to_dentry) - sops->fh_to_dentry = smfs_sops->fh_to_dentry; - if (cache_sb->s_op->dentry_to_fh) - sops->dentry_to_fh = smfs_sops->dentry_to_fh; - if (cache_sb->s_op->show_options) - sops->show_options = smfs_sops->show_options; - /*FIXME we need this method to clear the cache inode */ - sops->clear_inode = smfs_sops->clear_inode; - } - - return; -} void sm_set_inode_ops(struct inode *cache_inode, struct inode *inode) { - /* XXX now set the correct snap_{file,dir,sym}_iops */ + struct smfs_super_info *smb = S2SMI(inode->i_sb); + /* XXX now set the correct sm_{file,dir,sym}_iops */ if (S_ISDIR(inode->i_mode)) { - setup_sm_dir_ops(cache_inode, inode, + setup_sm_dir_ops(cache_inode, inode, &smfs_dir_iops, &smfs_dir_fops); - inode->i_op = cache_diops(&smfs_operations); - inode->i_fop = cache_dfops(&smfs_operations); + inode->i_op = cache_diops(smb); + inode->i_fop = cache_dfops(smb); } else if (S_ISREG(inode->i_mode)) { - setup_sm_file_ops(cache_inode, inode, + setup_sm_file_ops(cache_inode, inode, &smfs_file_iops, &smfs_file_fops); CDEBUG(D_INODE, "inode %lu, i_op at %p\n", inode->i_ino, inode->i_op); - inode->i_fop = cache_ffops(&smfs_operations); - inode->i_op = cache_fiops(&smfs_operations); - - } else if (S_ISLNK(inode->i_mode)) { + inode->i_fop = cache_ffops(smb); + inode->i_op = cache_fiops(smb); + + } else if (S_ISLNK(inode->i_mode)) { setup_sm_symlink_ops(cache_inode, inode, - &smfs_sym_iops, - &smfs_sym_fops); - inode->i_op = cache_siops(&smfs_operations); - inode->i_fop = cache_sfops(&smfs_operations); + &smfs_sym_iops, + &smfs_sym_fops); + inode->i_op = cache_siops(smb); + inode->i_fop = cache_sfops(smb); CDEBUG(D_INODE, "inode %lu, i_op at %p\n", inode->i_ino, inode->i_op); } } -void sm_set_sb_ops (struct super_block *cache_sb, - struct super_block *sb) -{ - struct smfs_super_info *smb; - - smb = S2SMI(sb); - - setup_sm_sb_ops(cache_sb, sb, &smfs_super_ops); - - sb->s_op = cache_sops(&smfs_operations); - return; -} -void setup_sm_journal_ops(char *cache_type) +void sm_set_sb_ops(struct super_block *cache_sb, struct super_block *sb) { - struct journal_operations *jops; - - jops = journal_ops(&smfs_operations); - - if (strlen(cache_type) == strlen("ext3") && - memcmp(cache_type, "ext3", strlen("ext3")) == 0 ) { -#if defined(CONFIG_EXT3_FS) || defined (CONFIG_EXT3_FS_MODULE) - memcpy(jops, &smfs_ext3_journal_ops, - sizeof(struct journal_operations)); -#else - memset(jops, 0, sizeof(journal_operations)); -#endif - CDEBUG(D_SUPER, "ops at %p\n", jops); - } -} + struct smfs_super_info *smb; + + smb = S2SMI(sb); + setup_sm_sb_ops(cache_sb, sb, &smfs_super_ops); + + sb->s_op = cache_sops(smb); + return; +}