Commit 5fd31e9a authored by Jan Harkes's avatar Jan Harkes Committed by Linus Torvalds
Browse files

coda: cleanup downcall handler

parent ed36f723
Loading
Loading
Loading
Loading
+54 −65
Original line number Diff line number Diff line
@@ -859,52 +859,43 @@ exit:

int coda_downcall(int opcode, union outputArgs * out, struct super_block *sb)
{
	struct inode *inode = NULL;
	struct CodaFid *fid, *newfid;

	/* Handle invalidation requests. */
          if ( !sb || !sb->s_root || !sb->s_root->d_inode)
	if ( !sb || !sb->s_root)
		return 0;

	switch (opcode) {

	  case CODA_FLUSH : {
	case CODA_FLUSH:
		coda_cache_clear_all(sb);
		shrink_dcache_sb(sb);
		if (sb->s_root->d_inode)
		    coda_flag_inode(sb->s_root->d_inode, C_FLUSH);
		   return(0);
	  }
		break;

	  case CODA_PURGEUSER : {
	case CODA_PURGEUSER:
		coda_cache_clear_all(sb);
		   return(0);
	  }

	  case CODA_ZAPDIR : {
	          struct inode *inode;
		  struct CodaFid *fid = &out->coda_zapdir.CodaFid;
		break;

	case CODA_ZAPDIR:
		fid = &out->coda_zapdir.CodaFid;
		inode = coda_fid_to_inode(fid, sb);
		if (inode) {
			coda_flag_inode_children(inode, C_PURGE);
			coda_flag_inode(inode, C_VATTR);
			  iput(inode);
		  }
		  
		  return(0);
		}
		break;

	  case CODA_ZAPFILE : {
	          struct inode *inode;
		  struct CodaFid *fid = &out->coda_zapfile.CodaFid;
	case CODA_ZAPFILE:
		fid = &out->coda_zapfile.CodaFid;
		inode = coda_fid_to_inode(fid, sb);
		  if ( inode ) {
		if (inode)
			coda_flag_inode(inode, C_VATTR);
			  iput(inode);
		  }
		  return 0;
	  }
		break;

	  case CODA_PURGEFID : {
	          struct inode *inode;
		  struct CodaFid *fid = &out->coda_purgefid.CodaFid;
	case CODA_PURGEFID:
		fid = &out->coda_purgefid.CodaFid;
		inode = coda_fid_to_inode(fid, sb);
		if (inode) {
			coda_flag_inode_children(inode, C_PURGE);
@@ -913,23 +904,21 @@ int coda_downcall(int opcode, union outputArgs * out, struct super_block *sb)
			coda_flag_inode(inode, C_PURGE);
			d_prune_aliases(inode);

			iput(inode);
		}
		  return 0;
		break;

	case CODA_REPLACE:
		fid = &out->coda_replace.OldFid;
		newfid = &out->coda_replace.NewFid;
		inode = coda_fid_to_inode(fid, sb);
		if (inode)
			coda_replace_fid(inode, fid, newfid);
		break;
	}

	  case CODA_REPLACE : {
	          struct inode *inode;
		  struct CodaFid *oldfid = &out->coda_replace.OldFid;
		  struct CodaFid *newfid = &out->coda_replace.NewFid;
		  inode = coda_fid_to_inode(oldfid, sb);
		  if ( inode ) { 
			  coda_replace_fid(inode, oldfid, newfid);
	if (inode)
		iput(inode);
		  }
		  return 0;
	  }
	  }

	return 0;
}