Replace pollset_add_fd with add_poll_obj
diff --git a/src/core/lib/iomgr/ev_epoll_linux.c b/src/core/lib/iomgr/ev_epoll_linux.c
index f81125c..e9a0c69 100644
--- a/src/core/lib/iomgr/ev_epoll_linux.c
+++ b/src/core/lib/iomgr/ev_epoll_linux.c
@@ -1158,8 +1158,8 @@
 
 static grpc_workqueue *fd_get_workqueue(grpc_fd *fd) {
   gpr_mu_lock(&fd->po.mu);
-  grpc_workqueue *workqueue = GRPC_WORKQUEUE_REF(
-      (grpc_workqueue *)fd->po.pi, "fd_get_workqueue");
+  grpc_workqueue *workqueue =
+      GRPC_WORKQUEUE_REF((grpc_workqueue *)fd->po.pi, "fd_get_workqueue");
   gpr_mu_unlock(&fd->po.mu);
   return workqueue;
 }
@@ -1677,7 +1677,6 @@
   return error;
 }
 
-#if 0
 static void add_poll_object(grpc_exec_ctx *exec_ctx, poll_obj *bag,
                             poll_obj *item, poll_obj_type bag_type,
                             poll_obj_type item_type) {
@@ -1732,8 +1731,13 @@
            getting to this branch: if they've changed, we need to throw away our
            work and figure things out again. */
         if (item->pi != NULL) {
+          GRPC_POLLING_TRACE(
+              "add_poll_object: Raced creating new polling island. pi_new: %p "
+              "(fd: %d, %s: %p)",
+              (void *)pi_new, FD_FROM_PO(item)->fd, poll_obj_string(bag_type),
+              (void *)bag);
           /* No need to lock 'pi_new' here since this is a new polling island
-           * and no one has a reference to it yet */
+            * and no one has a reference to it yet */
           polling_island_remove_all_fds_locked(pi_new, true, &error);
 
           /* Ref and unref so that the polling island gets deleted during unref
@@ -1745,6 +1749,17 @@
       } else {
         pi_new = polling_island_create(exec_ctx, NULL, &error);
       }
+
+      GRPC_POLLING_TRACE(
+          "add_poll_object: Created new polling island. pi_new: %p (%s: %p, "
+          "%s: %p)",
+          (void *)pi_new, poll_obj_string(item_type), (void *)item,
+          poll_obj_string(bag_type), (void *)bag);
+    } else {
+      GRPC_POLLING_TRACE(
+          "add_poll_object: Same polling island. pi: %p (%s, %s)",
+          (void *)pi_new, poll_obj_string(item_type),
+          poll_obj_string(bag_type));
     }
   } else if (item->pi == NULL) {
     /* GPR_ASSERT(bag->pi != NULL) */
@@ -1757,14 +1772,28 @@
     }
 
     gpr_mu_unlock(&pi_new->mu);
-
+    GRPC_POLLING_TRACE(
+        "add_poll_obj: item->pi was NULL. pi_new: %p (item(%s): %p, "
+        "bag(%s): %p)",
+        (void *)pi_new, poll_obj_string(item_type), (void *)item,
+        poll_obj_string(bag_type), (void *)bag);
   } else if (bag->pi == NULL) {
     /* GPR_ASSERT(item->pi != NULL) */
     /* Make pi_new to point to latest pi */
     pi_new = polling_island_lock(item->pi);
     gpr_mu_unlock(&pi_new->mu);
+    GRPC_POLLING_TRACE(
+        "add_poll_obj: bag->pi was NULL. pi_new: %p (item(%s): %p, "
+        "bag(%s): %p)",
+        (void *)pi_new, poll_obj_string(item_type), (void *)item,
+        poll_obj_string(bag_type), (void *)bag);
   } else {
     pi_new = polling_island_merge(item->pi, bag->pi, &error);
+    GRPC_POLLING_TRACE(
+        "add_poll_obj: polling islands merged. pi_new: %p (item(%s): %p, "
+        "bag(%s): %p)",
+        (void *)pi_new, poll_obj_string(item_type), (void *)item,
+        poll_obj_string(bag_type), (void *)bag);
   }
 
   /* At this point, pi_new is the polling island that both item->pi and bag->pi
@@ -1792,10 +1821,16 @@
   GRPC_LOG_IF_ERROR("add_poll_object", error);
   GPR_TIMER_END("add_poll_object", 0);
 }
-#endif
 
 static void pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
                            grpc_fd *fd) {
+  add_poll_object(exec_ctx, &pollset->po, &fd->po, POLL_OBJ_POLLSET,
+                  POLL_OBJ_FD);
+}
+
+#if 0
+static void pollset_add_fd(grpc_exec_ctx *exec_ctx, grpc_pollset *pollset,
+                           grpc_fd *fd) {
   GPR_TIMER_BEGIN("pollset_add_fd", 0);
 
   grpc_error *error = GRPC_ERROR_NONE;
@@ -1914,9 +1949,8 @@
   gpr_mu_unlock(&pollset->po.mu);
 
   GRPC_LOG_IF_ERROR("pollset_add_fd", error);
-
-  GPR_TIMER_END("pollset_add_fd", 0);
 }
+#endif
 
 /*******************************************************************************
  * Pollset-set Definitions