cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

rnbd-srv.h (2413B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/*
      3 * RDMA Network Block Driver
      4 *
      5 * Copyright (c) 2014 - 2018 ProfitBricks GmbH. All rights reserved.
      6 * Copyright (c) 2018 - 2019 1&1 IONOS Cloud GmbH. All rights reserved.
      7 * Copyright (c) 2019 - 2020 1&1 IONOS SE. All rights reserved.
      8 */
      9#ifndef RNBD_SRV_H
     10#define RNBD_SRV_H
     11
     12#include <linux/types.h>
     13#include <linux/idr.h>
     14#include <linux/kref.h>
     15
     16#include <rtrs.h>
     17#include "rnbd-proto.h"
     18#include "rnbd-log.h"
     19
     20struct rnbd_srv_session {
     21	/* Entry inside global sess_list */
     22	struct list_head        list;
     23	struct rtrs_srv_sess	*rtrs;
     24	char			sessname[NAME_MAX];
     25	int			queue_depth;
     26
     27	struct xarray		index_idr;
     28	/* List of struct rnbd_srv_sess_dev */
     29	struct list_head        sess_dev_list;
     30	struct mutex		lock;
     31	u8			ver;
     32};
     33
     34struct rnbd_srv_dev {
     35	/* Entry inside global dev_list */
     36	struct list_head                list;
     37	struct kobject                  dev_kobj;
     38	struct kobject                  *dev_sessions_kobj;
     39	struct kref                     kref;
     40	char				id[NAME_MAX];
     41	/* List of rnbd_srv_sess_dev structs */
     42	struct list_head		sess_dev_list;
     43	struct mutex			lock;
     44	int				open_write_cnt;
     45};
     46
     47/* Structure which binds N devices and N sessions */
     48struct rnbd_srv_sess_dev {
     49	/* Entry inside rnbd_srv_dev struct */
     50	struct list_head		dev_list;
     51	/* Entry inside rnbd_srv_session struct */
     52	struct list_head		sess_list;
     53	struct rnbd_dev			*rnbd_dev;
     54	struct rnbd_srv_session		*sess;
     55	struct rnbd_srv_dev		*dev;
     56	struct kobject                  kobj;
     57	u32                             device_id;
     58	bool				keep_id;
     59	fmode_t                         open_flags;
     60	struct kref			kref;
     61	struct completion               *destroy_comp;
     62	char				pathname[NAME_MAX];
     63	enum rnbd_access_mode		access_mode;
     64};
     65
     66void rnbd_srv_sess_dev_force_close(struct rnbd_srv_sess_dev *sess_dev,
     67				   struct kobj_attribute *attr);
     68/* rnbd-srv-sysfs.c */
     69
     70int rnbd_srv_create_dev_sysfs(struct rnbd_srv_dev *dev,
     71			      struct block_device *bdev,
     72			      const char *dir_name);
     73void rnbd_srv_destroy_dev_sysfs(struct rnbd_srv_dev *dev);
     74int rnbd_srv_create_dev_session_sysfs(struct rnbd_srv_sess_dev *sess_dev);
     75void rnbd_srv_destroy_dev_session_sysfs(struct rnbd_srv_sess_dev *sess_dev);
     76int rnbd_srv_create_sysfs_files(void);
     77void rnbd_srv_destroy_sysfs_files(void);
     78void rnbd_destroy_sess_dev(struct rnbd_srv_sess_dev *sess_dev, bool keep_id);
     79
     80#endif /* RNBD_SRV_H */