History log of /spdk/lib/blob/blobstore.c (Results 26 – 50 of 414)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 516310a5 25-Jul-2023 Alex Michon <amichon@kalrayinc.com>

lib/blob: Clear cluster before releasing due to unneeded allocation

When we allocate a cluster, we may copy parent data to the new cluster.
After this copy is done, we may realize that another IO ch

lib/blob: Clear cluster before releasing due to unneeded allocation

When we allocate a cluster, we may copy parent data to the new cluster.
After this copy is done, we may realize that another IO channel already
allocated the cluster so we no longer need the cluster. We need to
release it. But we need to clear the data. Otherwise, another blob may
claim the cluster and may see garbage data instead of zeroes.

Change-Id: Ib3fb9d4a264371bcaa224855ad0c3c1bbdc93979
Signed-off-by: Alex Michon <amichon@kalrayinc.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/19231
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <jim.harris@samsung.com>
Community-CI: Mellanox Build Bot

show more ...


# b6e74c0d 14-Mar-2024 Alex Michon <amichon@kalrayinc.com>

lib/blob: Add helper to revert cluster allocation

Create helper so we can reuse it in some other places.

Change-Id: I8ad82b0280916031fce8ec7bddfe2172d9570c1b
Signed-off-by: Alex Michon <amichon@kal

lib/blob: Add helper to revert cluster allocation

Create helper so we can reuse it in some other places.

Change-Id: I8ad82b0280916031fce8ec7bddfe2172d9570c1b
Signed-off-by: Alex Michon <amichon@kalrayinc.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/22347
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Jim Harris <jim.harris@samsung.com>

show more ...


# 41fd1f6b 16-Feb-2024 Mateusz Kozlowski <mateusz.kozlowski@solidigm.com>

lib/blob: Release cluster on unmap

Cluster will now be released if an unmap request is sent to an LBA range
that fully covers it.

Change-Id: I2e204a34b6ebea384be0d614801f3e9a20f2fed7
Signed-off-by:

lib/blob: Release cluster on unmap

Cluster will now be released if an unmap request is sent to an LBA range
that fully covers it.

Change-Id: I2e204a34b6ebea384be0d614801f3e9a20f2fed7
Signed-off-by: Mateusz Kozlowski <mateusz.kozlowski@solidigm.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/21907
Reviewed-by: Ben Walker <ben@nvidia.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <jim.harris@samsung.com>
Community-CI: Mellanox Build Bot

show more ...


# 5846a390 19-Feb-2024 Mateusz Kozlowski <mateusz.kozlowski@solidigm.com>

lib/blob: Rename blob_insert_cluster_msg_cpl for more generic usecase

The function will be reused when releasing the clusters. Renaming it and
the supporting struct to something more generic.

Chang

lib/blob: Rename blob_insert_cluster_msg_cpl for more generic usecase

The function will be reused when releasing the clusters. Renaming it and
the supporting struct to something more generic.

Change-Id: Ib3d7107177d9a9370af5ee80cd3b081a34134311
Signed-off-by: Mateusz Kozlowski <mateusz.kozlowski@solidigm.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/21924
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <jim.harris@samsung.com>
Reviewed-by: Ben Walker <ben@nvidia.com>

show more ...


# b0eb3ed8 09-Jan-2024 Tomasz Zawadzki <tomasz.zawadzki@intel.com>

lib/blob: make shrink conditions more clear

The comment and condition order made it difficult to grok,
so make it more clear.

No functional change in this patch.

Signed-off-by: Tomasz Zawadzki <to

lib/blob: make shrink conditions more clear

The comment and condition order made it difficult to grok,
so make it more clear.

No functional change in this patch.

Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Change-Id: I37fad5694eab0de30ad907f58cc2556f61f2f3e7
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/21287
Reviewed-by: Jim Harris <jim.harris@samsung.com>
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>

show more ...


# c5afa2a0 09-Jan-2024 Tomasz Zawadzki <tomasz.zawadzki@intel.com>

lib/blob: allow growing in size in increments less than cluster size

By omission the blobstore could only be grown in increments
of cluster size. For smaller values the grow would fail,
yet that val

lib/blob: allow growing in size in increments less than cluster size

By omission the blobstore could only be grown in increments
of cluster size. For smaller values the grow would fail,
yet that value would still be updated on bs reload.
No change in cluster count would still happen.

