All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [SPDK] About mouting Blobstore and Lvolstore
@ 2018-02-21  7:02 Zawadzki, Tomasz
  0 siblings, 0 replies; 9+ messages in thread
From: Zawadzki, Tomasz @ 2018-02-21  7:02 UTC (permalink / raw)
  To: spdk

[-- Attachment #1: Type: text/plain, Size: 5245 bytes --]

Hi Shuhei,

Just like Jim have mentioned:

-          blobstore (lib/blobstore) handles persistent allocation of data and metadata

-          lvol (lib/lvol) implements logic for creation of blobstore/blobs and managing relevant metadata (like lvs uuid, lvs name and lvol name)

-          vbdev_lvol (lib/bdev/lvol) exposes lvols via bdev layer

Please see http://www.spdk.io/doc/logical_volumes.html for description and RPC regarding lvols. After creation lvs and lvols are persisted on the device that they were created on.

As soon as that device is added to SPDK, it is examined for lvol store presence - if it’s there, it’s loaded.
This examine process is generic for bdev. When spdk_bdev is registered, examine callback is issued for all bdev types that assigned it. At this time this mechanism is used by lvols, GPT, split and error.
For details please see functions like _spdk_bdev_register(), SPDK_BDEV_MODULE_REGISTER and specifically for lvol - vbdev_lvs_examine().

For example from RPC point of view. As soon as NVMe device is added (construct_nvme_bdev RPC) and it contained lvs with lvols, they are immediately exposed as bdevs. Just like they were before previous SPDK instance run was closed.

Thanks,
Tomek

From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of ???? / MATSUMOTO,SHUUHEI
Sent: Wednesday, February 21, 2018 1:43 AM
To: Storage Performance Development Kit <spdk(a)lists.01.org>
Subject: Re: [SPDK] About mouting Blobstore and Lvolstore


Hi Jim,



We have discussed that JSON config file may be better to be a list of JSON RPC request first.



However for lvol and lvolstore, metadata and data are already persistent in the blobstore.

Hence JSON config file will not be direct solution.



If I understanding correctly, the implementation that lvol and lvolstore are automatically made available when mouting may be the way many hope.



Please revise me if my understanding is wrong.



Thanks,

Shuhei

________________________________
差出人: SPDK <spdk-bounces(a)lists.01.org<mailto:spdk-bounces(a)lists.01.org>> が 松本周平 / MATSUMOTO,SHUUHEI <shuhei.matsumoto.xt(a)hitachi.com<mailto:shuhei.matsumoto.xt(a)hitachi.com>> の代理で送信
送信日時: 2018年2月21日 9:19
宛先: Storage Performance Development Kit
件名: [!]Re: [SPDK] About mouting Blobstore and Lvolstore


Hi Jim,



Thank you but my question might not be clear.

What I would like to know is that how to ensure that each LVOL is attached to the same blobstore and blob after rebooting.



The name of lvol_bdev is returned by creation and is lvolstore_uuid + blob_id.

However I have not seen any code to use the name of lvol_bdev for lvol creation.

If the name of lvol_bdev is used to allocate lvol to blob, the same blob will be ensured to be allocated.



Do you have any good idea or the solution is already implemented about how lvol library satisfies the responsibility?



I hope this make sense to you.



Thanks,

Shuhei

________________________________
差出人: SPDK <spdk-bounces(a)lists.01.org<mailto:spdk-bounces(a)lists.01.org>> が Harris, James R <james.r.harris(a)intel.com<mailto:james.r.harris(a)intel.com>> の代理で送信
送信日時: 2018年2月21日 9:09:02
宛先: Storage Performance Development Kit
件名: [!]Re: [SPDK] About mouting Blobstore and Lvolstore


Hi Shuhei,



Blobstore is meant as a generic persistent block allocator.  Lvolstore is an SPDK logical volume implementation based on Blobstore to present blobs as a block device.  Blobfs is a minimal SPDK filesystem based on Blobstore to present blobs as files.  So for purposes of library dependencies - both lvolstore and blobfs depend on Blobstore.



Regarding “mounting” a logical volume - the lib/bdev/lvol library is responsible for presenting logical volumes as SPDK bdevs.



Regards,



-Jim









From: SPDK <spdk-bounces(a)lists.01.org<mailto:spdk-bounces(a)lists.01.org>> on behalf of 松本周平 / MATSUMOTO,SHUUHEI <shuhei.matsumoto.xt(a)hitachi.com<mailto:shuhei.matsumoto.xt(a)hitachi.com>>
Reply-To: Storage Performance Development Kit <spdk(a)lists.01.org<mailto:spdk(a)lists.01.org>>
Date: Tuesday, February 20, 2018 at 4:02 PM
To: "spdk(a)lists.01.org<mailto:spdk(a)lists.01.org>" <spdk(a)lists.01.org<mailto:spdk(a)lists.01.org>>
Subject: [SPDK] About mouting Blobstore and Lvolstore



Hi All,



I'm investigating the dependency relationship among SPDK libraries and subsystems mainly for JSON configuration management.



I understand that blobstore manages metadata persistently.

However I have not found anything about mouting blobstore or lvolstore in  source code, Trello, or document yet.



Mouting in this case means a process by which SPDK makes lvolstore and lvol on disks available for user to access via virtual bdev.



Am I missing something or have I totally misunderstood?

Otherwise mounting function is great to have for us?



This question is only from code and document reading.

I'm not confident in my understanding yet and I would appreciate for your any feedback.



Thanks,

Shuhei

[-- Attachment #2: attachment.html --]
[-- Type: text/html, Size: 28502 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [SPDK] About mouting Blobstore and Lvolstore
@ 2018-02-22  0:10 
  0 siblings, 0 replies; 9+ messages in thread
From:  @ 2018-02-22  0:10 UTC (permalink / raw)
  To: spdk

[-- Attachment #1: Type: text/plain, Size: 8626 bytes --]

Hi Paul,


Thank you for informing the WIP patch to me.

I knew the existence of it but now I may feel closer to it than before.

I'm not sure if I can review it but I'll read it again.


 Thanks,

Shuhei



________________________________
差出人: SPDK <spdk-bounces(a)lists.01.org> が Luse, Paul E <paul.e.luse(a)intel.com> の代理で送信
送信日時: 2018年2月22日 6:59
宛先: Storage Performance Development Kit
件名: [!]Re: [SPDK] About mouting Blobstore and Lvolstore


Hi Shuhei,



I too have been learning a little more about bdev’s and “binding”.  Most (I think all) of the modules listed below all make some determination based on what they read on disk but it’s also possible for a virtual bdev module to bind based on config file info, you can see this in the split vbdev for example or in a WIP patch example passthru vbdev that I’ve working on at https://review.gerrithub.io/#/c/399768/

Gerrit Code Review<https://review.gerrithub.io/#/c/399768/>
review.gerrithub.io
Keep in touch. Copyright © 2018 | GerritForge Ltd. info(a)gerritforge.com www.gerritforge.com





(which may not be 100% correct right now but feedback/questions are welcome)



Thx,

Paul



From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Szwed, Maciej
Sent: Wednesday, February 21, 2018 10:37 AM
To: Storage Performance Development Kit <spdk(a)lists.01.org>
Subject: Re: [SPDK] About mouting Blobstore and Lvolstore



I understood that if lvs and lovs are already persisted, creating the bdev that has them would be enough in the next reboot.

That’s correct.



Maciek



From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of ???? / MATSUMOTO,SHUUHEI
Sent: Wednesday, February 21, 2018 12:19 AM
To: Storage Performance Development Kit <spdk(a)lists.01.org<mailto:spdk(a)lists.01.org>>
Subject: Re: [SPDK] About mouting Blobstore and Lvolstore



Hi Tomek, Jim,



Thanks you so much for your perfect answer.

A few minutes ago I noticed the examine mechanism and started to read it but spending lots of time would be expected if I don't have your reply.

Now Jim's reply is clear for me too.



I understood that if lvs and lovs are already persisted, creating the bdev that has them would be enough in the next reboot.

I'll continue my learning.



Thanks,

Shuhei



________________________________

差出人: SPDK <spdk-bounces(a)lists.01.org<mailto:spdk-bounces(a)lists.01.org>> が Zawadzki, Tomasz <tomasz.zawadzki(a)intel.com<mailto:tomasz.zawadzki(a)intel.com>> の代理で送信
送信日時: 2018年2月21日 16:02
宛先: Storage Performance Development Kit
件名: [!]Re: [SPDK] About mouting Blobstore and Lvolstore



Hi Shuhei,



Just like Jim have mentioned:

-          blobstore (lib/blobstore) handles persistent allocation of data and metadata

-          lvol (lib/lvol) implements logic for creation of blobstore/blobs and managing relevant metadata (like lvs uuid, lvs name and lvol name)

-          vbdev_lvol (lib/bdev/lvol) exposes lvols via bdev layer



Please see http://www.spdk.io/doc/logical_volumes.html for description and RPC regarding lvols. After creation lvs and lvols are persisted on the device that they were created on.

SPDK: Logical Volumes Introduction<http://www.spdk.io/doc/logical_volumes.html>

www.spdk.io<http://www.spdk.io>

Storage Performance Development Kit - SPDK<http://www.spdk.io/>
www.spdk.io
The Storage Performance Development Kit (SPDK) provides a set of tools and libraries for writing high performance, scalable, user-mode storage applications. It ...



The Logical Volumes library is a flexible storage space management system. It provides creating and managing virtual block devices with variable size.






As soon as that device is added to SPDK, it is examined for lvol store presence – if it’s there, it’s loaded.

This examine process is generic for bdev. When spdk_bdev is registered, examine callback is issued for all bdev types that assigned it. At this time this mechanism is used by lvols, GPT, split and error.

For details please see functions like _spdk_bdev_register(), SPDK_BDEV_MODULE_REGISTER and specifically for lvol - vbdev_lvs_examine().



For example from RPC point of view. As soon as NVMe device is added (construct_nvme_bdev RPC) and it contained lvs with lvols, they are immediately exposed as bdevs. Just like they were before previous SPDK instance run was closed.



Thanks,

Tomek



From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of ???? / MATSUMOTO,SHUUHEI
Sent: Wednesday, February 21, 2018 1:43 AM
To: Storage Performance Development Kit <spdk(a)lists.01.org<mailto:spdk(a)lists.01.org>>
Subject: Re: [SPDK] About mouting Blobstore and Lvolstore



Hi Jim,



We have discussed that JSON config file may be better to be a list of JSON RPC request first.



However for lvol and lvolstore, metadata and data are already persistent in the blobstore.

Hence JSON config file will not be direct solution.



If I understanding correctly, the implementation that lvol and lvolstore are automatically made available when mouting may be the way many hope.



Please revise me if my understanding is wrong.



Thanks,

Shuhei



________________________________

差出人: SPDK <spdk-bounces(a)lists.01.org<mailto:spdk-bounces(a)lists.01.org>> が 松本周平 / MATSUMOTO,SHUUHEI <shuhei.matsumoto.xt(a)hitachi.com<mailto:shuhei.matsumoto.xt(a)hitachi.com>> の代理で送信
送信日時: 2018年2月21日 9:19
宛先: Storage Performance Development Kit
件名: [!]Re: [SPDK] About mouting Blobstore and Lvolstore



Hi Jim,



Thank you but my question might not be clear.

What I would like to know is that how to ensure that each LVOL is attached to the same blobstore and blob after rebooting.



The name of lvol_bdev is returned by creation and is lvolstore_uuid + blob_id.

However I have not seen any code to use the name of lvol_bdev for lvol creation.

If the name of lvol_bdev is used to allocate lvol to blob, the same blob will be ensured to be allocated.



Do you have any good idea or the solution is already implemented about how lvol library satisfies the responsibility?



I hope this make sense to you.



Thanks,

Shuhei

________________________________

差出人: SPDK <spdk-bounces(a)lists.01.org<mailto:spdk-bounces(a)lists.01.org>> が Harris, James R <james.r.harris(a)intel.com<mailto:james.r.harris(a)intel.com>> の代理で送信
送信日時: 2018年2月21日 9:09:02
宛先: Storage Performance Development Kit
件名: [!]Re: [SPDK] About mouting Blobstore and Lvolstore



Hi Shuhei,



Blobstore is meant as a generic persistent block allocator.  Lvolstore is an SPDK logical volume implementation based on Blobstore to present blobs as a block device.  Blobfs is a minimal SPDK filesystem based on Blobstore to present blobs as files.  So for purposes of library dependencies – both lvolstore and blobfs depend on Blobstore.



Regarding “mounting” a logical volume – the lib/bdev/lvol library is responsible for presenting logical volumes as SPDK bdevs.



Regards,



-Jim









From: SPDK <spdk-bounces(a)lists.01.org<mailto:spdk-bounces(a)lists.01.org>> on behalf of 松本周平 / MATSUMOTO,SHUUHEI <shuhei.matsumoto.xt(a)hitachi.com<mailto:shuhei.matsumoto.xt(a)hitachi.com>>
Reply-To: Storage Performance Development Kit <spdk(a)lists.01.org<mailto:spdk(a)lists.01.org>>
Date: Tuesday, February 20, 2018 at 4:02 PM
To: "spdk(a)lists.01.org<mailto:spdk(a)lists.01.org>" <spdk(a)lists.01.org<mailto:spdk(a)lists.01.org>>
Subject: [SPDK] About mouting Blobstore and Lvolstore



Hi All,



I'm investigating the dependency relationship among SPDK libraries and subsystems mainly for JSON configuration management.



I understand that blobstore manages metadata persistently.

However I have not found anything about mouting blobstore or lvolstore in  source code, Trello, or document yet.



Mouting in this case means a process by which SPDK makes lvolstore and lvol on disks available for user to access via virtual bdev.



Am I missing something or have I totally misunderstood?

Otherwise mounting function is great to have for us?



This question is only from code and document reading.

I'm not confident in my understanding yet and I would appreciate for your any feedback.



Thanks,

Shuhei

[-- Attachment #2: attachment.html --]
[-- Type: text/html, Size: 41455 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [SPDK] About mouting Blobstore and Lvolstore
@ 2018-02-21 21:59 Luse, Paul E
  0 siblings, 0 replies; 9+ messages in thread
From: Luse, Paul E @ 2018-02-21 21:59 UTC (permalink / raw)
  To: spdk

[-- Attachment #1: Type: text/plain, Size: 7625 bytes --]

Hi Shuhei,

I too have been learning a little more about bdev’s and “binding”.  Most (I think all) of the modules listed below all make some determination based on what they read on disk but it’s also possible for a virtual bdev module to bind based on config file info, you can see this in the split vbdev for example or in a WIP patch example passthru vbdev that I’ve working on at https://review.gerrithub.io/#/c/399768/

(which may not be 100% correct right now but feedback/questions are welcome)

Thx,
Paul

From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of Szwed, Maciej
Sent: Wednesday, February 21, 2018 10:37 AM
To: Storage Performance Development Kit <spdk(a)lists.01.org>
Subject: Re: [SPDK] About mouting Blobstore and Lvolstore


I understood that if lvs and lovs are already persisted, creating the bdev that has them would be enough in the next reboot.
That’s correct.

Maciek

From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of ???? / MATSUMOTO,SHUUHEI
Sent: Wednesday, February 21, 2018 12:19 AM
To: Storage Performance Development Kit <spdk(a)lists.01.org<mailto:spdk(a)lists.01.org>>
Subject: Re: [SPDK] About mouting Blobstore and Lvolstore


Hi Tomek, Jim,



Thanks you so much for your perfect answer.

A few minutes ago I noticed the examine mechanism and started to read it but spending lots of time would be expected if I don't have your reply.

Now Jim's reply is clear for me too.



I understood that if lvs and lovs are already persisted, creating the bdev that has them would be enough in the next reboot.

I'll continue my learning.



Thanks,

Shuhei

________________________________
差出人: SPDK <spdk-bounces(a)lists.01.org<mailto:spdk-bounces(a)lists.01.org>> が Zawadzki, Tomasz <tomasz.zawadzki(a)intel.com<mailto:tomasz.zawadzki(a)intel.com>> の代理で送信
送信日時: 2018年2月21日 16:02
宛先: Storage Performance Development Kit
件名: [!]Re: [SPDK] About mouting Blobstore and Lvolstore


Hi Shuhei,



Just like Jim have mentioned:

-          blobstore (lib/blobstore) handles persistent allocation of data and metadata

-          lvol (lib/lvol) implements logic for creation of blobstore/blobs and managing relevant metadata (like lvs uuid, lvs name and lvol name)

-          vbdev_lvol (lib/bdev/lvol) exposes lvols via bdev layer



Please see http://www.spdk.io/doc/logical_volumes.html for description and RPC regarding lvols. After creation lvs and lvols are persisted on the device that they were created on.
SPDK: Logical Volumes Introduction<http://www.spdk.io/doc/logical_volumes.html>
www.spdk.io<http://www.spdk.io>
The Logical Volumes library is a flexible storage space management system. It provides creating and managing virtual block devices with variable size.





As soon as that device is added to SPDK, it is examined for lvol store presence - if it’s there, it’s loaded.

This examine process is generic for bdev. When spdk_bdev is registered, examine callback is issued for all bdev types that assigned it. At this time this mechanism is used by lvols, GPT, split and error.

For details please see functions like _spdk_bdev_register(), SPDK_BDEV_MODULE_REGISTER and specifically for lvol - vbdev_lvs_examine().



For example from RPC point of view. As soon as NVMe device is added (construct_nvme_bdev RPC) and it contained lvs with lvols, they are immediately exposed as bdevs. Just like they were before previous SPDK instance run was closed.



Thanks,

Tomek



From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of ???? / MATSUMOTO,SHUUHEI
Sent: Wednesday, February 21, 2018 1:43 AM
To: Storage Performance Development Kit <spdk(a)lists.01.org<mailto:spdk(a)lists.01.org>>
Subject: Re: [SPDK] About mouting Blobstore and Lvolstore



Hi Jim,



We have discussed that JSON config file may be better to be a list of JSON RPC request first.



However for lvol and lvolstore, metadata and data are already persistent in the blobstore.

Hence JSON config file will not be direct solution.



If I understanding correctly, the implementation that lvol and lvolstore are automatically made available when mouting may be the way many hope.



Please revise me if my understanding is wrong.



Thanks,

Shuhei



________________________________

差出人: SPDK <spdk-bounces(a)lists.01.org<mailto:spdk-bounces(a)lists.01.org>> が 松本周平 / MATSUMOTO,SHUUHEI <shuhei.matsumoto.xt(a)hitachi.com<mailto:shuhei.matsumoto.xt(a)hitachi.com>> の代理で送信
送信日時: 2018年2月21日 9:19
宛先: Storage Performance Development Kit
件名: [!]Re: [SPDK] About mouting Blobstore and Lvolstore



Hi Jim,



Thank you but my question might not be clear.

What I would like to know is that how to ensure that each LVOL is attached to the same blobstore and blob after rebooting.



The name of lvol_bdev is returned by creation and is lvolstore_uuid + blob_id.

However I have not seen any code to use the name of lvol_bdev for lvol creation.

If the name of lvol_bdev is used to allocate lvol to blob, the same blob will be ensured to be allocated.



Do you have any good idea or the solution is already implemented about how lvol library satisfies the responsibility?



I hope this make sense to you.



Thanks,

Shuhei

________________________________

差出人: SPDK <spdk-bounces(a)lists.01.org<mailto:spdk-bounces(a)lists.01.org>> が Harris, James R <james.r.harris(a)intel.com<mailto:james.r.harris(a)intel.com>> の代理で送信
送信日時: 2018年2月21日 9:09:02
宛先: Storage Performance Development Kit
件名: [!]Re: [SPDK] About mouting Blobstore and Lvolstore



Hi Shuhei,



Blobstore is meant as a generic persistent block allocator.  Lvolstore is an SPDK logical volume implementation based on Blobstore to present blobs as a block device.  Blobfs is a minimal SPDK filesystem based on Blobstore to present blobs as files.  So for purposes of library dependencies - both lvolstore and blobfs depend on Blobstore.



Regarding “mounting” a logical volume - the lib/bdev/lvol library is responsible for presenting logical volumes as SPDK bdevs.



Regards,



-Jim









From: SPDK <spdk-bounces(a)lists.01.org<mailto:spdk-bounces(a)lists.01.org>> on behalf of 松本周平 / MATSUMOTO,SHUUHEI <shuhei.matsumoto.xt(a)hitachi.com<mailto:shuhei.matsumoto.xt(a)hitachi.com>>
Reply-To: Storage Performance Development Kit <spdk(a)lists.01.org<mailto:spdk(a)lists.01.org>>
Date: Tuesday, February 20, 2018 at 4:02 PM
To: "spdk(a)lists.01.org<mailto:spdk(a)lists.01.org>" <spdk(a)lists.01.org<mailto:spdk(a)lists.01.org>>
Subject: [SPDK] About mouting Blobstore and Lvolstore



Hi All,



I'm investigating the dependency relationship among SPDK libraries and subsystems mainly for JSON configuration management.



I understand that blobstore manages metadata persistently.

However I have not found anything about mouting blobstore or lvolstore in  source code, Trello, or document yet.



Mouting in this case means a process by which SPDK makes lvolstore and lvol on disks available for user to access via virtual bdev.



Am I missing something or have I totally misunderstood?

Otherwise mounting function is great to have for us?



This question is only from code and document reading.

I'm not confident in my understanding yet and I would appreciate for your any feedback.



Thanks,

Shuhei

[-- Attachment #2: attachment.html --]
[-- Type: text/html, Size: 38545 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [SPDK] About mouting Blobstore and Lvolstore
@ 2018-02-21 17:36 Szwed, Maciej
  0 siblings, 0 replies; 9+ messages in thread
From: Szwed, Maciej @ 2018-02-21 17:36 UTC (permalink / raw)
  To: spdk

[-- Attachment #1: Type: text/plain, Size: 6817 bytes --]

I understood that if lvs and lovs are already persisted, creating the bdev that has them would be enough in the next reboot.
That’s correct.

Maciek

From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of ???? / MATSUMOTO,SHUUHEI
Sent: Wednesday, February 21, 2018 12:19 AM
To: Storage Performance Development Kit <spdk(a)lists.01.org>
Subject: Re: [SPDK] About mouting Blobstore and Lvolstore


Hi Tomek, Jim,



Thanks you so much for your perfect answer.

A few minutes ago I noticed the examine mechanism and started to read it but spending lots of time would be expected if I don't have your reply.

Now Jim's reply is clear for me too.



I understood that if lvs and lovs are already persisted, creating the bdev that has them would be enough in the next reboot.

I'll continue my learning.



Thanks,

Shuhei

________________________________
差出人: SPDK <spdk-bounces(a)lists.01.org<mailto:spdk-bounces(a)lists.01.org>> が Zawadzki, Tomasz <tomasz.zawadzki(a)intel.com<mailto:tomasz.zawadzki(a)intel.com>> の代理で送信
送信日時: 2018年2月21日 16:02
宛先: Storage Performance Development Kit
件名: [!]Re: [SPDK] About mouting Blobstore and Lvolstore


Hi Shuhei,



Just like Jim have mentioned:

-          blobstore (lib/blobstore) handles persistent allocation of data and metadata

-          lvol (lib/lvol) implements logic for creation of blobstore/blobs and managing relevant metadata (like lvs uuid, lvs name and lvol name)

-          vbdev_lvol (lib/bdev/lvol) exposes lvols via bdev layer



Please see http://www.spdk.io/doc/logical_volumes.html for description and RPC regarding lvols. After creation lvs and lvols are persisted on the device that they were created on.
SPDK: Logical Volumes Introduction<http://www.spdk.io/doc/logical_volumes.html>
www.spdk.io<http://www.spdk.io>
The Logical Volumes library is a flexible storage space management system. It provides creating and managing virtual block devices with variable size.





As soon as that device is added to SPDK, it is examined for lvol store presence - if it’s there, it’s loaded.

This examine process is generic for bdev. When spdk_bdev is registered, examine callback is issued for all bdev types that assigned it. At this time this mechanism is used by lvols, GPT, split and error.

For details please see functions like _spdk_bdev_register(), SPDK_BDEV_MODULE_REGISTER and specifically for lvol - vbdev_lvs_examine().



For example from RPC point of view. As soon as NVMe device is added (construct_nvme_bdev RPC) and it contained lvs with lvols, they are immediately exposed as bdevs. Just like they were before previous SPDK instance run was closed.



Thanks,

Tomek



From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of ???? / MATSUMOTO,SHUUHEI
Sent: Wednesday, February 21, 2018 1:43 AM
To: Storage Performance Development Kit <spdk(a)lists.01.org<mailto:spdk(a)lists.01.org>>
Subject: Re: [SPDK] About mouting Blobstore and Lvolstore



Hi Jim,



We have discussed that JSON config file may be better to be a list of JSON RPC request first.



However for lvol and lvolstore, metadata and data are already persistent in the blobstore.

Hence JSON config file will not be direct solution.



If I understanding correctly, the implementation that lvol and lvolstore are automatically made available when mouting may be the way many hope.



Please revise me if my understanding is wrong.



Thanks,

Shuhei



________________________________

差出人: SPDK <spdk-bounces(a)lists.01.org<mailto:spdk-bounces(a)lists.01.org>> が 松本周平 / MATSUMOTO,SHUUHEI <shuhei.matsumoto.xt(a)hitachi.com<mailto:shuhei.matsumoto.xt(a)hitachi.com>> の代理で送信
送信日時: 2018年2月21日 9:19
宛先: Storage Performance Development Kit
件名: [!]Re: [SPDK] About mouting Blobstore and Lvolstore



Hi Jim,



Thank you but my question might not be clear.

What I would like to know is that how to ensure that each LVOL is attached to the same blobstore and blob after rebooting.



The name of lvol_bdev is returned by creation and is lvolstore_uuid + blob_id.

However I have not seen any code to use the name of lvol_bdev for lvol creation.

If the name of lvol_bdev is used to allocate lvol to blob, the same blob will be ensured to be allocated.



Do you have any good idea or the solution is already implemented about how lvol library satisfies the responsibility?



I hope this make sense to you.



Thanks,

Shuhei

________________________________

差出人: SPDK <spdk-bounces(a)lists.01.org<mailto:spdk-bounces(a)lists.01.org>> が Harris, James R <james.r.harris(a)intel.com<mailto:james.r.harris(a)intel.com>> の代理で送信
送信日時: 2018年2月21日 9:09:02
宛先: Storage Performance Development Kit
件名: [!]Re: [SPDK] About mouting Blobstore and Lvolstore



Hi Shuhei,



Blobstore is meant as a generic persistent block allocator.  Lvolstore is an SPDK logical volume implementation based on Blobstore to present blobs as a block device.  Blobfs is a minimal SPDK filesystem based on Blobstore to present blobs as files.  So for purposes of library dependencies - both lvolstore and blobfs depend on Blobstore.



Regarding “mounting” a logical volume - the lib/bdev/lvol library is responsible for presenting logical volumes as SPDK bdevs.



Regards,



-Jim









From: SPDK <spdk-bounces(a)lists.01.org<mailto:spdk-bounces(a)lists.01.org>> on behalf of 松本周平 / MATSUMOTO,SHUUHEI <shuhei.matsumoto.xt(a)hitachi.com<mailto:shuhei.matsumoto.xt(a)hitachi.com>>
Reply-To: Storage Performance Development Kit <spdk(a)lists.01.org<mailto:spdk(a)lists.01.org>>
Date: Tuesday, February 20, 2018 at 4:02 PM
To: "spdk(a)lists.01.org<mailto:spdk(a)lists.01.org>" <spdk(a)lists.01.org<mailto:spdk(a)lists.01.org>>
Subject: [SPDK] About mouting Blobstore and Lvolstore



Hi All,



I'm investigating the dependency relationship among SPDK libraries and subsystems mainly for JSON configuration management.



I understand that blobstore manages metadata persistently.

However I have not found anything about mouting blobstore or lvolstore in  source code, Trello, or document yet.



Mouting in this case means a process by which SPDK makes lvolstore and lvol on disks available for user to access via virtual bdev.



Am I missing something or have I totally misunderstood?

Otherwise mounting function is great to have for us?



This question is only from code and document reading.

I'm not confident in my understanding yet and I would appreciate for your any feedback.



Thanks,

Shuhei

[-- Attachment #2: attachment.html --]
[-- Type: text/html, Size: 37447 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [SPDK] About mouting Blobstore and Lvolstore
@ 2018-02-21  7:18 
  0 siblings, 0 replies; 9+ messages in thread
From:  @ 2018-02-21  7:18 UTC (permalink / raw)
  To: spdk

[-- Attachment #1: Type: text/plain, Size: 6286 bytes --]

Hi Tomek, Jim,


Thanks you so much for your perfect answer.

A few minutes ago I noticed the examine mechanism and started to read it but spending lots of time would be expected if I don't have your reply.

Now Jim's reply is clear for me too.


I understood that if lvs and lovs are already persisted, creating the bdev that has them would be enough in the next reboot.

I'll continue my learning.


Thanks,

Shuhei


________________________________
差出人: SPDK <spdk-bounces(a)lists.01.org> が Zawadzki, Tomasz <tomasz.zawadzki(a)intel.com> の代理で送信
送信日�: 2018年2月21日 16:02
宛先: Storage Performance Development Kit
件名: [!]Re: [SPDK] About mouting Blobstore and Lvolstore


Hi Shuhei,



Just like Jim have mentioned:

-          blobstore (lib/blobstore) handles persistent allocation of data and metadata

-          lvol (lib/lvol) implements logic for creation of blobstore/blobs and managing relevant metadata (like lvs uuid, lvs name and lvol name)

-          vbdev_lvol (lib/bdev/lvol) exposes lvols via bdev layer



Please see http://www.spdk.io/doc/logical_volumes.html for description and RPC regarding lvols. After creation lvs and lvols are persisted on the device that they were created on.

SPDK: Logical Volumes Introduction<http://www.spdk.io/doc/logical_volumes.html>
www.spdk.io
The Logical Volumes library is a flexible storage space management system. It provides creating and managing virtual block devices with variable size.





As soon as that device is added to SPDK, it is examined for lvol store presence � if it’s there, it’s loaded.

This examine process is generic for bdev. When spdk_bdev is registered, examine callback is issued for all bdev types that assigned it. At this time this mechanism is used by lvols, GPT, split and error.

For details please see functions like _spdk_bdev_register(), SPDK_BDEV_MODULE_REGISTER and specifically for lvol - vbdev_lvs_examine().



For example from RPC point of view. As soon as NVMe device is added (construct_nvme_bdev RPC) and it contained lvs with lvols, they are immediately exposed as bdevs. Just like they were before previous SPDK instance run was closed.



Thanks,

Tomek



From: SPDK [mailto:spdk-bounces(a)lists.01.org] On Behalf Of ???? / MATSUMOTO,SHUUHEI
Sent: Wednesday, February 21, 2018 1:43 AM
To: Storage Performance Development Kit <spdk(a)lists.01.org>
Subject: Re: [SPDK] About mouting Blobstore and Lvolstore



Hi Jim,



We have discussed that JSON config file may be better to be a list of JSON RPC request first.



However for lvol and lvolstore, metadata and data are already persistent in the blobstore.

Hence JSON config file will not be direct solution.



If I understanding correctly, the implementation that lvol and lvolstore are automatically made available when mouting may be the way many hope.



Please revise me if my understanding is wrong.



Thanks,

Shuhei



________________________________

差出人: SPDK <spdk-bounces(a)lists.01.org<mailto:spdk-bounces(a)lists.01.org>> が 松本周平 / MATSUMOTO,SHUUHEI <shuhei.matsumoto.xt(a)hitachi.com<mailto:shuhei.matsumoto.xt(a)hitachi.com>> の代理で送信
送信日�: 2018年2月21日 9:19
宛先: Storage Performance Development Kit
件名: [!]Re: [SPDK] About mouting Blobstore and Lvolstore



Hi Jim,



Thank you but my question might not be clear.

What I would like to know is that how to ensure that each LVOL is attached to the same blobstore and blob after rebooting.



The name of lvol_bdev is returned by creation and is lvolstore_uuid + blob_id.

However I have not seen any code to use the name of lvol_bdev for lvol creation.

If the name of lvol_bdev is used to allocate lvol to blob, the same blob will be ensured to be allocated.



Do you have any good idea or the solution is already implemented about how lvol library satisfies the responsibility?



I hope this make sense to you.



Thanks,

Shuhei

________________________________

差出人: SPDK <spdk-bounces(a)lists.01.org<mailto:spdk-bounces(a)lists.01.org>> が Harris, James R <james.r.harris(a)intel.com<mailto:james.r.harris(a)intel.com>> の代理で送信
送信日�: 2018年2月21日 9:09:02
宛先: Storage Performance Development Kit
件名: [!]Re: [SPDK] About mouting Blobstore and Lvolstore



Hi Shuhei,



Blobstore is meant as a generic persistent block allocator.  Lvolstore is an SPDK logical volume implementation based on Blobstore to present blobs as a block device.  Blobfs is a minimal SPDK filesystem based on Blobstore to present blobs as files.  So for purposes of library dependencies � both lvolstore and blobfs depend on Blobstore.



Regarding “mounting” a logical volume � the lib/bdev/lvol library is responsible for presenting logical volumes as SPDK bdevs.



Regards,



-Jim









From: SPDK <spdk-bounces(a)lists.01.org<mailto:spdk-bounces(a)lists.01.org>> on behalf of 松本周平 / MATSUMOTO,SHUUHEI <shuhei.matsumoto.xt(a)hitachi.com<mailto:shuhei.matsumoto.xt(a)hitachi.com>>
Reply-To: Storage Performance Development Kit <spdk(a)lists.01.org<mailto:spdk(a)lists.01.org>>
Date: Tuesday, February 20, 2018 at 4:02 PM
To: "spdk(a)lists.01.org<mailto:spdk(a)lists.01.org>" <spdk(a)lists.01.org<mailto:spdk(a)lists.01.org>>
Subject: [SPDK] About mouting Blobstore and Lvolstore



Hi All,



I'm investigating the dependency relationship among SPDK libraries and subsystems mainly for JSON configuration management.



I understand that blobstore manages metadata persistently.

However I have not found anything about mouting blobstore or lvolstore in  source code, Trello, or document yet.



Mouting in this case means a process by which SPDK makes lvolstore and lvol on disks available for user to access via virtual bdev.



Am I missing something or have I totally misunderstood?

Otherwise mounting function is great to have for us?



This question is only from code and document reading.

I'm not confident in my understanding yet and I would appreciate for your any feedback.



Thanks,

Shuhei

[-- Attachment #2: attachment.html --]
[-- Type: text/html, Size: 27012 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [SPDK] About mouting Blobstore and Lvolstore
@ 2018-02-21  0:43 
  0 siblings, 0 replies; 9+ messages in thread
From:  @ 2018-02-21  0:43 UTC (permalink / raw)
  To: spdk

[-- Attachment #1: Type: text/plain, Size: 3408 bytes --]

Hi Jim,


We have discussed that JSON config file may be better to be a list of JSON RPC request first.


However for lvol and lvolstore, metadata and data are already persistent in the blobstore.

Hence JSON config file will not be direct solution.


If I understanding correctly, the implementation that lvol and lvolstore are automatically made available when mouting may be the way many hope.


Please revise me if my understanding is wrong.


Thanks,

Shuhei

________________________________
差出人: SPDK <spdk-bounces(a)lists.01.org> が 松本周平 / MATSUMOTO,SHUUHEI <shuhei.matsumoto.xt(a)hitachi.com> の代理で送信
送信日�: 2018年2月21日 9:19
宛先: Storage Performance Development Kit
件名: [!]Re: [SPDK] About mouting Blobstore and Lvolstore


Hi Jim,


Thank you but my question might not be clear.

What I would like to know is that how to ensure that each LVOL is attached to the same blobstore and blob after rebooting.


The name of lvol_bdev is returned by creation and is lvolstore_uuid + blob_id.

However I have not seen any code to use the name of lvol_bdev for lvol creation.

If the name of lvol_bdev is used to allocate lvol to blob, the same blob will be ensured to be allocated.


Do you have any good idea or the solution is already implemented about how lvol library satisfies the responsibility?


I hope this make sense to you.


Thanks,

Shuhei

________________________________
差出人: SPDK <spdk-bounces(a)lists.01.org> が Harris, James R <james.r.harris(a)intel.com> の代理で送信
送信日�: 2018年2月21日 9:09:02
宛先: Storage Performance Development Kit
件名: [!]Re: [SPDK] About mouting Blobstore and Lvolstore


Hi Shuhei,



Blobstore is meant as a generic persistent block allocator.  Lvolstore is an SPDK logical volume implementation based on Blobstore to present blobs as a block device.  Blobfs is a minimal SPDK filesystem based on Blobstore to present blobs as files.  So for purposes of library dependencies � both lvolstore and blobfs depend on Blobstore.



Regarding “mounting” a logical volume � the lib/bdev/lvol library is responsible for presenting logical volumes as SPDK bdevs.



Regards,



-Jim









From: SPDK <spdk-bounces(a)lists.01.org> on behalf of 松本周平 / MATSUMOTO,SHUUHEI <shuhei.matsumoto.xt(a)hitachi.com>
Reply-To: Storage Performance Development Kit <spdk(a)lists.01.org>
Date: Tuesday, February 20, 2018 at 4:02 PM
To: "spdk(a)lists.01.org" <spdk(a)lists.01.org>
Subject: [SPDK] About mouting Blobstore and Lvolstore



Hi All,



I'm investigating the dependency relationship among SPDK libraries and subsystems mainly for JSON configuration management.



I understand that blobstore manages metadata persistently.

However I have not found anything about mouting blobstore or lvolstore in  source code, Trello, or document yet.



Mouting in this case means a process by which SPDK makes lvolstore and lvol on disks available for user to access via virtual bdev.



Am I missing something or have I totally misunderstood?

Otherwise mounting function is great to have for us?



This question is only from code and document reading.

I'm not confident in my understanding yet and I would appreciate for your any feedback.



Thanks,

Shuhei

[-- Attachment #2: attachment.html --]
[-- Type: text/html, Size: 9320 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [SPDK] About mouting Blobstore and Lvolstore
@ 2018-02-21  0:19 
  0 siblings, 0 replies; 9+ messages in thread
From:  @ 2018-02-21  0:19 UTC (permalink / raw)
  To: spdk

[-- Attachment #1: Type: text/plain, Size: 2600 bytes --]

Hi Jim,


Thank you but my question might not be clear.

What I would like to know is that how to ensure that each LVOL is attached to the same blobstore and blob after rebooting.


The name of lvol_bdev is returned by creation and is lvolstore_uuid + blob_id.

However I have not seen any code to use the name of lvol_bdev for lvol creation.

If the name of lvol_bdev is used to allocate lvol to blob, the same blob will be ensured to be allocated.


Do you have any good idea or the solution is already implemented about how lvol library satisfies the responsibility?


I hope this make sense to you.


Thanks,

Shuhei

________________________________
差出人: SPDK <spdk-bounces(a)lists.01.org> が Harris, James R <james.r.harris(a)intel.com> の代理で送信
送信日�: 2018年2月21日 9:09:02
宛先: Storage Performance Development Kit
件名: [!]Re: [SPDK] About mouting Blobstore and Lvolstore


Hi Shuhei,



Blobstore is meant as a generic persistent block allocator.  Lvolstore is an SPDK logical volume implementation based on Blobstore to present blobs as a block device.  Blobfs is a minimal SPDK filesystem based on Blobstore to present blobs as files.  So for purposes of library dependencies � both lvolstore and blobfs depend on Blobstore.



Regarding “mounting” a logical volume � the lib/bdev/lvol library is responsible for presenting logical volumes as SPDK bdevs.



Regards,



-Jim









From: SPDK <spdk-bounces(a)lists.01.org> on behalf of 松本周平 / MATSUMOTO,SHUUHEI <shuhei.matsumoto.xt(a)hitachi.com>
Reply-To: Storage Performance Development Kit <spdk(a)lists.01.org>
Date: Tuesday, February 20, 2018 at 4:02 PM
To: "spdk(a)lists.01.org" <spdk(a)lists.01.org>
Subject: [SPDK] About mouting Blobstore and Lvolstore



Hi All,



I'm investigating the dependency relationship among SPDK libraries and subsystems mainly for JSON configuration management.



I understand that blobstore manages metadata persistently.

However I have not found anything about mouting blobstore or lvolstore in  source code, Trello, or document yet.



Mouting in this case means a process by which SPDK makes lvolstore and lvol on disks available for user to access via virtual bdev.



Am I missing something or have I totally misunderstood?

Otherwise mounting function is great to have for us?



This question is only from code and document reading.

I'm not confident in my understanding yet and I would appreciate for your any feedback.



Thanks,

Shuhei

[-- Attachment #2: attachment.html --]
[-- Type: text/html, Size: 7993 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [SPDK] About mouting Blobstore and Lvolstore
@ 2018-02-21  0:09 Harris, James R
  0 siblings, 0 replies; 9+ messages in thread
From: Harris, James R @ 2018-02-21  0:09 UTC (permalink / raw)
  To: spdk

[-- Attachment #1: Type: text/plain, Size: 1626 bytes --]

Hi Shuhei,

Blobstore is meant as a generic persistent block allocator.  Lvolstore is an SPDK logical volume implementation based on Blobstore to present blobs as a block device.  Blobfs is a minimal SPDK filesystem based on Blobstore to present blobs as files.  So for purposes of library dependencies – both lvolstore and blobfs depend on Blobstore.

Regarding “mounting” a logical volume – the lib/bdev/lvol library is responsible for presenting logical volumes as SPDK bdevs.

Regards,

-Jim




From: SPDK <spdk-bounces(a)lists.01.org> on behalf of 松本周平 / MATSUMOTO,SHUUHEI <shuhei.matsumoto.xt(a)hitachi.com>
Reply-To: Storage Performance Development Kit <spdk(a)lists.01.org>
Date: Tuesday, February 20, 2018 at 4:02 PM
To: "spdk(a)lists.01.org" <spdk(a)lists.01.org>
Subject: [SPDK] About mouting Blobstore and Lvolstore


Hi All,



I'm investigating the dependency relationship among SPDK libraries and subsystems mainly for JSON configuration management.



I understand that blobstore manages metadata persistently.

However I have not found anything about mouting blobstore or lvolstore in  source code, Trello, or document yet.



Mouting in this case means a process by which SPDK makes lvolstore and lvol on disks available for user to access via virtual bdev.



Am I missing something or have I totally misunderstood?

Otherwise mounting function is great to have for us?



This question is only from code and document reading.

I'm not confident in my understanding yet and I would appreciate for your any feedback.



Thanks,

Shuhei

[-- Attachment #2: attachment.html --]
[-- Type: text/html, Size: 7055 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [SPDK] About mouting Blobstore and Lvolstore
@ 2018-02-20 23:02 
  0 siblings, 0 replies; 9+ messages in thread
From:  @ 2018-02-20 23:02 UTC (permalink / raw)
  To: spdk

[-- Attachment #1: Type: text/plain, Size: 745 bytes --]

Hi All,


I'm investigating the dependency relationship among SPDK libraries and subsystems mainly for JSON configuration management.


I understand that blobstore manages metadata persistently.

However I have not found anything about mouting blobstore or lvolstore in  source code, Trello, or document yet.


Mouting in this case means a process by which SPDK makes lvolstore and lvol on disks available for user to access via virtual bdev.


Am I missing something or have I totally misunderstood?

Otherwise mounting function is great to have for us?


This question is only from code and document reading.

I'm not confident in my understanding yet and I would appreciate for your any feedback.


Thanks,

Shuhei

[-- Attachment #2: attachment.html --]
[-- Type: text/html, Size: 1849 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2018-02-22  0:10 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-21  7:02 [SPDK] About mouting Blobstore and Lvolstore Zawadzki, Tomasz
  -- strict thread matches above, loose matches on Subject: below --
2018-02-22  0:10 
2018-02-21 21:59 Luse, Paul E
2018-02-21 17:36 Szwed, Maciej
2018-02-21  7:18 
2018-02-21  0:43 
2018-02-21  0:19 
2018-02-21  0:09 Harris, James R
2018-02-20 23:02 

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.