afs: Handle osi_NewVnode failures
[openafs.git] / src / afs / IRIX / osi_vcache.c
index a34c9b9..5d1cea2 100644 (file)
 #include "afsincludes.h"        /*AFS-based standard headers */
 
 int
-osi_TryEvictVCache(struct vcache *avc, int *slept) {
+osi_TryEvictVCache(struct vcache *avc, int *slept, int defersleep)
+{
      int code;
+     /* we can't control whether we sleep */
      if (!VREFCOUNT_GT(avc,0)
          && avc->opens == 0 && (avc->f.states & CUnlinkedDel) == 0) {
         code = afs_FlushVCache(avc, slept);
@@ -28,11 +30,15 @@ osi_TryEvictVCache(struct vcache *avc, int *slept) {
 extern char *makesname();
 
 struct vcache *
-osi_NewVnode(void) {
+osi_NewVnode(void)
+{
     struct vcache *avc;
     char name[METER_NAMSZ];
 
     avc = afs_osi_Alloc(sizeof(struct vcache));
+    if (avc == NULL) {
+       return NULL;
+    }
 
     memset(avc, 0, sizeof(struct vcache));
     avc->v.v_number = ++afsvnumbers;
@@ -51,16 +57,20 @@ osi_NewVnode(void) {
 }
 
 void
-osi_PrePopulateVCache(struct vcache *avc) {
+osi_PrePopulateVCache(struct vcache *avc)
+{
     avc->uncred = 0;
     memset(&(avc->f), 0, sizeof(struct fvcache));
 }
 
 void
-osi_AttachVnode(struct vcache *avc, int seq) { }
+osi_AttachVnode(struct vcache *avc, int seq)
+{
+}
 
 void
-osi_PostPopulateVCache(struct vcache *avc) {
+osi_PostPopulateVCache(struct vcache *avc)
+{
     memset(&(avc->vc_bhv_desc), 0, sizeof(avc->vc_bhv_desc));
     bhv_desc_init(&(avc->vc_bhv_desc), avc, avc, &Afs_vnodeops);
 
@@ -91,9 +101,10 @@ osi_PostPopulateVCache(struct vcache *avc) {
     AFS_VN_INIT_BUF_LOCK(&(avc->v));
 #endif
 
+    vSetVfsp(avc, afs_globalVFS);
     vSetType(avc, VREG);
 
-    VN_SET_DPAGES(&(avc->v), (struct pfdat *)NULL);
+    VN_SET_DPAGES(&(avc->v), NULL);
     osi_Assert((avc->v.v_flag & VINACT) == 0);
     avc->v.v_flag = 0;
     osi_Assert(VN_GET_PGCNT(&(avc->v)) == 0);
@@ -112,3 +123,9 @@ osi_PostPopulateVCache(struct vcache *avc) {
     avc->lastr = 0;
 }
 
+int
+osi_vnhold(struct vcache *avc)
+{
+    VN_HOLD(AFSTOV(avc));
+    return 0;
+}