It was unnecessary to wait, so now it goes through whole
grow path. In practice only the super block value for device
size changes.

Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Change-Id: I62684d745ea31daf110e8ff62751930f38b95199
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/21286
Community-CI: Mellanox Build Bot
Reviewed-by: Jim Harris <jim.harris@samsung.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>

show more ...


# a6fb074a 08-Sep-2023 Tomasz Zawadzki <tomasz.zawadzki@intel.com>

lib/blob: avoid error paths after grow persists size

Any errors before writing out super block are fine.
Meanwhile errors after, would require writing to
super block again with prior size. If not po

lib/blob: avoid error paths after grow persists size

Any errors before writing out super block are fine.
Meanwhile errors after, would require writing to
super block again with prior size. If not possible again,
handling it would become complex.
Avoid the error rather than trying to change
the super block/metadata format or adding second
persistent step.

This patch creates a bit pool and mask for used_clusters,
so that it can be used once super block is persisted.

Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Change-Id: I554cb4ba078a5e97584afdcc17e9a40b4bdcd672
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/19793
Reviewed-by: Jim Harris <jim.harris@samsung.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>

show more ...


# ffb60487 13-Oct-2023 Tomasz Zawadzki <tomasz.zawadzki@intel.com>

lib/blob: add functionality to grow bs in run-time

spdk_bs_grow() requires unloading the blobstore,
therefore it is basically combining bs load and init
in a way that allows to change the size of bl

lib/blob: add functionality to grow bs in run-time

spdk_bs_grow() requires unloading the blobstore,
therefore it is basically combining bs load and init
in a way that allows to change the size of blobstore.

This provides a clean way to make sure that recreation
of bs_dev (with new block count) results in proper
updates in on-disk metadata and run-time.

It has the obvious drawback of closing all blobs.

This patch introduced spdk_bs_grow_live() that
allows for run-time change of blobstore size.

It has the following caveats:
- bs_dev size has to be changed before calling it
- relies on clean unload for updates of used clusters map

When bs is not unloaded, then recovery path will handle
increasing the size of used clusters map.

Change-Id: I81f8d1ce5652601a7b6109379e319c1231b8415d
Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/19454
Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>
Reviewed-by: Jim Harris <jim.harris@samsung.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Ben Walker <ben@nvidia.com>

show more ...


# ed966159 08-Sep-2023 Tomasz Zawadzki <tomasz.zawadzki@intel.com>

lib/blob: validate super block any time it is read

Super block was validated on bs load (and grow if used),
yet there are other instances where super block is read and
written out.

Validate the sup

lib/blob: validate super block any time it is read

Super block was validated on bs load (and grow if used),
yet there are other instances where super block is read and
written out.

Validate the super block contents after every read,
to make sure any errors are not propagated when it is later
written out.

Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Change-Id: Ibe121655b477b38344c61c63dea15a16c3df73ad
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/19771
Community-CI: Mellanox Build Bot
Reviewed-by: Jim Harris <jim.harris@samsung.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>

show more ...


# f8410506 18-Aug-2023 Tomasz Zawadzki <tomasz.zawadzki@intel.com>

lib/blob: refactor validation of super block

Right now bs_load and bs_grow paths validate the
read super block in exact same way.
Refactor this into separate function for reuse.

Signed-off-by: Toma

lib/blob: refactor validation of super block

Right now bs_load and bs_grow paths validate the
read super block in exact same way.
Refactor this into separate function for reuse.

Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Change-Id: I4d8c5d658d69d1b7901dbc1fb880330d1211ca7a
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/19452
Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <jim.harris@samsung.com>
Reviewed-by: Shuhei Matsumoto <smatsumoto@nvidia.com>

show more ...


Revision tags: v23.05
# dc833ba4 26-May-2023 Mike Gerdts <mgerdts@nvidia.com>

blob: misleading error message when copy xattr

An error path in bs_snapshot_copy_xattr() mentioned a specific xattr
which may or may not be what was being copied. This removes mention of
that xattr.

blob: misleading error message when copy xattr

An error path in bs_snapshot_copy_xattr() mentioned a specific xattr
which may or may not be what was being copied. This removes mention of
that xattr.

