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
642
643
644
645
646
647

648


649
650
651
652
653
654
655
...
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
....
1010
1011
1012
1013
1014
1015
1016






1017
1018
1019
1020
1021
1022
1023
		retval *= 16777619; /* FNV-1a 32-bit prime */
#else
		/* GCC Optimized replacement */
		retval += (retval << 1) + (retval << 4) + (retval << 7) + (retval << 8) + (retval << 24);
#endif
	}


	retval += uid;



	return(retval);
}

/*
 * Cache Get Path Info lookups for speed
 */
................................................................................

		appfs_call_libtcl(Tcl_Release(interp);)

		return(-EIO);
	}

	pathinfo->packaged = 0;
	pathinfo->inode = appfs_get_path_inode(path, fsuid);

	appfs_call_libtcl(
		attr_value_str = Tcl_GetString(attr_value);

		switch (attr_value_str[0]) {
			case 'd': /* directory */
				pathinfo->type = APPFS_PATHTYPE_DIRECTORY;
................................................................................
			}
		} else {
			pathinfo->time = appfs_boottime;
		}

		Tcl_Release(interp);
	)







	if (retval == 0) {
		appfs_get_path_info_cache_add(path, fsuid, pathinfo);
	} else {
		APPFS_DEBUG("error: Invalid type for \"%s\" from Tcl", path);
	}








>
|
>
>







 







<







 







>
>
>
>
>
>







641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
...
914
915
916
917
918
919
920

921
922
923
924
925
926
927
....
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
		retval *= 16777619; /* FNV-1a 32-bit prime */
#else
		/* GCC Optimized replacement */
		retval += (retval << 1) + (retval << 4) + (retval << 7) + (retval << 8) + (retval << 24);
#endif
	}

	if (uid >= 0) {
		retval += uid;
		retval++;
	}

	return(retval);
}

/*
 * Cache Get Path Info lookups for speed
 */
................................................................................

		appfs_call_libtcl(Tcl_Release(interp);)

		return(-EIO);
	}

	pathinfo->packaged = 0;


	appfs_call_libtcl(
		attr_value_str = Tcl_GetString(attr_value);

		switch (attr_value_str[0]) {
			case 'd': /* directory */
				pathinfo->type = APPFS_PATHTYPE_DIRECTORY;
................................................................................
			}
		} else {
			pathinfo->time = appfs_boottime;
		}

		Tcl_Release(interp);
	)

	if (pathinfo->packaged) {
		pathinfo->inode = appfs_get_path_inode(path, -1);
	} else {
		pathinfo->inode = appfs_get_path_inode(path, fsuid);
	}

	if (retval == 0) {
		appfs_get_path_info_cache_add(path, fsuid, pathinfo);
	} else {
		APPFS_DEBUG("error: Invalid type for \"%s\" from Tcl", path);
	}