Check-in [3021e03379]
Overview
SHA1:3021e03379960b1e459d0a6add47ccb07e465821
Date: 2015-05-12 13:30:07
User: rkeene
Comment:Updated to be more subtle with differing inodes, only differ them if the files are different
Timelines: family | ancestors | descendants | both | trunk
Downloads: Tarball | ZIP archive
Other Links: files | file ages | folders | manifest
Tags And Properties
Context
2015-05-26
15:44
[355ee88ec8] Fixed bug in resetting latest value (user: rkeene, tags: trunk)
2015-05-12
13:30
[3021e03379] Updated to be more subtle with differing inodes, only differ them if the files are different (user: rkeene, tags: trunk)
2015-05-05
21:58
[ed7fabb181] Updated to give each file owned by a different UID their own inode so the VFS will (maybe) think they are different files (user: rkeene, tags: trunk)
Changes

Modified appfsd.c from [59919e0d2e] to [388927f9ca].

   641    641   		retval *= 16777619; /* FNV-1a 32-bit prime */
   642    642   #else
   643    643   		/* GCC Optimized replacement */
   644    644   		retval += (retval << 1) + (retval << 4) + (retval << 7) + (retval << 8) + (retval << 24);
   645    645   #endif
   646    646   	}
   647    647   
   648         -	retval += uid;
          648  +	if (uid >= 0) {
          649  +		retval += uid;
          650  +		retval++;
          651  +	}
   649    652   
   650    653   	return(retval);
   651    654   }
   652    655   
   653    656   /*
   654    657    * Cache Get Path Info lookups for speed
   655    658    */
................................................................................
   911    914   
   912    915   		appfs_call_libtcl(Tcl_Release(interp);)
   913    916   
   914    917   		return(-EIO);
   915    918   	}
   916    919   
   917    920   	pathinfo->packaged = 0;
   918         -	pathinfo->inode = appfs_get_path_inode(path, fsuid);
   919    921   
   920    922   	appfs_call_libtcl(
   921    923   		attr_value_str = Tcl_GetString(attr_value);
   922    924   
   923    925   		switch (attr_value_str[0]) {
   924    926   			case 'd': /* directory */
   925    927   				pathinfo->type = APPFS_PATHTYPE_DIRECTORY;
................................................................................
  1010   1012   			}
  1011   1013   		} else {
  1012   1014   			pathinfo->time = appfs_boottime;
  1013   1015   		}
  1014   1016   
  1015   1017   		Tcl_Release(interp);
  1016   1018   	)
         1019  +
         1020  +	if (pathinfo->packaged) {
         1021  +		pathinfo->inode = appfs_get_path_inode(path, -1);
         1022  +	} else {
         1023  +		pathinfo->inode = appfs_get_path_inode(path, fsuid);
         1024  +	}
  1017   1025   
  1018   1026   	if (retval == 0) {
  1019   1027   		appfs_get_path_info_cache_add(path, fsuid, pathinfo);
  1020   1028   	} else {
  1021   1029   		APPFS_DEBUG("error: Invalid type for \"%s\" from Tcl", path);
  1022   1030   	}
  1023   1031