client-dir-package-interface-update-20041106
[openafs.git] / src / afs / afs_pioctl.c
index d47fce0..4dbf33d 100644 (file)
@@ -189,7 +189,7 @@ static int (*(CpioctlSw[])) () = {
     PBogus,                    /* 0 */
        PNewAlias,              /* 1 -- create new cell alias */
        PListAliases,           /* 2 -- list cell aliases */
-    PCallBackAddr,              /* 3 -- request addr for callback rxcon */
+       PCallBackAddr,          /* 3 -- request addr for callback rxcon */
 };
 
 #define PSetClientContext 99   /*  Special pioctl to setup caller's creds  */
@@ -268,7 +268,13 @@ copyin_afs_ioctl(caddr_t cmarg, struct afs_ioctl *dst)
 #elif defined(AFS_AMD64_LINUX20_ENV)
     if (current->thread.flags & THREAD_IA32)
 #elif defined(AFS_PPC64_LINUX20_ENV)
-    if (current->thread.flags & PPC_FLAG_32BIT)
+#ifdef AFS_PPC64_LINUX26_ENV
+      if (current->thread_info->flags & _TIF_32BIT)
+#else /*Linux 2.6*/
+    if (current->thread.flags & PPC_FLAG_32BIT) 
+#endif
+#elif defined(AFS_S390X_LINUX20_ENV)
+    if (current->thread.flags & S390_FLAG_31BIT)
 #else
 #error Not done for this linux type
 #endif
@@ -486,7 +492,7 @@ struct afs_ioctl_sys {
     unsigned int com;
     unsigned long arg;
 };
