Commit Graph

105 Commits

Author SHA1 Message Date
Michal Mielewczyk
b1f61580fc Disable preemption when accessing current cpu id
Currently Open CAS doesn't support kernels with involuntary preemption
anyways and once we add the support, we can get rid of this workaround

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2025-03-26 07:57:53 +01:00
Rafal Stefanowski
7ee78ac51e Kernel 6.13: Add setting queue limits of exported object
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Rafal Stefanowski <rafal.stefanowski@huawei.com>
2025-02-05 17:29:45 +01:00
Rafal Stefanowski
6a275773ce Kernel 6.13: Introduce cas_queue_max_discard_sectors()
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Rafal Stefanowski <rafal.stefanowski@huawei.com>
2025-02-05 17:29:45 +01:00
Rafal Stefanowski
e5607fe9dd Kernel 6.13: Introduce cas_queue_set_nonrot()
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Rafal Stefanowski <rafal.stefanowski@huawei.com>
2025-02-05 17:29:45 +01:00
Robert Baldyga
8f41ce7ad8 Submit flush as a WRITE bio
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
2024-10-07 13:42:34 +02:00
Robert Baldyga
1e80f2d0c2 Update after removing struct ocf_io
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
2024-09-13 12:38:26 +02:00
Robert Baldyga
5820e17e21 Drop support for submit_* ops
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
2024-09-13 12:38:26 +02:00
Robert Baldyga
bc7710fb7d Provide forward ops in block volume implementation
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
2024-09-13 12:36:10 +02:00
Toby Roth
988ac5f645 Do not submit IO in complete flush
Signed-off-by: Toby Roth <toby.roth@huawei.com>
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
2024-09-10 14:36:43 +02:00
Jan Musial
ab81ac667b Remove unused fields
Signed-off-by: Jan Musial <jan.musial@huawei.com>
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
2024-09-10 14:36:43 +02:00
Gal Hammer
b9110635c1 cas_cache: fix "blk_update_request: operation not supported" error
A write request with the REQ_RAHEAD flag enabled cause the nvme driver
to send a write command with access frequency value that is reserved
(at least on specification version 1.4c). NVME devices might fail this
write command with an unsupported error. So we now clear the request's
flag based on its direction.

Signed-off-by: Gal Hammer <gal.hammer@huawei.com>
Signed-off-by: Shai Fultheim <shai.fultheim@huawei.com>
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
2024-09-10 14:36:43 +02:00
Michal Mielewczyk
bb8fc64ed5 Enable adding core to detached cache instance
Instead of trying to access properties of potenially unavaliable cache device
use properties saved in cache priv

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-09 15:57:35 +02:00
Michal Mielewczyk
853e8f9357 configure: refactor cas_copy_queue_limits()
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-09 15:57:35 +02:00
Michal Mielewczyk
33721e7c92 Set NOMERGES flag for cache volume
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
Signed-off-by: Rafal Stefanowski <rafal.stefanowski@huawei.com>
2024-09-09 15:57:30 +02:00
Robert Baldyga
5c4b5634cb Add missing "static" to the local functions
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
2024-05-14 08:22:34 +02:00
Robert Baldyga
7dd5fa8029 Add missing headers
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
2024-05-14 08:22:34 +02:00
Robert Baldyga
6aa30f05ce Remove unused function
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
2024-05-14 08:22:34 +02:00
Robert Baldyga
334cc31a5c Set exp_obj rotational=0
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
2024-04-03 12:11:42 +02:00
Michal Mielewczyk
4753374b1b Change CAS_BIO_MAX_VECS value
Previously when user tried to allocate to big bio he recieved NULL. As the
behavior was changed to `BUG()` passing out of range value is no longer legal.

Limiting the requested bio size to BIO_MAX_PAGES (on the older kernels) or to
BIO_MAX_VECS (on the newer ones) eliminates the problem as the macros represent
the max possible value.

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2022-12-28 13:59:20 +01:00
Krzysztof Majzerowicz-Jaszcz
2eef5ce36b Fix for using uninitialized variable in printk
This commit fixes the case of using unintialized variable in error
handling path after failed core addition.

