This patch makes the afs_getattr() function return the current
attributes in the vnode if the ATTR_HINT flag is passed (Solaris
only), rather than making sure it's exactly correct by fetching
the status over the network.

Currently, if a user-space process reads /proc/NNN/status, the
kernel ends up calling rm_assize() to find the size of that proc's
address space, which calls getattr with ATTR_HINT. Blocking here
in RX network wait, especially if the calling user doesn't have
tokens to do FetchStatus on the relevant files, is bad.

-- kolya

Index: VNOPS/afs_vnop_attrs.c
===================================================================
RCS file: /cvs/openafs/src/afs/VNOPS/afs_vnop_attrs.c,v
retrieving revision 1.2
diff -c -r1.2 afs_vnop_attrs.c
*** VNOPS/afs_vnop_attrs.c      2000/11/04 10:03:30     1.2
--- VNOPS/afs_vnop_attrs.c      2000/12/05 23:27:29
***************
*** 188,193 ****
--- 188,200 ----
      afs_Trace2(afs_iclSetp, CM_TRACE_GETATTR, ICL_TYPE_POINTER, avc, 
               ICL_TYPE_INT32, avc->m.Length);
  
+ #if defined(AFS_SUN5_ENV)
+     if (flags & ATTR_HINT) {
+       code = afs_CopyOutAttrs(avc, attrs);
+       return code;
+     }
+ #endif
+ 
  #if defined(AFS_SUN_ENV) || defined(AFS_ALPHA_ENV) || defined(AFS_SUN5_ENV)
      afs_BozonLock(&avc->pvnLock, avc);
  #endif
_______________________________________________
OpenAFS-devel mailing list
[EMAIL PROTECTED]
https://lists.openafs.org/mailman/listinfo.cgi/openafs-devel

Reply via email to