+static void fio_client_add_fd_hash(struct fio_client *client)
+{
+ int bucket = hash_long(client->fd, FIO_CLIENT_HASH_BITS);
+
+ bucket &= FIO_CLIENT_HASH_MASK;
+ flist_add(&client->fd_hash_list, &client_fd_hash[bucket]);
+}
+
+static void fio_client_remove_fd_hash(struct fio_client *client)
+{
+ if (!flist_empty(&client->fd_hash_list))
+ flist_del_init(&client->fd_hash_list);
+}
+
+static void fio_client_add_name_hash(struct fio_client *client)
+{
+ int bucket = jhash(client->hostname, strlen(client->hostname), 0);
+
+ bucket &= FIO_CLIENT_HASH_MASK;
+ flist_add(&client->name_hash_list, &client_name_hash[bucket]);
+}
+
+static void fio_client_remove_name_hash(struct fio_client *client)
+{
+ if (!flist_empty(&client->name_hash_list))
+ flist_del_init(&client->name_hash_list);
+}
+
+static void fio_init fio_client_hash_init(void)
+{
+ int i;
+
+ for (i = 0; i < FIO_CLIENT_HASH_SZ; i++) {
+ INIT_FLIST_HEAD(&client_fd_hash[i]);
+ INIT_FLIST_HEAD(&client_name_hash[i]);
+ }
+}
+