Signed-off-by: Krzysztof Majzerowicz-Jaszcz <krzysztof.majzerowicz-jaszcz@intel.com>
2022-11-08 11:47:23 +00:00
Krzysztof Majzerowicz-Jaszcz
f1bf2eb909 Kernel 6.0 support
This patch introduces kernel 6.0 support for Open CAS

Signed-off-by: Krzysztof Majzerowicz-Jaszcz <krzysztof.majzerowicz-jaszcz@intel.com>
2022-10-28 09:41:43 +02:00
Krzysztof Majzerowicz-Jaszcz
f0af7cb52d Open CAS Linux kernel 5.18 support
This patch introduces the support for 5.18 kernel.

Signed-off-by: Krzysztof Majzerowicz-Jaszcz <krzysztof.majzerowicz-jaszcz@intel.com>
2022-10-24 09:53:01 +00:00
Robert Baldyga
64420d7ce7 Remove blkdev_can_hndl_bio() function
This check will always return 0, as none of kernel versions supported
by Open CAS sets a barrier flag in for bio. Those flags are exclusive to
struct request, which is no longer used by Open CAS.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-09-27 16:39:33 +02:00
Robert Baldyga
ec7cee7e75
Merge pull request #1352 from robertbaldyga/exp_obj-refactor
Refactor disk/exp_obj API
2022-09-27 10:11:57 +02:00
Robert Baldyga
5e2c1c15cf Merge exp obj create/activate
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-09-23 14:21:37 +02:00
Robert Baldyga
2f54aea87d Remove exported object kobj
Simplify exported object lifecycle.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-09-23 14:21:36 +02:00
Robert Baldyga
1fe83b4972 Manage lifetime of exported object in top adapter
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-09-23 14:20:42 +02:00
Robert Baldyga
74c17d5115
Merge pull request #1351 from live4thee/fix-compile-error
cas_cache: fix compile error when set CAS_DEBUG_IO=1
2022-09-20 16:04:56 +02:00
Robert Baldyga
8945b482ce Remove private parameter from cas_disk_open()
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-09-19 15:37:58 +02:00
Robert Baldyga
6d2266f7ee Remove cas_disk_claim()
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-09-19 15:37:56 +02:00
David Lee
193f2c9a3a cas_cache: fix compile error when set CAS_DEBUG_IO=1
Signed-off-by: David Lee <live4thee@gmail.com>
2022-09-19 19:21:43 +08:00
Robert Baldyga
4ed64582a6 Remove cas_disk from naming in code
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-09-19 10:38:21 +02:00
Robert Baldyga
8eb512a743 Remove cas_disk symbol lookup
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-08-25 13:02:25 +02:00
Krzysztof Majzerowicz-Jaszcz
e997f768b0 Rework for RHEL8.5
Rework for RHEL8.5 compatibility to avoid potential bug of exiting queue
after IO completion on a different CPU.

Targeted RHEL kernel version corrected.

Signed-off-by: Krzysztof Majzerowicz-Jaszcz <krzysztof.majzerowicz-jaszcz@intel.com>
2022-08-16 13:50:59 +02:00
Krzysztof Majzerowicz-Jaszcz
b983eeb751 RHEL8.5 kernel 4.18 support fix
This patch adds support for RHEL8.5 with kernel 4.18.0.348.2.1.el8 and
later.

Additional request queue operations added for these kernels.
Configure scripts added/updated.

Fixes #1278

Signed-off-by: Krzysztof Majzerowicz-Jaszcz <krzysztof.majzerowicz-jaszcz@intel.com>
2022-08-12 08:52:36 +02:00
Krzysztof Majzerowicz-Jaszcz
bd9548cff4 Potential double IO completion fix
In specific circumstances, IO could be completed twice.
This patch fixes this problem.

Signed-off-by: Krzysztof Majzerowicz-Jaszcz <krzysztof.majzerowicz-jaszcz@intel.com>
2022-08-10 11:28:43 +02:00
Krzysztof Majzerowicz-Jaszcz
2739d83bec Fix for null pointer dereference bug
Null pointer dereference occurs when terminating cache is standby detached state.
This fixes this problem.

Fixes #1235