Signed-off-by: Mike Gerdts <mgerdts@nvidia.com>
Change-Id: Ia0c31cb83bfda4c8c5b018b5f880a6f5675452e8
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/18397
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>

show more ...


Revision tags: v23.09-pre, v23.01.1
# f7cc6174 18-Apr-2023 Mike Gerdts <mgerdts@nvidia.com>

blob: log blob ID as hex, again

This is a followup to commit f4dc558245b317203676d18e7ecfa9b027f0a02b
which strove to log blob IDs as hex to make small blob IDs more
recognizable. That commit missed

blob: log blob ID as hex, again

This is a followup to commit f4dc558245b317203676d18e7ecfa9b027f0a02b
which strove to log blob IDs as hex to make small blob IDs more
recognizable. That commit missed a few cases where the blob ID is logged
as decimal.

Signed-off-by: Mike Gerdts <mgerdts@nvidia.com>
Change-Id: I75d1b5973ee7e812f7caf0e826d3edbcba126743
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/17641
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@nvidia.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Community-CI: Mellanox Build Bot

show more ...


# 87666f52 11-Apr-2023 Mike Gerdts <mgerdts@nvidia.com>

blob: esnap clones are not clones

spdk_blob_is_clone() should return true only for normal clones. To
detect esnap clones, use spdk_blob_is_esnap_clone(). This also clarifies
documentation of spdk_bl

blob: esnap clones are not clones

spdk_blob_is_clone() should return true only for normal clones. To
detect esnap clones, use spdk_blob_is_esnap_clone(). This also clarifies
documentation of spdk_blob_is_esnap_clone() to match the implementation.

Signed-off-by: Mike Gerdts <mgerdts@nvidia.com>
Change-Id: I9993ab60c1a097531a46fb6760124a632f6857cd
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/17544
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>

show more ...


# 09bf2b20 06-Apr-2023 Mike Gerdts <mgerdts@nvidia.com>

blob: add spdk_blob_is_degraded()

In preparation for supporting degraded lvols, spdk_blob_is_degraded() is
added. To support this, bs_dev gains an optional is_degraded() callback.
spdk_blob_is_degra

blob: add spdk_blob_is_degraded()

In preparation for supporting degraded lvols, spdk_blob_is_degraded() is
added. To support this, bs_dev gains an optional is_degraded() callback.
spdk_blob_is_degraded() returns false so long as no bs_dev that the blob
depends on is degraded. Depended upon bs_devs include the blobstore's
device and the blob's back_bs_dev.

Signed-off-by: Mike Gerdts <mgerdts@nvidia.com>
Change-Id: Ib02227f5735b00038ed30923813e1d5b57deb1ab
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/17516
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>

show more ...


Revision tags: v23.01, v23.05-pre, v23.01-rc1
# 1db33a8f 18-Jan-2023 Mike Gerdts <mgerdts@nvidia.com>

blob: add spdk_blob_get_esnap_bs_dev()

While getting memory domains, vbdev_lvol will need to be able to access
the bdev that acts as the lvol's external snapshot. The introduction of
spdk_blob_get_e

blob: add spdk_blob_get_esnap_bs_dev()

While getting memory domains, vbdev_lvol will need to be able to access
the bdev that acts as the lvol's external snapshot. The introduction of
spdk_blob_get_esnap_bs_dev() facilitates this access.

Signed-off-by: Mike Gerdts <mgerdts@nvidia.com>
Change-Id: I604c957a468392d40b824c3d2afb00cbfe89cd21
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16429
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>

show more ...


# 712ab983 23-Mar-2023 Mike Gerdts <mgerdts@nvidia.com>

blob: set rc to -EINVAL when esnap len too long

When bs_create_blob() is creating the internal xattr for the esnap ID,
it errors out if the ID is too long. This error path neglected to set
the retur

blob: set rc to -EINVAL when esnap len too long

When bs_create_blob() is creating the internal xattr for the esnap ID,
it errors out if the ID is too long. This error path neglected to set
the return value. It now returns -EINVAL in this case.

Signed-off-by: Mike Gerdts <mgerdts@nvidia.com>
Change-Id: I6d756da47f41fb554cd6782add63378e81735118
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/17292
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>

show more ...