-asmlinkage int
+int
 afs_xioctl(struct inode *ip, struct file *fp, unsigned int com,
           unsigned long arg)
 {
@@ -1711,7 +1717,7 @@ DECL_PIOCTL(PNewStatMount)
     Check_AtSys(avc, ain, &sysState, areq);
     ObtainReadLock(&tdc->lock);
     do {
-       code = afs_dir_Lookup(&tdc->f.inode, sysState.name, &tfid.Fid);
+       code = afs_dir_Lookup(tdc, sysState.name, &tfid.Fid);
     } while (code == ENOENT && Next_AtSys(avc, areq, &sysState));
     ReleaseReadLock(&tdc->lock);
     afs_PutDCache(tdc);                /* we're done with the data */
@@ -2391,7 +2397,7 @@ DECL_PIOCTL(PRemoveMount)
     Check_AtSys(avc, ain, &sysState, areq);
     ObtainReadLock(&tdc->lock);
     do {
-       code = afs_dir_Lookup(&tdc->f.inode, sysState.name, &tfid.Fid);
+       code = afs_dir_Lookup(tdc, sysState.name, &tfid.Fid);
     } while (code == ENOENT && Next_AtSys(avc, areq, &sysState));
     ReleaseReadLock(&tdc->lock);
     bufp = sysState.name;
@@ -2462,10 +2468,10 @@ DECL_PIOCTL(PRemoveMount)
        ObtainWriteLock(&tdc->lock, 661);
        if (afs_LocalHero(avc, tdc, &OutDirStatus, 1)) {
            /* we can do it locally */
-           code = afs_dir_Delete(&tdc->f.inode, bufp);
+           code = afs_dir_Delete(tdc, bufp);
            if (code) {
                ZapDCE(tdc);    /* surprise error -- invalid value */
-               DZap(&tdc->f.inode);
+               DZap(tdc);
            }
        }
        ReleaseWriteLock(&tdc->lock);
@@ -3497,7 +3503,7 @@ DECL_PIOCTL(PFlushMount)
     Check_AtSys(avc, ain, &sysState, areq);
     ObtainReadLock(&tdc->lock);
     do {
-       code = afs_dir_Lookup(&tdc->f.inode, sysState.name, &tfid.Fid);
+       code = afs_dir_Lookup(tdc, sysState.name, &tfid.Fid);
     } while (code == ENOENT && Next_AtSys(avc, areq, &sysState));
     ReleaseReadLock(&tdc->lock);
     afs_PutDCache(tdc);                /* we're done with the data */
@@ -3758,75 +3764,78 @@ DECL_PIOCTL(PCallBackAddr)
     afs_int32 i, j;
     struct unixuser *tu;
     struct srvAddr **addrs;
-    
+
     /*AFS_STATCNT(PCallBackAddr);*/
     if ( !afs_resourceinit_flag )      /* afs deamons havn't started yet */
        return EIO;          /* Inappropriate ioctl for device */
-    
+
     if (!afs_osi_suser(acred))
        return EACCES;
-    
+
     if ( ainSize < sizeof(afs_int32) )
        return EINVAL;
-    
+
     memcpy(&addr, ain, sizeof(afs_int32));
-    
+
     ObtainReadLock(&afs_xinterface);
     for ( i=0; (unsigned short)i < afs_cb_interface.numberOfInterfaces; i++) {
        if (afs_cb_interface.addr_in[i] == addr) break;
     }
-    
+
     ReleaseWriteLock(&afs_xinterface);
-    
-    if (afs_cb_interface.addr_in[i] != addr) return EINVAL;
-    
+
+    if (afs_cb_interface.addr_in[i] != addr)
+       return EINVAL;
+
     ObtainReadLock(&afs_xserver);  /* Necessary? */
-    ObtainReadLock(&afs_xsrvAddr);      
-    
+    ObtainReadLock(&afs_xsrvAddr);
+
     srvAddrCount = 0;
     for (i=0;i<NSERVERS;i++) {
-        for (sa = afs_srvAddrs[i]; sa; sa = sa->next_bkt) { 
+        for (sa = afs_srvAddrs[i]; sa; sa = sa->next_bkt) {
             srvAddrCount++;
         }
     }
-    
+
     addrs = afs_osi_Alloc(srvAddrCount * sizeof(*addrs));
     j = 0;
     for (i=0;i<NSERVERS;i++) {
-        for (sa = afs_srvAddrs[i]; sa; sa = sa->next_bkt) { 
+        for (sa = afs_srvAddrs[i]; sa; sa = sa->next_bkt) {
             if (j >= srvAddrCount) break;
             addrs[j++] = sa;
         }
     }
-    
-    ReleaseReadLock(&afs_xsrvAddr);     
+
+    ReleaseReadLock(&afs_xsrvAddr);
     ReleaseReadLock(&afs_xserver);
-    
+
     for (i=0; i<j; i++) {
         sa = addrs[i];
         ts = sa->server;
         if (!ts)
             continue;
-       
+
         /* vlserver has no callback conn */
         if (sa->sa_portal == AFS_VLPORT) {
             continue;
         }
-       
+
         if (!ts->cell) /* not really an active server, anyway, it must */
-           continue;  /* have just been added by setsprefs */ 
-       
+           continue;  /* have just been added by setsprefs */
+
         /* get a connection, even if host is down; bumps conn ref count */
         tu = afs_GetUser(areq->uid, ts->cell->cellNum, SHARED_LOCK);
-        tc = afs_ConnBySA(sa, ts->cell->fsport, ts->cell->cellNum, tu,                          1/*force*/, 1/*create*/, SHARED_LOCK);
+        tc = afs_ConnBySA(sa, ts->cell->fsport, ts->cell->cellNum, tu,
+                         1/*force*/, 1/*create*/, SHARED_LOCK);
         afs_PutUser(tu, SHARED_LOCK);
-        if (!tc) continue;
-       
-        if ((sa->sa_flags & SRVADDR_ISDOWN) || HaveCallBacksFrom(ts)) {
+        if (!tc)
+           continue;
+
+        if ((sa->sa_flags & SRVADDR_ISDOWN) || afs_HaveCallBacksFrom(ts)) {
             if (sa->sa_flags & SRVADDR_ISDOWN) {
                 rx_SetConnDeadTime(tc->id, 3);
             }
-           
+
 #ifdef RX_ENABLE_LOCKS
             AFS_GUNLOCK();
 #endif /* RX_ENABLE_LOCKS */