Signed-off-by: Krzysztof Majzerowicz-Jaszcz <krzysztof.majzerowicz-jaszcz@intel.com>
2022-06-24 06:06:49 -04:00
Krzysztof Majzerowicz-Jaszcz
12ddca1cf3 OpenCAS Linux kernel 5.15 adaptation
This patch adapts OpenCAS Linux to compile and work with kernel v5.15

Commit id's from the kernel affecting OpenCAS:

commit 0e0ccdecb3cff95a350b4364e7ebbaa754d0e47d
    block: remove bdget_disk

commit 9c2b9dbafc067e173db30c4fd0636392d27944e8
    block: remove alloc_disk and alloc_disk_node

commit a8698707a1835be3abd12a3b28079a80999f8dee
    block: move bd_mutex to struct gendisk

commit 2cece3778475abc855084d897a3cf61249798ad9
    scsi: scsi_ioctl: Remove scsi_req_init()

commit 2f4731dcd0bb73379fbb9e3eb07ae7324125caef
    block: remove bdput

commit 14cf1dbb55bb07427babee425fd2a8a9300737cc
    block: remove bdgrab

Signed-off-by: Krzysztof Majzerowicz-Jaszcz <krzysztof.majzerowicz-jaszcz@intel.com>
2022-06-09 08:49:32 +02:00
Robert Baldyga
8fae9e2476 Destroy exp obj workqueue properly
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-04-08 17:16:04 +02:00
Michal Mielewczyk
68cadd90f8 Destroy volume if it couldn't be opened
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
2022-04-08 16:42:25 +02:00
Robert Baldyga
df36c027a6 Do not destroy expobj_wq if destroying exporting object failed
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-03-31 21:36:27 +02:00
Robert Baldyga
4ca0eb0530
Merge pull request #1135 from robertbaldyga/core-remove-fixes
Core remove fixes
2022-03-28 13:51:44 +02:00
Robert Baldyga
59f2a86db0
Merge pull request #1085 from hammerg/bio_max_vecs
configure/bio_max_vecs: adapt to kernel 5.12
2022-03-25 22:21:45 +01:00
Robert Baldyga
76db828e4c Skip already removed exported objects on cache stop
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-03-25 21:35:07 +01:00
Robert Baldyga
a185a6e595 Propagate io->dir flags when submitting flush bio in bottom volume
When dir is ignored, and 0 is passed instead, each flush request will
appear as READ request, which is not supported by some block device
drivers.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-03-17 20:43:15 +01:00
Robert Baldyga
e4d4750f96 Don't propagate bio flags to OCF for discard I/O
One of the steps of discarding data in cache is invalidating OCF metadata.
If a cache line which is supposed to be discarded is dirty, invalidating
it will require flushing metadata. Unfortunately, OCF allocates flushing
requests with the exactly the same flags as the original IO (in this case
discard flag is set) so the page on the disk is discarded instead of being
flushed. In case of power failure occurring before the metadata is flushed
to the disk, the data may be corrupted even if recovery will succeed.

Disabling propagation of original I/O flags for discard requests solves
this problem.

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@intel.com>
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2022-03-16 13:44:44 +01:00
Gal Hammer
4ed8a59402 configure/bio_max_vecs: adapt to kernel 5.12
The bio_alloc_bioset() function now BUG() if trying to allocate a bio
with more than BIO_MAX_VECS vectors.

A no-limit value (-1) is defined in order not to change old kernels'
behaviour.

Signed-off-by: Gal Hammer <gal.hammer@huawei.com>
Signed-off-by: Shai Fultheim <shai.fultheim@huawei.com>
2022-03-08 16:06:03 +02:00
Robert Baldyga
b0a3c9cd45
Merge pull request #982 from robertbaldyga/remove-redundant-io-get-put
Remove redundant ocf_io_get()/ocf_io_put() from bottom volume
2021-12-27 15:21:32 +01:00
Robert Baldyga
d28881588d Map OCF error codes to errno in io path
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2021-11-25 17:11:07 +01:00
Robert Baldyga
6743c02033 Return kernel error codes on I/O path
Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2021-11-22 14:35:24 +01:00