static struct workqueue_struct *kmultipathd, *kmpath_handlerd;
 static void trigger_event(struct work_struct *work);
-static void activate_path(struct work_struct *work);
+static void activate_or_offline_path(struct pgpath *pgpath);
+static void activate_path_work(struct work_struct *work);
 static void process_queued_bios(struct work_struct *work);
 
 /*-----------------------------------------------
 
        if (pgpath) {
                pgpath->is_active = true;
-               INIT_DELAYED_WORK(&pgpath->activate_path, activate_path);
+               INIT_DELAYED_WORK(&pgpath->activate_path, activate_path_work);
        }
 
        return pgpath;
        spin_unlock_irqrestore(&m->lock, flags);
 }
 
-static void activate_path(struct work_struct *work)
+static void activate_or_offline_path(struct pgpath *pgpath)
 {
-       struct pgpath *pgpath =
-               container_of(work, struct pgpath, activate_path.work);
        struct request_queue *q = bdev_get_queue(pgpath->path.dev->bdev);
 
        if (pgpath->is_active && !blk_queue_dying(q))
                pg_init_done(pgpath, SCSI_DH_DEV_OFFLINED);
 }
 
+static void activate_path_work(struct work_struct *work)
+{
+       struct pgpath *pgpath =
+               container_of(work, struct pgpath, activate_path.work);
+
+       activate_or_offline_path(pgpath);
+}
+
 static int noretry_error(int error)
 {
        switch (error) {