提交 5fd31e9a 编写于 作者: J Jan Harkes 提交者: Linus Torvalds

coda: cleanup downcall handler

Signed-off-by: NJan Harkes <jaharkes@cs.cmu.edu>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 ed36f723
...@@ -859,77 +859,66 @@ static int coda_upcall(struct coda_sb_info *sbi, ...@@ -859,77 +859,66 @@ static int coda_upcall(struct coda_sb_info *sbi,
int coda_downcall(int opcode, union outputArgs * out, struct super_block *sb) int coda_downcall(int opcode, union outputArgs * out, struct super_block *sb)
{ {
struct inode *inode = NULL;
struct CodaFid *fid, *newfid;
/* Handle invalidation requests. */ /* Handle invalidation requests. */
if ( !sb || !sb->s_root || !sb->s_root->d_inode) if ( !sb || !sb->s_root)
return 0; return 0;
switch (opcode) { switch (opcode) {
case CODA_FLUSH:
case CODA_FLUSH : { coda_cache_clear_all(sb);
coda_cache_clear_all(sb); shrink_dcache_sb(sb);
shrink_dcache_sb(sb); if (sb->s_root->d_inode)
coda_flag_inode(sb->s_root->d_inode, C_FLUSH); coda_flag_inode(sb->s_root->d_inode, C_FLUSH);
return(0); break;
}
case CODA_PURGEUSER:
case CODA_PURGEUSER : { coda_cache_clear_all(sb);
coda_cache_clear_all(sb); break;
return(0);
} case CODA_ZAPDIR:
fid = &out->coda_zapdir.CodaFid;
case CODA_ZAPDIR : { inode = coda_fid_to_inode(fid, sb);
struct inode *inode; if (inode) {
struct CodaFid *fid = &out->coda_zapdir.CodaFid; coda_flag_inode_children(inode, C_PURGE);
coda_flag_inode(inode, C_VATTR);
inode = coda_fid_to_inode(fid, sb); }
if (inode) { break;
coda_flag_inode_children(inode, C_PURGE);
coda_flag_inode(inode, C_VATTR); case CODA_ZAPFILE:
iput(inode); fid = &out->coda_zapfile.CodaFid;
} inode = coda_fid_to_inode(fid, sb);
if (inode)
return(0); coda_flag_inode(inode, C_VATTR);
} break;
case CODA_ZAPFILE : { case CODA_PURGEFID:
struct inode *inode; fid = &out->coda_purgefid.CodaFid;
struct CodaFid *fid = &out->coda_zapfile.CodaFid; inode = coda_fid_to_inode(fid, sb);
inode = coda_fid_to_inode(fid, sb); if (inode) {
if ( inode ) {
coda_flag_inode(inode, C_VATTR);
iput(inode);
}
return 0;
}
case CODA_PURGEFID : {
struct inode *inode;
struct CodaFid *fid = &out->coda_purgefid.CodaFid;
inode = coda_fid_to_inode(fid, sb);
if ( inode ) {
coda_flag_inode_children(inode, C_PURGE); coda_flag_inode_children(inode, C_PURGE);
/* catch the dentries later if some are still busy */ /* catch the dentries later if some are still busy */
coda_flag_inode(inode, C_PURGE); coda_flag_inode(inode, C_PURGE);
d_prune_aliases(inode); d_prune_aliases(inode);
iput(inode); }
} break;
return 0;
} case CODA_REPLACE:
fid = &out->coda_replace.OldFid;
case CODA_REPLACE : { newfid = &out->coda_replace.NewFid;
struct inode *inode; inode = coda_fid_to_inode(fid, sb);
struct CodaFid *oldfid = &out->coda_replace.OldFid; if (inode)
struct CodaFid *newfid = &out->coda_replace.NewFid; coda_replace_fid(inode, fid, newfid);
inode = coda_fid_to_inode(oldfid, sb); break;
if ( inode ) { }
coda_replace_fid(inode, oldfid, newfid);
iput(inode); if (inode)
} iput(inode);
return 0;
} return 0;
}
return 0;
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册