From: Roman Pen <roman.penyaev@profitbricks.com> To: linux-block@vger.kernel.org, linux-rdma@vger.kernel.org Cc: Jens Axboe <axboe@kernel.dk>, Christoph Hellwig <hch@infradead.org>, Sagi Grimberg <sagi@grimberg.me>, Bart Van Assche <bart.vanassche@sandisk.com>, Or Gerlitz <ogerlitz@mellanox.com>, Roman Pen <roman.penyaev@profitbricks.com>, Danil Kipnis <danil.kipnis@profitbricks.com>, Jack Wang <jinpu.wang@profitbricks.com> Subject: [PATCH 15/24] ibnbd: client: private header with client structs and functions Date: Fri, 2 Feb 2018 15:08:55 +0100 [thread overview] Message-ID: <20180202140904.2017-16-roman.penyaev@profitbricks.com> (raw) In-Reply-To: <20180202140904.2017-1-roman.penyaev@profitbricks.com> This header describes main structs and functions used by ibnbd-client module, mainly for managing IBNBD sessions and mapped block devices, creating and destroying sysfs entries. Signed-off-by: Roman Pen <roman.penyaev@profitbricks.com> Signed-off-by: Danil Kipnis <danil.kipnis@profitbricks.com> Cc: Jack Wang <jinpu.wang@profitbricks.com> --- drivers/block/ibnbd/ibnbd-clt.h | 193 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 193 insertions(+) diff --git a/drivers/block/ibnbd/ibnbd-clt.h b/drivers/block/ibnbd/ibnbd-clt.h new file mode 100644 index 000000000000..b3d72b2962dd --- /dev/null +++ b/drivers/block/ibnbd/ibnbd-clt.h @@ -0,0 +1,193 @@ +/* + * InfiniBand Network Block Driver + * + * Copyright (c) 2014 - 2017 ProfitBricks GmbH. All rights reserved. + * Authors: Fabian Holler <mail@fholler.de> + * Jack Wang <jinpu.wang@profitbricks.com> + * Kleber Souza <kleber.souza@profitbricks.com> + * Danil Kipnis <danil.kipnis@profitbricks.com> + * Roman Penyaev <roman.penyaev@profitbricks.com> + * Milind Dumbare <Milind.dumbare@gmail.com> + * + * Copyright (c) 2017 - 2018 ProfitBricks GmbH. All rights reserved. + * Authors: Danil Kipnis <danil.kipnis@profitbricks.com> + * Roman Penyaev <roman.penyaev@profitbricks.com> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef IBNBD_CLT_H +#define IBNBD_CLT_H + +#include <linux/wait.h> +#include <linux/in.h> +#include <linux/inet.h> +#include <linux/blk-mq.h> +#include <linux/refcount.h> + +#include "ibtrs.h" +#include "ibnbd-proto.h" +#include "ibnbd-log.h" + +#define BMAX_SEGMENTS 31 +#define RECONNECT_DELAY 30 +#define MAX_RECONNECTS -1 + +enum ibnbd_clt_dev_state { + DEV_STATE_INIT, + DEV_STATE_MAPPED, + DEV_STATE_MAPPED_DISCONNECTED, + DEV_STATE_UNMAPPED, +}; + +enum ibnbd_queue_mode { + BLK_MQ, + BLK_RQ +}; + +struct ibnbd_iu_comp { + wait_queue_head_t wait; + int errno; +}; + +struct ibnbd_iu { + union { + struct request *rq; /* for block io */ + void *buf; /* for user messages */ + }; + struct ibtrs_tag *tag; + union { + /* use to send msg associated with a dev */ + struct ibnbd_clt_dev *dev; + /* use to send msg associated with a sess */ + struct ibnbd_clt_session *sess; + }; + blk_status_t status; + struct scatterlist sglist[BMAX_SEGMENTS]; + struct work_struct work; + int errno; + struct ibnbd_iu_comp *comp; +}; + +struct ibnbd_cpu_qlist { + struct list_head requeue_list; + spinlock_t requeue_lock; + unsigned int cpu; +}; + +struct ibnbd_clt_session { + struct list_head list; + struct ibtrs_clt *ibtrs; + wait_queue_head_t ibtrs_waitq; + bool ibtrs_ready; + struct ibnbd_cpu_qlist __percpu + *cpu_queues; + DECLARE_BITMAP(cpu_queues_bm, NR_CPUS); + int __percpu *cpu_rr; /* per-cpu var for CPU round-robin */ + atomic_t busy; + int queue_depth; + u32 max_io_size; + struct blk_mq_tag_set tag_set; + struct mutex lock; /* protects state and devs_list */ + struct list_head devs_list; /* list of struct ibnbd_clt_dev */ + refcount_t refcount; + char sessname[NAME_MAX]; + u8 ver; /* protocol version */ +}; + +/** + * Submission queues. + */ +struct ibnbd_queue { + struct list_head requeue_list; + unsigned long in_list; + struct ibnbd_clt_dev *dev; + struct blk_mq_hw_ctx *hctx; +}; + +struct ibnbd_clt_dev { + struct ibnbd_clt_session *sess; + struct request_queue *queue; + struct ibnbd_queue *hw_queues; + struct delayed_work rq_delay_work; + u32 device_id; + /* local Idr index - used to track minor number allocations. */ + u32 clt_device_id; + struct mutex lock; + enum ibnbd_clt_dev_state dev_state; + enum ibnbd_queue_mode queue_mode; + enum ibnbd_io_mode io_mode; /* user requested */ + enum ibnbd_io_mode remote_io_mode; /* server really used */ + char pathname[NAME_MAX]; + enum ibnbd_access_mode access_mode; + bool read_only; + bool rotational; + u32 max_hw_sectors; + u32 max_write_same_sectors; + u32 max_discard_sectors; + u32 discard_granularity; + u32 discard_alignment; + u16 secure_discard; + u16 physical_block_size; + u16 logical_block_size; + u16 max_segments; + size_t nsectors; + u64 size; /* device size in bytes */ + struct list_head list; + struct gendisk *gd; + struct kobject kobj; + char blk_symlink_name[NAME_MAX]; + refcount_t refcount; + struct work_struct unmap_on_rmmod_work; +}; + +static inline const char *ibnbd_queue_mode_str(enum ibnbd_queue_mode mode) +{ + switch (mode) { + case BLK_RQ: + return "rq"; + case BLK_MQ: + return "mq"; + default: + return "unknown"; + } +} + +/* ibnbd-clt.c */ + +struct ibnbd_clt_dev *ibnbd_clt_map_device(const char *sessname, + struct ibtrs_addr *paths, + size_t path_cnt, + const char *pathname, + enum ibnbd_access_mode access_mode, + enum ibnbd_queue_mode queue_mode, + enum ibnbd_io_mode io_mode); +int ibnbd_clt_unmap_device(struct ibnbd_clt_dev *dev, bool force, + const struct attribute *sysfs_self); + +int ibnbd_clt_remap_device(struct ibnbd_clt_dev *dev); +int ibnbd_clt_resize_disk(struct ibnbd_clt_dev *dev, size_t newsize); + +/* ibnbd-clt-sysfs.c */ + +int ibnbd_clt_create_sysfs_files(void); + +void ibnbd_clt_destroy_sysfs_files(void); +void ibnbd_clt_destroy_default_group(void); + +void ibnbd_clt_remove_dev_symlink(struct ibnbd_clt_dev *dev); +void ibnbd_sysfs_remove_file_self(struct kobject *kobj, + const struct attribute *attr); + +#endif /* IBNBD_CLT_H */ -- 2.13.1
WARNING: multiple messages have this Message-ID (diff)
From: Roman Pen <roman.penyaev-EIkl63zCoXaH+58JC4qpiA@public.gmane.org> To: linux-block-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: Jens Axboe <axboe-tSWWG44O7X1aa/9Udqfwiw@public.gmane.org>, Christoph Hellwig <hch-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>, Sagi Grimberg <sagi-NQWnxTmZq1alnMjI0IkVqw@public.gmane.org>, Bart Van Assche <bart.vanassche-XdAiOPVOjttBDgjK7y7TUQ@public.gmane.org>, Or Gerlitz <ogerlitz-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>, Roman Pen <roman.penyaev-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>, Danil Kipnis <danil.kipnis-EIkl63zCoXaH+58JC4qpiA@public.gmane.org>, Jack Wang <jinpu.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org> Subject: [PATCH 15/24] ibnbd: client: private header with client structs and functions Date: Fri, 2 Feb 2018 15:08:55 +0100 [thread overview] Message-ID: <20180202140904.2017-16-roman.penyaev@profitbricks.com> (raw) In-Reply-To: <20180202140904.2017-1-roman.penyaev-EIkl63zCoXaH+58JC4qpiA@public.gmane.org> This header describes main structs and functions used by ibnbd-client module, mainly for managing IBNBD sessions and mapped block devices, creating and destroying sysfs entries. Signed-off-by: Roman Pen <roman.penyaev-EIkl63zCoXaH+58JC4qpiA@public.gmane.org> Signed-off-by: Danil Kipnis <danil.kipnis-EIkl63zCoXaH+58JC4qpiA@public.gmane.org> Cc: Jack Wang <jinpu.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org> --- drivers/block/ibnbd/ibnbd-clt.h | 193 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 193 insertions(+) diff --git a/drivers/block/ibnbd/ibnbd-clt.h b/drivers/block/ibnbd/ibnbd-clt.h new file mode 100644 index 000000000000..b3d72b2962dd --- /dev/null +++ b/drivers/block/ibnbd/ibnbd-clt.h @@ -0,0 +1,193 @@ +/* + * InfiniBand Network Block Driver + * + * Copyright (c) 2014 - 2017 ProfitBricks GmbH. All rights reserved. + * Authors: Fabian Holler <mail-99BIx50xQYGELgA04lAiVw@public.gmane.org> + * Jack Wang <jinpu.wang-EIkl63zCoXaH+58JC4qpiA@public.gmane.org> + * Kleber Souza <kleber.souza-EIkl63zCoXaH+58JC4qpiA@public.gmane.org> + * Danil Kipnis <danil.kipnis-EIkl63zCoXaH+58JC4qpiA@public.gmane.org> + * Roman Penyaev <roman.penyaev-EIkl63zCoXaH+58JC4qpiA@public.gmane.org> + * Milind Dumbare <Milind.dumbare-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> + * + * Copyright (c) 2017 - 2018 ProfitBricks GmbH. All rights reserved. + * Authors: Danil Kipnis <danil.kipnis-EIkl63zCoXaH+58JC4qpiA@public.gmane.org> + * Roman Penyaev <roman.penyaev-EIkl63zCoXaH+58JC4qpiA@public.gmane.org> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef IBNBD_CLT_H +#define IBNBD_CLT_H + +#include <linux/wait.h> +#include <linux/in.h> +#include <linux/inet.h> +#include <linux/blk-mq.h> +#include <linux/refcount.h> + +#include "ibtrs.h" +#include "ibnbd-proto.h" +#include "ibnbd-log.h" + +#define BMAX_SEGMENTS 31 +#define RECONNECT_DELAY 30 +#define MAX_RECONNECTS -1 + +enum ibnbd_clt_dev_state { + DEV_STATE_INIT, + DEV_STATE_MAPPED, + DEV_STATE_MAPPED_DISCONNECTED, + DEV_STATE_UNMAPPED, +}; + +enum ibnbd_queue_mode { + BLK_MQ, + BLK_RQ +}; + +struct ibnbd_iu_comp { + wait_queue_head_t wait; + int errno; +}; + +struct ibnbd_iu { + union { + struct request *rq; /* for block io */ + void *buf; /* for user messages */ + }; + struct ibtrs_tag *tag; + union { + /* use to send msg associated with a dev */ + struct ibnbd_clt_dev *dev; + /* use to send msg associated with a sess */ + struct ibnbd_clt_session *sess; + }; + blk_status_t status; + struct scatterlist sglist[BMAX_SEGMENTS]; + struct work_struct work; + int errno; + struct ibnbd_iu_comp *comp; +}; + +struct ibnbd_cpu_qlist { + struct list_head requeue_list; + spinlock_t requeue_lock; + unsigned int cpu; +}; + +struct ibnbd_clt_session { + struct list_head list; + struct ibtrs_clt *ibtrs; + wait_queue_head_t ibtrs_waitq; + bool ibtrs_ready; + struct ibnbd_cpu_qlist __percpu + *cpu_queues; + DECLARE_BITMAP(cpu_queues_bm, NR_CPUS); + int __percpu *cpu_rr; /* per-cpu var for CPU round-robin */ + atomic_t busy; + int queue_depth; + u32 max_io_size; + struct blk_mq_tag_set tag_set; + struct mutex lock; /* protects state and devs_list */ + struct list_head devs_list; /* list of struct ibnbd_clt_dev */ + refcount_t refcount; + char sessname[NAME_MAX]; + u8 ver; /* protocol version */ +}; + +/** + * Submission queues. + */ +struct ibnbd_queue { + struct list_head requeue_list; + unsigned long in_list; + struct ibnbd_clt_dev *dev; + struct blk_mq_hw_ctx *hctx; +}; + +struct ibnbd_clt_dev { + struct ibnbd_clt_session *sess; + struct request_queue *queue; + struct ibnbd_queue *hw_queues; + struct delayed_work rq_delay_work; + u32 device_id; + /* local Idr index - used to track minor number allocations. */ + u32 clt_device_id; + struct mutex lock; + enum ibnbd_clt_dev_state dev_state; + enum ibnbd_queue_mode queue_mode; + enum ibnbd_io_mode io_mode; /* user requested */ + enum ibnbd_io_mode remote_io_mode; /* server really used */ + char pathname[NAME_MAX]; + enum ibnbd_access_mode access_mode; + bool read_only; + bool rotational; + u32 max_hw_sectors; + u32 max_write_same_sectors; + u32 max_discard_sectors; + u32 discard_granularity; + u32 discard_alignment; + u16 secure_discard; + u16 physical_block_size; + u16 logical_block_size; + u16 max_segments; + size_t nsectors; + u64 size; /* device size in bytes */ + struct list_head list; + struct gendisk *gd; + struct kobject kobj; + char blk_symlink_name[NAME_MAX]; + refcount_t refcount; + struct work_struct unmap_on_rmmod_work; +}; + +static inline const char *ibnbd_queue_mode_str(enum ibnbd_queue_mode mode) +{ + switch (mode) { + case BLK_RQ: + return "rq"; + case BLK_MQ: + return "mq"; + default: + return "unknown"; + } +} + +/* ibnbd-clt.c */ + +struct ibnbd_clt_dev *ibnbd_clt_map_device(const char *sessname, + struct ibtrs_addr *paths, + size_t path_cnt, + const char *pathname, + enum ibnbd_access_mode access_mode, + enum ibnbd_queue_mode queue_mode, + enum ibnbd_io_mode io_mode); +int ibnbd_clt_unmap_device(struct ibnbd_clt_dev *dev, bool force, + const struct attribute *sysfs_self); + +int ibnbd_clt_remap_device(struct ibnbd_clt_dev *dev); +int ibnbd_clt_resize_disk(struct ibnbd_clt_dev *dev, size_t newsize); + +/* ibnbd-clt-sysfs.c */ + +int ibnbd_clt_create_sysfs_files(void); + +void ibnbd_clt_destroy_sysfs_files(void); +void ibnbd_clt_destroy_default_group(void); + +void ibnbd_clt_remove_dev_symlink(struct ibnbd_clt_dev *dev); +void ibnbd_sysfs_remove_file_self(struct kobject *kobj, + const struct attribute *attr); + +#endif /* IBNBD_CLT_H */ -- 2.13.1 -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2018-02-02 14:08 UTC|newest] Thread overview: 124+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-02-02 14:08 [PATCH 00/24] InfiniBand Transport (IBTRS) and Network Block Device (IBNBD) Roman Pen 2018-02-02 14:08 ` Roman Pen 2018-02-02 14:08 ` [PATCH 01/24] ibtrs: public interface header to establish RDMA connections Roman Pen 2018-02-02 14:08 ` Roman Pen 2018-02-02 14:08 ` [PATCH 02/24] ibtrs: private headers with IBTRS protocol structs and helpers Roman Pen 2018-02-02 14:08 ` [PATCH 03/24] ibtrs: core: lib functions shared between client and server modules Roman Pen 2018-02-02 14:08 ` Roman Pen 2018-02-05 10:52 ` Sagi Grimberg 2018-02-06 12:01 ` Roman Penyaev 2018-02-06 16:10 ` Jason Gunthorpe 2018-02-07 10:34 ` Roman Penyaev 2018-02-07 10:34 ` Roman Penyaev 2018-02-02 14:08 ` [PATCH 04/24] ibtrs: client: private header with client structs and functions Roman Pen 2018-02-02 14:08 ` Roman Pen 2018-02-05 10:59 ` Sagi Grimberg 2018-02-05 10:59 ` Sagi Grimberg 2018-02-06 12:23 ` Roman Penyaev 2018-02-02 14:08 ` [PATCH 05/24] ibtrs: client: main functionality Roman Pen 2018-02-02 16:54 ` Bart Van Assche 2018-02-02 16:54 ` Bart Van Assche 2018-02-05 13:27 ` Roman Penyaev 2018-02-05 14:14 ` Sagi Grimberg 2018-02-05 14:14 ` Sagi Grimberg 2018-02-05 17:05 ` Roman Penyaev 2018-02-05 17:05 ` Roman Penyaev 2018-02-05 11:19 ` Sagi Grimberg 2018-02-05 14:19 ` Roman Penyaev 2018-02-05 14:19 ` Roman Penyaev 2018-02-05 16:24 ` Bart Van Assche 2018-02-05 16:24 ` Bart Van Assche 2018-02-02 14:08 ` [PATCH 06/24] ibtrs: client: statistics functions Roman Pen 2018-02-02 14:08 ` [PATCH 07/24] ibtrs: client: sysfs interface functions Roman Pen 2018-02-02 14:08 ` Roman Pen 2018-02-05 11:20 ` Sagi Grimberg 2018-02-05 11:20 ` Sagi Grimberg 2018-02-06 12:28 ` Roman Penyaev 2018-02-02 14:08 ` [PATCH 08/24] ibtrs: server: private header with server structs and functions Roman Pen 2018-02-02 14:08 ` [PATCH 09/24] ibtrs: server: main functionality Roman Pen 2018-02-02 14:08 ` Roman Pen 2018-02-05 11:29 ` Sagi Grimberg 2018-02-05 11:29 ` Sagi Grimberg 2018-02-06 12:46 ` Roman Penyaev 2018-02-02 14:08 ` [PATCH 10/24] ibtrs: server: statistics functions Roman Pen 2018-02-02 14:08 ` [PATCH 11/24] ibtrs: server: sysfs interface functions Roman Pen 2018-02-02 14:08 ` Roman Pen 2018-02-02 14:08 ` [PATCH 12/24] ibtrs: include client and server modules into kernel compilation Roman Pen 2018-02-02 14:08 ` [PATCH 13/24] ibtrs: a bit of documentation Roman Pen 2018-02-02 14:08 ` [PATCH 14/24] ibnbd: private headers with IBNBD protocol structs and helpers Roman Pen 2018-02-02 14:08 ` Roman Pen 2018-02-02 14:08 ` Roman Pen [this message] 2018-02-02 14:08 ` [PATCH 15/24] ibnbd: client: private header with client structs and functions Roman Pen 2018-02-02 14:08 ` [PATCH 16/24] ibnbd: client: main functionality Roman Pen 2018-02-02 14:08 ` Roman Pen 2018-02-02 15:11 ` Jens Axboe 2018-02-02 15:11 ` Jens Axboe 2018-02-05 12:54 ` Roman Penyaev 2018-02-02 14:08 ` [PATCH 17/24] ibnbd: client: sysfs interface functions Roman Pen 2018-02-02 14:08 ` Roman Pen 2018-02-02 14:08 ` [PATCH 18/24] ibnbd: server: private header with server structs and functions Roman Pen 2018-02-02 14:08 ` [PATCH 19/24] ibnbd: server: main functionality Roman Pen 2018-02-02 14:09 ` [PATCH 20/24] ibnbd: server: functionality for IO submission to file or block dev Roman Pen 2018-02-02 14:09 ` Roman Pen 2018-02-02 14:09 ` [PATCH 21/24] ibnbd: server: sysfs interface functions Roman Pen 2018-02-02 14:09 ` Roman Pen 2018-02-02 14:09 ` [PATCH 22/24] ibnbd: include client and server modules into kernel compilation Roman Pen 2018-02-02 14:09 ` [PATCH 23/24] ibnbd: a bit of documentation Roman Pen 2018-02-02 14:09 ` Roman Pen 2018-02-02 15:55 ` Bart Van Assche 2018-02-02 15:55 ` Bart Van Assche 2018-02-05 13:03 ` Roman Penyaev 2018-02-05 14:16 ` Sagi Grimberg 2018-02-02 14:09 ` [PATCH 24/24] MAINTAINERS: Add maintainer for IBNBD/IBTRS modules Roman Pen 2018-02-02 16:07 ` [PATCH 00/24] InfiniBand Transport (IBTRS) and Network Block Device (IBNBD) Bart Van Assche 2018-02-02 16:07 ` Bart Van Assche 2018-02-02 16:40 ` Doug Ledford 2018-02-02 16:40 ` Doug Ledford 2018-02-05 8:45 ` Jinpu Wang 2018-02-05 8:45 ` Jinpu Wang 2018-06-04 12:14 ` Danil Kipnis 2018-02-02 17:05 ` Bart Van Assche 2018-02-02 17:05 ` Bart Van Assche 2018-02-05 8:56 ` Jinpu Wang 2018-02-05 11:36 ` Sagi Grimberg 2018-02-05 13:38 ` Danil Kipnis 2018-02-05 13:38 ` Danil Kipnis 2018-02-05 14:17 ` Sagi Grimberg 2018-02-05 16:40 ` Danil Kipnis 2018-02-05 18:38 ` Bart Van Assche 2018-02-06 9:44 ` Danil Kipnis 2018-02-06 9:44 ` Danil Kipnis 2018-02-06 15:35 ` Bart Van Assche 2018-02-06 15:35 ` Bart Van Assche 2018-02-05 16:16 ` Bart Van Assche 2018-02-05 16:16 ` Bart Van Assche 2018-02-05 16:36 ` Jinpu Wang 2018-02-05 16:36 ` Jinpu Wang 2018-02-07 16:35 ` Christopher Lameter 2018-02-07 17:18 ` Roman Penyaev 2018-02-07 17:32 ` Bart Van Assche 2018-02-07 17:32 ` Bart Van Assche 2018-02-08 17:38 ` Danil Kipnis 2018-02-08 17:38 ` Danil Kipnis 2018-02-08 18:09 ` Bart Van Assche 2018-02-08 18:09 ` Bart Van Assche 2018-06-04 12:27 ` Danil Kipnis 2018-02-05 12:16 ` Sagi Grimberg 2018-02-05 12:16 ` Sagi Grimberg 2018-02-05 12:30 ` Sagi Grimberg 2018-02-07 13:06 ` Roman Penyaev 2018-02-07 13:06 ` Roman Penyaev 2018-02-05 16:58 ` Bart Van Assche 2018-02-05 16:58 ` Bart Van Assche 2018-02-05 17:16 ` Roman Penyaev 2018-02-05 17:20 ` Bart Van Assche 2018-02-05 17:20 ` Bart Van Assche 2018-02-06 11:47 ` Roman Penyaev 2018-02-06 13:12 ` Roman Penyaev 2018-02-06 13:12 ` Roman Penyaev 2018-02-06 16:01 ` Bart Van Assche 2018-02-06 16:01 ` Bart Van Assche 2018-02-07 12:57 ` Roman Penyaev 2018-02-07 12:57 ` Roman Penyaev 2018-02-07 16:35 ` Bart Van Assche 2018-02-07 16:35 ` Bart Van Assche
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20180202140904.2017-16-roman.penyaev@profitbricks.com \ --to=roman.penyaev@profitbricks.com \ --cc=axboe@kernel.dk \ --cc=bart.vanassche@sandisk.com \ --cc=danil.kipnis@profitbricks.com \ --cc=hch@infradead.org \ --cc=jinpu.wang@profitbricks.com \ --cc=linux-block@vger.kernel.org \ --cc=linux-rdma@vger.kernel.org \ --cc=ogerlitz@mellanox.com \ --cc=sagi@grimberg.me \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.