Check-in [0819a7a89c]
Overview
Comment:Fixed actual problem with interruptions (which was really unrelated) -- Tcl notifier thread is terminated on fork() called by fuse_main(), since we create a Tcl interpreter for testing before calling fuse_main() the notifier dies and is not restarted. We now terminate it before fork().
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 0819a7a89c5803733b8d2adcb6998f3fbb75bb7c
User & Date: rkeene on 2014-11-12 05:46:48
Other Links: manifest | tags
Context
2014-11-12
05:54
Updated to call Tcl_Preserve/Tcl_Release as appropriate check-in: d9f1a05711 user: rkeene tags: trunk
05:46
Fixed actual problem with interruptions (which was really unrelated) -- Tcl notifier thread is terminated on fork() called by fuse_main(), since we create a Tcl interpreter for testing before calling fuse_main() the notifier dies and is not restarted. We now terminate it before fork(). check-in: 0819a7a89c user: rkeene tags: trunk
05:09
Removed interruption support, there is no clean way to implement it check-in: 39025b67ed user: rkeene tags: trunk
Changes

Modified appfsd.c from [30750361ba] to [3ceaeb1976].

1624
1625
1626
1627
1628
1629
1630

1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645

1646
1647
1648
1649
1650
1651
1652
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645

1646
1647
1648
1649
1650
1651
1652
1653







+














-
+








		fprintf(stderr, "Unable to initialize Tcl interpreter for AppFSd:\n");
		fprintf(stderr, "%s\n", test_interp_error);

		return(1);
	}
	Tcl_DeleteInterp(test_interp);
	Tcl_FinalizeNotifier(NULL);

	/*
	 * Register a signal handler for hot-restart requests
	 */
	signal_ret = signal(SIGHUP, appfs_signal_handler);
	if (signal_ret == SIG_ERR) {
		fprintf(stderr, "Unable to install signal handler for hot-restart\n");
		fprintf(stderr, "Hot-restart will not be available.\n");
	}

	/*
	 * Add FUSE arguments which we always supply
	 */
	fuse_opt_parse(&args, NULL, NULL, appfs_fuse_opt_cb);
	fuse_opt_add_arg(&args, "-odefault_permissions,fsname=appfs,subtype=appfsd,use_ino,kernel_cache,entry_timeout=0,attr_timeout=0,big_writes,hard_remove");
	fuse_opt_add_arg(&args, "-odefault_permissions,fsname=appfs,subtype=appfsd,use_ino,kernel_cache,entry_timeout=0,attr_timeout=0,big_writes,intr,hard_remove");

	if (getuid() == 0) {
		fuse_opt_parse(&args, NULL, NULL, NULL);
		fuse_opt_add_arg(&args, "-oallow_other");
	}

	/*