Revision tags: v22.01.2, v22.09, v23.01-pre, v22.09-rc1, v22.05, v22.09-pre, v22.05-rc1
# ce3ffc23 19-May-2022 yidong0635 <dongx.yi@intel.com>

blobstore: Add assert in blob_id_cmp.

From the issue report in #2507
that comparing blob maybe be NULL.
So add assert, that in CI may catch this issue.
And other funtions add this also.

Signed-off-

blobstore: Add assert in blob_id_cmp.

From the issue report in #2507
that comparing blob maybe be NULL.
So add assert, that in CI may catch this issue.
And other funtions add this also.

Signed-off-by: yidong0635 <dongx.yi@intel.com>
Change-Id: I98179ec76f2b6785b6921c37373204021c0669b6
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12737
Reviewed-by: Krzysztof Karas <krzysztof.karas@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>

show more ...


# ae0b53b1 10-Oct-2022 Mike Gerdts <mgerdts@nvidia.com>

lvol: do not open esnaps during bs_load

As an lvstore is opening it calls spdk_bs_load(), which briefly opens
each blob and has no use for external snapshots. Since there is no point
in opening them

lvol: do not open esnaps during bs_load

As an lvstore is opening it calls spdk_bs_load(), which briefly opens
each blob and has no use for external snapshots. Since there is no point
in opening them at this time, don't open them. Once the blobstore has
been loaded, update lvs->load_esnaps so that external snapshots are
opened as the lvols open their blobs.

Change-Id: Ib16c8474300ff4b106aad0baa5b8b38332c23b01
Signed-off-by: Mike Gerdts <mgerdts@nvidia.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16424
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Jim Harris <james.r.harris@intel.com>

show more ...


# 9ea88fcb 14-Mar-2023 Mike Gerdts <mgerdts@nvidia.com>

blob: refactor parent_id and allocate_all checks

The blob's parent_id and allocate_all examined and/or modified in a
two places bs_inflate_blob_open_cpl(). This transforms the two if
statements scat

blob: refactor parent_id and allocate_all checks

The blob's parent_id and allocate_all examined and/or modified in a
two places bs_inflate_blob_open_cpl(). This transforms the two if
statements scattered around the function into a switch statement to make
it easier to understand how these two values are related.

Signed-off-by: Mike Gerdts <mgerdts@nvidia.com>
Change-Id: I2cff2d07a0089b52678035b2ece60db6a5f67a8e
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/17178
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>

show more ...


# aaebaece 14-Oct-2022 Mike Gerdts <mgerdts@nvidia.com>

blob: hotplug new back_bs_dev

When an esnap clone blob's external snapshot arrives after the blob is
opened, it can now be hot-added to the blob. Presumably the new device
replaces a place-holder de

blob: hotplug new back_bs_dev

When an esnap clone blob's external snapshot arrives after the blob is
opened, it can now be hot-added to the blob. Presumably the new device
replaces a place-holder device that did not really atteempt IO.

Change-Id: I622feb84efa66628debf44f7e7cb88b6a012db6d
Signed-off-by: Mike Gerdts <mgerdts@nvidia.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16232
Community-CI: Mellanox Build Bot
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>

show more ...


# 55199ed1 19-Jan-2023 Mike Gerdts <mgerdts@nvidia.com>

blob: abort IO when replacing esnap channel

This adds the ability to abort IOs as esnap bs_dev channels are being
destroyed.

Signed-off-by: Mike Gerdts <mgerdts@nvidia.com>
Change-Id: Ia63d4cbef5cd

blob: abort IO when replacing esnap channel

This adds the ability to abort IOs as esnap bs_dev channels are being
destroyed.

Signed-off-by: Mike Gerdts <mgerdts@nvidia.com>
Change-Id: Ia63d4cbef5cd4c84dc8d5e2e9e407bacd961385f
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/16423
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot

show more ...


# ba91ffba 06-Oct-2022 Mike Gerdts <mgerdts@nvidia.com>

blob: defer unload until channel destroy done

As the blobstore is being unlaoded, async esnap channel destructions may
be in flight. In such a case, spdk_bs_unload() needs to defer the unload
of the

blob: defer unload until channel destroy done

As the blobstore is being unlaoded, async esnap channel destructions may
be in flight. In such a case, spdk_bs_unload() needs to defer the unload
of the blobstore until channel destructions are complete.

The following commands lead to the illustrated states.

