Hi,
I completely agree to what you said regarding Ceph client. This is exactly
my understanding of a Ceph client.
And regarding blk-mq, I meant for a block device. A multi-queue
implementation of a block device.
On Wednesday, July 15, 2020, Ilya Dryomov <idryomov(a)gmail.com> wrote:
On Wed, Jul 15, 2020 at 12:47 AM Bobby
<italienisch1987(a)gmail.com> wrote:
>
>
>
> Hi Ilya,
>
> Thanks for the reply. It's basically both i.e. I have a specific project
currently and also I am looking to make ceph-fuse faster.
>
> But for now, let me ask specifically the project based question. In the
project
I have to write a blk-mq kernel driver for the Ceph client machine.
The Ceph client machine will transfer the data to HBA or lets say any
embedded device.
What is a "Ceph client machine"?
A Ceph client (or more specifically a RADOS client) speaks RADOS
protocol and transfers data to OSD daemons. It can't transfer data
directly to a physical device because something has to take care of
replication, ensure consistency and self healing, etc. This is the
job of the OSD.
>
> My hope is that there can be an alternative and that alternative is to
not
implement a blk-mq kernel driver and instead do the stuff in userspace.
I am trying to avoid writing a blk-mq kernel driver and yet achieve the
multi-queue implementation through userspace. Is it possible?
>
> Also AFAIK, the Ceph’s block storage implementation uses a client module
and
this client module has two implementations librbd (user-space) and krbd
(kernel module). I have not gone deep into these client modules. but can
librbd help me with this?
I guess I don't understand the goal of your project. A multi-queue
implementation of what exactly? A Ceph block device, a Ceph filesystem
or something else entirely? It would help if you were more specific
because "a multi-queue driver for Ceph" is really vague.
Thanks,
Ilya