Beispiel #1
0
int
lnet_acceptor_start(void)
{
        int  rc;
        long rc2;
        long secure;

        LASSERT (lnet_acceptor_state.pta_sock == NULL);

        rc = lnet_acceptor_get_tunables();
        if (rc != 0)
                return rc;

#ifndef __KERNEL__
        /* Do nothing if we're liblustre clients */
        if ((the_lnet.ln_pid & LNET_PID_USERFLAG) != 0)
                return 0;
#endif

        cfs_mt_init_completion(&lnet_acceptor_state.pta_signal);
        rc = accept2secure(accept_type, &secure);
        if (rc <= 0) {
                cfs_mt_fini_completion(&lnet_acceptor_state.pta_signal);
                return rc;
        }

        if (lnet_count_acceptor_nis() == 0)  /* not required */
                return 0;

        rc2 = cfs_create_thread(lnet_acceptor, (void *)(ulong_ptr_t)secure);
        if (rc2 < 0) {
                CERROR("Can't start acceptor thread: %d\n", rc);
                cfs_mt_fini_completion(&lnet_acceptor_state.pta_signal);

                return -ESRCH;
        }

        /* wait for acceptor to startup */
        cfs_mt_wait_for_completion(&lnet_acceptor_state.pta_signal);

        if (!lnet_acceptor_state.pta_shutdown) {
                /* started OK */
                LASSERT (lnet_acceptor_state.pta_sock != NULL);
                return 0;
        }

        LASSERT (lnet_acceptor_state.pta_sock == NULL);
        cfs_mt_fini_completion(&lnet_acceptor_state.pta_signal);

        return -ENETDOWN;
}
Beispiel #2
0
int
lnet_acceptor_start(void)
{
	int  rc;
	long rc2;
	long secure;

	LASSERT(lnet_acceptor_state.pta_sock == NULL);

	rc = lnet_acceptor_get_tunables();
	if (rc != 0)
		return rc;


	init_completion(&lnet_acceptor_state.pta_signal);
	rc = accept2secure(accept_type, &secure);
	if (rc <= 0) {
		fini_completion(&lnet_acceptor_state.pta_signal);
		return rc;
	}

	if (lnet_count_acceptor_nis() == 0)  /* not required */
		return 0;

	rc2 = PTR_ERR(kthread_run(lnet_acceptor,
				  (void *)(ulong_ptr_t)secure,
				  "acceptor_%03ld", secure));
	if (IS_ERR_VALUE(rc2)) {
		CERROR("Can't start acceptor thread: %ld\n", rc2);
		fini_completion(&lnet_acceptor_state.pta_signal);

		return -ESRCH;
	}

	/* wait for acceptor to startup */
	wait_for_completion(&lnet_acceptor_state.pta_signal);

	if (!lnet_acceptor_state.pta_shutdown) {
		/* started OK */
		LASSERT(lnet_acceptor_state.pta_sock != NULL);
		return 0;
	}

	LASSERT(lnet_acceptor_state.pta_sock == NULL);
	fini_completion(&lnet_acceptor_state.pta_signal);

	return -ENETDOWN;
}