bdev_malloc_create -b malloc0
bdev_lvol_clone_bdev lvs1 malloc0 eclone

.---------. .--------.
| malloc0 |<--| eclone |
`---------' `--------'

bdev_lvol_snapshot lvs1/eclone snap

.---------. .------. .--------.
| malloc0 |<--| snap |<--| eclone |
`---------' `------' `--------'

bdev_lvol_clone lvs1/snap eclone

.--------.
,-| eclone |
.---------. .------.<-' `--------'
| malloc0 |<--| snap |
`---------' `------'<-. .-------.
`-| clone |
`-------'

As the blobstore is preparing to be unloaded spdk_blob_unload(snap) is
called once for eclone, once for clone, and once for snap. The last of
these calls happens just before spdk_bs_unload() is called.
spdk_blob_unload() needs to destroy channels on each thread. During this
thread iteration, spdk_bs_unload() starts. The work performed in the
iteration maintains a reference to the blob, and as such it
spdk_bs_unload() cannot do its work until the iteration is complete.

Change-Id: Id9b92ad73341fb3437441146110055c84ee6dc52
Signed-off-by: Mike Gerdts <mgerdts@nvidia.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14975
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Ben Walker <benjamin.walker@intel.com>

show more ...


Revision tags: v22.01.1, v22.01
# 652232ae 25-Jan-2022 Mike Gerdts <mgerdts@nvidia.com>

blob: esnap clone inflate and decouple

This adds support for inflate and decouple for esnap clones. Since there
are no immediate consumers that will provide back_bs_dev->is_zeroes()
that can return

blob: esnap clone inflate and decouple

This adds support for inflate and decouple for esnap clones. Since there
are no immediate consumers that will provide back_bs_dev->is_zeroes()
that can return true, a shortcut is taken in that inflate and decouple
of esnap clones are the same.

Signed-off-by: Mike Gerdts <mgerdts@nvidia.com>
Change-Id: I4d2e6565126991acd650f073ce876466334e986d
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11574
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>

show more ...


# 94c43313 25-Jan-2022 Mike Gerdts <mgerdts@nvidia.com>

blob: snapshots of esnap clones

An esnap clone needs special handling as snapshots are created and
removed. In particular: the following must exist on the blob that
directly references the external

blob: snapshots of esnap clones

An esnap clone needs special handling as snapshots are created and
removed. In particular: the following must exist on the blob that
directly references the external snapshot and must be removed from
others:

- Ensure SPDK_BLOB_EXTERNAL_SNAPSHOT invalid flag exists only on the
esnap clone.
- Ensure BLOB_EXTERNAL_SNAPSHOT_ID internal xattr exists only on the
esnap clone.
- Clean up any esnap IO channels on a blob that is no longer an esnap
clone due to snapshot creation or removal.

See the diagrams and description in blob_esnap_clone_snapshot() in
blob_ut.c for details.

Signed-off-by: Mike Gerdts <mgerdts@nvidia.com>
Change-Id: Ie4125d64d5bac9cfa7d6c7cc9a543d72a169f6ee
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11573
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Community-CI: Mellanox Build Bot

show more ...


# b47cee6c 23-Sep-2022 Mike Gerdts <mgerdts@nvidia.com>

blob: add IO channels for esnap clones

The channel passed to blob IO operations is useful for tracking
operations within the blobstore and the bs_dev that the blobstore
resides on. Esnap clone blobs

blob: add IO channels for esnap clones

The channel passed to blob IO operations is useful for tracking
operations within the blobstore and the bs_dev that the blobstore
resides on. Esnap clone blobs perform reads from other bs_devs and
require per-thread, per-bs_dev channels.

This commit augments struct spdk_bs_channel with a tree containing
channels for the external snapshot bs_devs. The tree is indexed by blob
ID. These "esnap channels" are lazily created on the first read from an
external snapshot via each bs_channel. They are removed as bs_channels
are destroyed and blobs are closed.

Change-Id: I97aebe5a2f3584bfbf3a10ede8f3128448d30d6e
Signed-off-by: Mike Gerdts <mgerdts@nvidia.com>
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/14974
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Community-CI: Mellanox Build Bot
Reviewed-by: Ben Walker <benjamin.walker@intel.com>

show more ...


12345678910>>...17