1*ed2b53f3SYifan Bian /* SPDX-License-Identifier: BSD-3-Clause 2*ed2b53f3SYifan Bian * Copyright (C) 2022 Intel Corporation. 3*ed2b53f3SYifan Bian * All rights reserved. 4*ed2b53f3SYifan Bian */ 5*ed2b53f3SYifan Bian 6*ed2b53f3SYifan Bian #include "spdk/stdinc.h" 7*ed2b53f3SYifan Bian #include "spdk/ublk.h" 8*ed2b53f3SYifan Bian #include "spdk_internal/init.h" 9*ed2b53f3SYifan Bian 10*ed2b53f3SYifan Bian static void ublk_subsystem_init(void)11*ed2b53f3SYifan Bianublk_subsystem_init(void) 12*ed2b53f3SYifan Bian { 13*ed2b53f3SYifan Bian spdk_ublk_init(); 14*ed2b53f3SYifan Bian spdk_subsystem_init_next(0); 15*ed2b53f3SYifan Bian } 16*ed2b53f3SYifan Bian 17*ed2b53f3SYifan Bian static void ublk_subsystem_fini_done(void * arg)18*ed2b53f3SYifan Bianublk_subsystem_fini_done(void *arg) 19*ed2b53f3SYifan Bian { 20*ed2b53f3SYifan Bian spdk_subsystem_fini_next(); 21*ed2b53f3SYifan Bian } 22*ed2b53f3SYifan Bian 23*ed2b53f3SYifan Bian static void ublk_subsystem_fini(void)24*ed2b53f3SYifan Bianublk_subsystem_fini(void) 25*ed2b53f3SYifan Bian { 26*ed2b53f3SYifan Bian int rc; 27*ed2b53f3SYifan Bian 28*ed2b53f3SYifan Bian rc = spdk_ublk_fini(ublk_subsystem_fini_done, NULL); 29*ed2b53f3SYifan Bian if (rc != 0) { 30*ed2b53f3SYifan Bian ublk_subsystem_fini_done(NULL); 31*ed2b53f3SYifan Bian } 32*ed2b53f3SYifan Bian } 33*ed2b53f3SYifan Bian 34*ed2b53f3SYifan Bian static void ublk_subsystem_write_config_json(struct spdk_json_write_ctx * w)35*ed2b53f3SYifan Bianublk_subsystem_write_config_json(struct spdk_json_write_ctx *w) 36*ed2b53f3SYifan Bian { 37*ed2b53f3SYifan Bian spdk_ublk_write_config_json(w); 38*ed2b53f3SYifan Bian } 39*ed2b53f3SYifan Bian 40*ed2b53f3SYifan Bian static struct spdk_subsystem g_spdk_subsystem_ublk = { 41*ed2b53f3SYifan Bian .name = "ublk", 42*ed2b53f3SYifan Bian .init = ublk_subsystem_init, 43*ed2b53f3SYifan Bian .fini = ublk_subsystem_fini, 44*ed2b53f3SYifan Bian .write_config_json = ublk_subsystem_write_config_json, 45*ed2b53f3SYifan Bian }; 46*ed2b53f3SYifan Bian 47*ed2b53f3SYifan Bian SPDK_SUBSYSTEM_REGISTER(g_spdk_subsystem_ublk); 48*ed2b53f3SYifan Bian SPDK_SUBSYSTEM_DEPEND(ublk, bdev) 49