Commit 6336b7c5 authored by Konrad Sztyber's avatar Konrad Sztyber Committed by Jim Harris
Browse files

util: keep track of nested child fd_groups



We'll need this information in the next patch, which will allow for
multi level nesting.

Signed-off-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
Change-Id: I1c11b35d96d7926ff176ffd577db6b08aec2323a
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/25462


Reviewed-by: default avatarChangpeng Liu <changpeliu@tencent.com>
Community-CI: Community CI Samsung <spdk.community.ci.samsung@gmail.com>
Reviewed-by: default avatarAnkit Kumar <ankit.kumar@samsung.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: default avatarBen Walker <ben@nvidia.com>
Reviewed-by: default avatarJim Harris <jim.harris@nvidia.com>
parent 2e1d23f4
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -54,6 +54,8 @@ struct spdk_fd_group {

	/* interrupt sources list */
	TAILQ_HEAD(, event_handler) event_handlers;
	TAILQ_HEAD(, spdk_fd_group) children;
	TAILQ_ENTRY(spdk_fd_group) link;
};

int
@@ -199,6 +201,7 @@ spdk_fd_group_unnest(struct spdk_fd_group *parent, struct spdk_fd_group *child)
	}

	child->parent = NULL;
	TAILQ_REMOVE(&parent->children, child, link);

	rc = _fd_group_add_all(child->epfd, child);
	if (rc < 0) {
@@ -237,8 +240,6 @@ spdk_fd_group_nest(struct spdk_fd_group *parent, struct spdk_fd_group *child)
		child->num_fds -= rc;
	}

	child->parent = parent;

	rc =  _fd_group_add_all(parent->epfd, child);
	if (rc < 0) {
		return rc;
@@ -246,6 +247,9 @@ spdk_fd_group_nest(struct spdk_fd_group *parent, struct spdk_fd_group *child)
		parent->num_fds += rc;
	}

	child->parent = parent;
	TAILQ_INSERT_TAIL(&parent->children, child, link);

	return 0;
}

@@ -509,6 +513,7 @@ spdk_fd_group_create(struct spdk_fd_group **_egrp)

	/* init the event source head */
	TAILQ_INIT(&fgrp->event_handlers);
	TAILQ_INIT(&fgrp->children);

	fgrp->num_fds = 0;
	fgrp->epfd = epoll_create1(EPOLL_CLOEXEC);
@@ -543,6 +548,8 @@ spdk_fd_group_destroy(struct spdk_fd_group *fgrp)
		return;
	}

	assert(fgrp->parent == NULL);
	assert(TAILQ_EMPTY(&fgrp->children));
	close(fgrp->epfd);
	free(fgrp);