On Wed, Jul 15, 2020 at 12:47 AM Bobby <italienisch1987@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