Lines Matching refs:config
111 static inline unsigned int nbd_blksize(struct nbd_config *config) in nbd_blksize() argument
113 return 1u << config->blksize_bits; in nbd_blksize()
122 struct nbd_config *config; member
299 static int nbd_disconnected(struct nbd_config *config) in nbd_disconnected() argument
301 return test_bit(NBD_RT_DISCONNECTED, &config->runtime_flags) || in nbd_disconnected()
302 test_bit(NBD_RT_DISCONNECT_REQUESTED, &config->runtime_flags); in nbd_disconnected()
308 if (!nsock->dead && notify && !nbd_disconnected(nbd->config)) { in nbd_mark_nsock_dead()
319 if (atomic_dec_return(&nbd->config->live_connections) == 0) { in nbd_mark_nsock_dead()
321 &nbd->config->runtime_flags)) { in nbd_mark_nsock_dead()
323 &nbd->config->runtime_flags); in nbd_mark_nsock_dead()
348 nbd->config->bytesize = bytesize; in nbd_set_size()
349 nbd->config->blksize_bits = __ffs(blksize); in nbd_set_size()
355 if (nbd->config->flags & NBD_FLAG_SEND_TRIM) in nbd_set_size()
359 if (!(nbd->config->flags & NBD_FLAG_SEND_FLUSH)) { in nbd_set_size()
361 } else if (nbd->config->flags & NBD_FLAG_SEND_FUA) { in nbd_set_size()
367 if (nbd->config->flags & NBD_FLAG_ROTATIONAL) in nbd_set_size()
369 if (nbd->config->flags & NBD_FLAG_SEND_WRITE_ZEROES) in nbd_set_size()
400 struct nbd_config *config = nbd->config; in sock_shutdown() local
403 if (config->num_connections == 0) in sock_shutdown()
405 if (test_and_set_bit(NBD_RT_DISCONNECTED, &config->runtime_flags)) in sock_shutdown()
408 for (i = 0; i < config->num_connections; i++) { in sock_shutdown()
409 struct nbd_sock *nsock = config->socks[i]; in sock_shutdown()
445 return nbd->config; in nbd_get_config_unlocked()
455 struct nbd_config *config; in nbd_xmit_timeout() local
471 config = nbd_get_config_unlocked(nbd); in nbd_xmit_timeout()
472 if (!config) { in nbd_xmit_timeout()
479 if (config->num_connections > 1 || in nbd_xmit_timeout()
480 (config->num_connections == 1 && nbd->tag_set.timeout)) { in nbd_xmit_timeout()
483 atomic_read(&config->live_connections), in nbd_xmit_timeout()
484 config->num_connections); in nbd_xmit_timeout()
491 if (config->socks) { in nbd_xmit_timeout()
492 if (cmd->index < config->num_connections) { in nbd_xmit_timeout()
494 config->socks[cmd->index]; in nbd_xmit_timeout()
518 struct nbd_sock *nsock = config->socks[cmd->index]; in nbd_xmit_timeout()
540 set_bit(NBD_RT_TIMEDOUT, &config->runtime_flags); in nbd_xmit_timeout()
599 struct nbd_config *config = nbd->config; in sock_xmit() local
600 struct socket *sock = config->socks[index]->sock; in sock_xmit()
646 struct nbd_config *config = nbd->config; in nbd_send_cmd() local
647 struct nbd_sock *nsock = config->socks[index]; in nbd_send_cmd()
668 (config->flags & NBD_FLAG_READ_ONLY)) { in nbd_send_cmd()
853 if (!nbd_disconnected(nbd->config)) in nbd_read_reply()
950 if (nbd_disconnected(nbd->config)) { in nbd_handle_reply()
973 struct nbd_config *config = nbd->config; in recv_work() local
1022 atomic_dec(&config->recv_threads); in recv_work()
1023 wake_up(&config->recv_wq); in recv_work()
1057 struct nbd_config *config = nbd->config; in find_fallback() local
1059 struct nbd_sock *nsock = config->socks[index]; in find_fallback()
1062 if (test_bit(NBD_RT_DISCONNECTED, &config->runtime_flags)) in find_fallback()
1065 if (config->num_connections <= 1) { in find_fallback()
1071 if (fallback >= 0 && fallback < config->num_connections && in find_fallback()
1072 !config->socks[fallback]->dead) in find_fallback()
1076 nsock->fallback_index >= config->num_connections || in find_fallback()
1077 config->socks[nsock->fallback_index]->dead) { in find_fallback()
1079 for (i = 0; i < config->num_connections; i++) { in find_fallback()
1082 if (!config->socks[i]->dead) { in find_fallback()
1100 struct nbd_config *config = nbd->config; in wait_for_reconnect() local
1101 if (!config->dead_conn_timeout) in wait_for_reconnect()
1104 if (!wait_event_timeout(config->conn_wait, in wait_for_reconnect()
1106 &config->runtime_flags) || in wait_for_reconnect()
1107 atomic_read(&config->live_connections) > 0, in wait_for_reconnect()
1108 config->dead_conn_timeout)) in wait_for_reconnect()
1111 return !test_bit(NBD_RT_DISCONNECTED, &config->runtime_flags); in wait_for_reconnect()
1118 struct nbd_config *config; in nbd_handle_cmd() local
1124 config = nbd_get_config_unlocked(nbd); in nbd_handle_cmd()
1125 if (!config) { in nbd_handle_cmd()
1131 if (index >= config->num_connections) { in nbd_handle_cmd()
1139 nsock = config->socks[index]; in nbd_handle_cmd()
1233 struct nbd_config *config = nbd->config; in nbd_add_socket() local
1254 !test_bit(NBD_RT_BOUND, &config->runtime_flags)) in nbd_add_socket()
1259 test_bit(NBD_RT_BOUND, &config->runtime_flags))) { in nbd_add_socket()
1272 socks = krealloc(config->socks, (config->num_connections + 1) * in nbd_add_socket()
1280 config->socks = socks; in nbd_add_socket()
1290 socks[config->num_connections++] = nsock; in nbd_add_socket()
1291 atomic_inc(&config->live_connections); in nbd_add_socket()
1304 struct nbd_config *config = nbd->config; in nbd_reconnect_socket() local
1320 for (i = 0; i < config->num_connections; i++) { in nbd_reconnect_socket()
1321 struct nbd_sock *nsock = config->socks[i]; in nbd_reconnect_socket()
1334 atomic_inc(&config->recv_threads); in nbd_reconnect_socket()
1348 clear_bit(NBD_RT_DISCONNECTED, &config->runtime_flags); in nbd_reconnect_socket()
1355 atomic_inc(&config->live_connections); in nbd_reconnect_socket()
1356 wake_up(&config->conn_wait); in nbd_reconnect_socket()
1373 if (nbd->config->flags & NBD_FLAG_READ_ONLY) in nbd_parse_flags()
1381 struct nbd_config *config = nbd->config; in send_disconnects() local
1390 for (i = 0; i < config->num_connections; i++) { in send_disconnects()
1391 struct nbd_sock *nsock = config->socks[i]; in send_disconnects()
1405 struct nbd_config *config = nbd->config; in nbd_disconnect() local
1408 set_bit(NBD_RT_DISCONNECT_REQUESTED, &config->runtime_flags); in nbd_disconnect()
1425 struct nbd_config *config = nbd->config; in nbd_config_put() local
1428 if (nbd->config->bytesize) in nbd_config_put()
1431 &config->runtime_flags)) in nbd_config_put()
1435 &config->runtime_flags)) { in nbd_config_put()
1441 if (config->num_connections) { in nbd_config_put()
1443 for (i = 0; i < config->num_connections; i++) { in nbd_config_put()
1444 sockfd_put(config->socks[i]->sock); in nbd_config_put()
1445 kfree(config->socks[i]); in nbd_config_put()
1447 kfree(config->socks); in nbd_config_put()
1449 kfree(nbd->config); in nbd_config_put()
1450 nbd->config = NULL; in nbd_config_put()
1462 struct nbd_config *config = nbd->config; in nbd_start_device() local
1463 int num_connections = config->num_connections; in nbd_start_device()
1468 if (!config->socks) in nbd_start_device()
1471 !(config->flags & NBD_FLAG_CAN_MULTI_CONN)) { in nbd_start_device()
1482 if (num_connections != config->num_connections) { in nbd_start_device()
1483 num_connections = config->num_connections; in nbd_start_device()
1496 set_bit(NBD_RT_HAS_PID_FILE, &config->runtime_flags); in nbd_start_device()
1517 sk_set_memalloc(config->socks[i]->sock->sk); in nbd_start_device()
1519 config->socks[i]->sock->sk->sk_sndtimeo = in nbd_start_device()
1521 atomic_inc(&config->recv_threads); in nbd_start_device()
1525 args->nsock = config->socks[i]; in nbd_start_device()
1529 return nbd_set_size(nbd, config->bytesize, nbd_blksize(config)); in nbd_start_device()
1534 struct nbd_config *config = nbd->config; in nbd_start_device_ioctl() local
1544 ret = wait_event_interruptible(config->recv_wq, in nbd_start_device_ioctl()
1545 atomic_read(&config->recv_threads) == 0); in nbd_start_device_ioctl()
1555 if (test_bit(NBD_RT_DISCONNECT_REQUESTED, &config->runtime_flags)) in nbd_start_device_ioctl()
1557 if (test_bit(NBD_RT_TIMEDOUT, &config->runtime_flags)) in nbd_start_device_ioctl()
1568 &nbd->config->runtime_flags)) in nbd_clear_sock_ioctl()
1585 struct nbd_config *config = nbd->config; in __nbd_ioctl() local
1597 return nbd_set_size(nbd, config->bytesize, arg); in __nbd_ioctl()
1599 return nbd_set_size(nbd, arg, nbd_blksize(config)); in __nbd_ioctl()
1601 if (check_shl_overflow(arg, config->blksize_bits, &bytesize)) in __nbd_ioctl()
1603 return nbd_set_size(nbd, bytesize, nbd_blksize(config)); in __nbd_ioctl()
1609 config->flags = arg; in __nbd_ioctl()
1633 struct nbd_config *config = nbd->config; in nbd_ioctl() local
1650 if (!test_bit(NBD_RT_BOUND, &config->runtime_flags) || in nbd_ioctl()
1661 struct nbd_config *config; in nbd_alloc_and_init_config() local
1663 if (WARN_ON(nbd->config)) in nbd_alloc_and_init_config()
1669 config = kzalloc(sizeof(struct nbd_config), GFP_NOFS); in nbd_alloc_and_init_config()
1670 if (!config) { in nbd_alloc_and_init_config()
1675 atomic_set(&config->recv_threads, 0); in nbd_alloc_and_init_config()
1676 init_waitqueue_head(&config->recv_wq); in nbd_alloc_and_init_config()
1677 init_waitqueue_head(&config->conn_wait); in nbd_alloc_and_init_config()
1678 config->blksize_bits = NBD_DEF_BLKSIZE_BITS; in nbd_alloc_and_init_config()
1679 atomic_set(&config->live_connections, 0); in nbd_alloc_and_init_config()
1681 nbd->config = config; in nbd_alloc_and_init_config()
1697 struct nbd_config *config; in nbd_open() local
1711 config = nbd_get_config_unlocked(nbd); in nbd_open()
1712 if (!config) { in nbd_open()
1728 } else if (nbd_disconnected(config)) { in nbd_open()
1741 if (test_bit(NBD_RT_DISCONNECT_ON_CLOSE, &nbd->config->runtime_flags) && in nbd_release()
1783 u32 flags = nbd->config->flags; in nbd_dbg_flags_show()
1812 struct nbd_config *config = nbd->config; in nbd_dev_dbg_init() local
1823 config->dbg_dir = dir; in nbd_dev_dbg_init()
1826 debugfs_create_u64("size_bytes", 0444, dir, &config->bytesize); in nbd_dev_dbg_init()
1828 debugfs_create_u32("blocksize_bits", 0444, dir, &config->blksize_bits); in nbd_dev_dbg_init()
1836 debugfs_remove_recursive(nbd->config->dbg_dir); in nbd_dev_dbg_close()
2047 struct nbd_config *config = nbd->config; in nbd_genl_size_set() local
2048 u64 bsize = nbd_blksize(config); in nbd_genl_size_set()
2049 u64 bytes = config->bytesize; in nbd_genl_size_set()
2057 if (bytes != config->bytesize || bsize != nbd_blksize(config)) in nbd_genl_size_set()
2065 struct nbd_config *config; in nbd_genl_connect() local
2139 config = nbd->config; in nbd_genl_connect()
2140 set_bit(NBD_RT_BOUND, &config->runtime_flags); in nbd_genl_connect()
2149 config->dead_conn_timeout = in nbd_genl_connect()
2151 config->dead_conn_timeout *= HZ; in nbd_genl_connect()
2154 config->flags = in nbd_genl_connect()
2177 &config->runtime_flags); in nbd_genl_connect()
2226 set_bit(NBD_RT_HAS_BACKEND_FILE, &config->runtime_flags); in nbd_genl_connect()
2232 set_bit(NBD_RT_HAS_CONFIG_REF, &config->runtime_flags); in nbd_genl_connect()
2247 wake_up(&nbd->config->conn_wait); in nbd_disconnect_and_put()
2255 clear_bit(NBD_RT_BOUND, &nbd->config->runtime_flags); in nbd_disconnect_and_put()
2259 &nbd->config->runtime_flags)) in nbd_disconnect_and_put()
2301 struct nbd_config *config; in nbd_genl_reconfigure() local
2344 config = nbd_get_config_unlocked(nbd); in nbd_genl_reconfigure()
2345 if (!config) { in nbd_genl_reconfigure()
2353 if (!test_bit(NBD_RT_BOUND, &config->runtime_flags) || in nbd_genl_reconfigure()
2369 config->dead_conn_timeout = in nbd_genl_reconfigure()
2371 config->dead_conn_timeout *= HZ; in nbd_genl_reconfigure()
2387 &config->runtime_flags); in nbd_genl_reconfigure()
2390 &config->runtime_flags); in nbd_genl_reconfigure()