Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New px-fuse forked from v2.6.0 with limited set of changes from v2.7.0 #199

Open
wants to merge 32 commits into
base: v2.6.0
Choose a base branch
from

Conversation

prabirpaul
Copy link
Contributor

@prabirpaul prabirpaul commented Mar 12, 2021

  1. Cherry-picked only limited set of required changes from v2.7.0
  2. Disables fastpath - stubs only
  3. Includes fuse headers required for px-storage build (iouring)
  4. Includes all compilation changes from v2.7.0
  • Sanity and perf regression test done.

  • Smoke pass: https://jenkins.portworx.dev/job/DEV/job/Porx-03/533

  • BVT running: https://jenkins.portworx.dev/job/DEV/job/Porx-03/534/

  • Upgrade test running: 2.6 to 2.7, 2.7 to master

  • Px-fuse build test done covering the following:
    3.10.0-1127.el7.x86_64
    3.10.0-1160.11.1.el7.x86_64
    3.10.0-327.36.3.el7.x86_64
    3.10.0-957.21.3.el7.x86_64
    4.12.2-1.el7.elrepo.x86_64
    4.16.3-301.fc28.x86_64
    4.18.0-1.el7.elrepo.x86_64
    4.18.0-193.29.1.el8_2.x86_64
    4.18.0-193.el8.x86_64
    4.18.0-240.1.1.el8_3.x86_64
    4.18.0-257.el8.x86_64
    4.18.0-259.el8.x86_64
    4.18.0-269.el8.x86_64
    4.20.13-1.el7.elrepo.x86_64
    5.4.101-1.el7.elrepo.x86_64
    5.6.15-1.el7.elrepo.x86_64
    5.8.11-1.el8.elrepo.x86_64
    5.8.9-1.el7.elrepo.x86_64
    5.9.6-1.el7.elrepo.x86_64
    3.10.0-1160.15.2.el7.x86_64
    4.13.9-300.fc27.x86_64
    4.14.186-146.268.amzn2.x86_64
    4.14.214-160.339.amzn2.x86_64
    4.18.0-147.20.1.el8_1.x86_64
    4.18.0-147.el8.x86_64
    4.18.0-193.14.2.el8_2.x86_64
    4.18.0-193.23.1.el8_2.x86_64
    4.18.0-193.24.1.el8_2.dt1.x86_64
    4.18.0-240.15.1.el8_3.x86_64
    4.18.0-80.1.2.el8_0.x86_64
    4.18.0-80.11.1.el8_0.x86_64
    5.0.16-100.fc28.x86_64
    5.10.0-1.el7.elrepo.x86_64
    5.10.0-1.el8.elrepo.x86_64
    5.10.15-1.el7.elrepo.x86_64
    5.4.12-1.el7.elrepo.x86_64
    5.7.0-1.el7.elrepo.x86_64
    5.7.0-1.el8.elrepo.x86_64
    5.7.12-1.el7.elrepo.x86_64
    5.7.7-1.el7.elrepo.x86_64
    5.8.0-1.el7.elrepo.x86_64
    5.8.0-1.el8.elrepo.x86_64
    5.8.15-301.fc33.x86_64
    5.9.0-1.el7.elrepo.x86_64
    5.9.0-1.el8.elrepo.x86_64
    4.9.0-4-amd64
    4.9.0-11-amd64
    4.9.0-7-amd64
    4.9.0-13-amd64
    4.9.0-14-amd64
    4.19.0-14-cloud-amd64
    4.19.0-8-amd64
    4.12.14-120-default
    4.12.14-122.12-default
    4.12.14-122.17-default
    4.12.14-122.20-default
    4.12.14-122.23-default
    4.12.14-122.26-default
    4.12.14-122.29-default
    4.12.14-122.32-default
    4.12.14-122.37-default
    4.12.14-122.41-default
    4.12.14-122.46-default
    4.12.14-122.51-default
    4.12.14-122.54-default
    4.12.14-122.57-default
    4.12.14-122.60-default
    4.12.14-122.7-default
    4.12.14-95.13-default
    4.12.14-95.16-default
    4.12.14-95.19-default
    4.12.14-95.24-default
    4.12.14-95.29-default
    4.12.14-95.32-default
    4.12.14-95.37-default
    4.12.14-95.40-default
    4.12.14-95.45-default
    4.12.14-95.48-default
    4.12.14-95.51-default
    4.12.14-95.54-default
    4.12.14-95.6-default
    4.4.140-94.42-default
    4.4.175-94.79-default
    4.4.176-94.88-default
    4.4.178-94.91-default
    4.4.180-94.100-default
    4.4.180-94.97-default
    4.12.14-150.14-default
    4.12.14-150.17-default
    4.12.14-150.22-default
    4.12.14-150.27-default
    4.12.14-150.32-default
    4.12.14-150.35-default
    4.12.14-150.38-default
    4.12.14-150.41-default
    4.12.14-150.47-default
    4.12.14-195-default
    4.12.14-197.10-default
    4.12.14-197.15-default
    4.12.14-197.18-default
    4.12.14-197.21-default
    4.12.14-197.26-default
    4.12.14-197.29-default
    4.12.14-197.34-default
    4.12.14-197.37-default
    4.12.14-197.4-default
    4.12.14-197.40-default
    4.12.14-197.45-default
    4.12.14-197.48-default
    4.12.14-197.51-default
    4.12.14-197.56-default
    4.12.14-197.61-default
    4.12.14-197.64-default
    4.12.14-197.67-default
    4.12.14-197.7-default
    4.12.14-197.72-default
    4.12.14-197.75-default
    4.12.14-197.78-default
    4.12.14-25.28-default
    5.3.18-22-default
    5.3.18-24.12-default
    5.3.18-24.15-default
    5.3.18-24.24-default
    5.3.18-24.29-default
    5.3.18-24.34-default
    5.3.18-24.37-default
    5.3.18-24.43-default
    5.3.18-24.46-default
    5.3.18-24.49-default
    5.3.18-24.9-default
    4.4.0-185-generic
    5.4.0-1029-gke
    4.4.0-112-generic
    5.4.0-1026-azure
    5.4.0-1036-gke
    4.4.0-170-generic
    5.4.0-1028-gcp
    4.4.0-116-generic
    4.4.0-190-generic
    4.4.0-177-generic
    4.15.0-1082-azure
    4.4.0-178-generic
    4.4.0-184-generic
    5.4.0-29-generic
    5.4.0-1024-gcp
    4.4.0-186-generic
    4.4.0-31-generic
    4.4.0-187-generic
    4.4.0-176-generic
    4.4.0-174-generic
    5.4.0-1036-azure
    4.4.0-193-generic
    5.4.0-1036-gcp
    5.4.0-65-generic

prabirpaul and others added 22 commits March 11, 2021 10:56
…w interface blk_alloc_queue_rh. Add explicit check for this api for now. (#184)
* compilation fixes in 5.9/5.10 kernel

Signed-off-by: Lakshmi Narasimhan Sundararajan <[email protected]>
… submit ios (#196) (#197)

to pxd instead of the request queue
* SLES/Suse 4.12.x compile fixes.

* Use a 'defined' entry instead of 'not defined' entry

* Consolidate duplicate code to pxd_compat.h and wrap cond to 80 cols

* Fix compilation issue.

Co-authored-by: [email protected] <[email protected]>
Signed-off-by: Lakshmi Narasimhan Sundararajan <[email protected]>
* Use the existing pxd_io_tracker obj.

* Change version check to Fix undefined declarations for 5.8 kernels. Fix iot not declared error.

* Use the existing pxd_io_tracker obj.
sulakshm and others added 3 commits March 11, 2021 23:44
* address race between restart and new req processing

Signed-off-by: Lakshmi Narasimhan Sundararajan <[email protected]>
* address race between restart and new req processing

Signed-off-by: Lakshmi Narasimhan Sundararajan <[email protected]>
Makefile.in Outdated Show resolved Hide resolved
pxd.h Show resolved Hide resolved
Signed-off-by: Lakshmi Narasimhan Sundararajan <[email protected]>
Lakshmi Narasimhan Sundararajan added 2 commits March 12, 2021 14:19
Signed-off-by: Lakshmi Narasimhan Sundararajan <[email protected]>
Signed-off-by: Lakshmi Narasimhan Sundararajan <[email protected]>
@@ -1,11 +1,9 @@
/* Enable stub action if fastpath is not enabled */
#ifndef __PX_FASTPATH__
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this line should be included back. makefile is fixed to not defined PX_FASTPATH

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

revised

Signed-off-by: Lakshmi Narasimhan Sundararajan <[email protected]>
Copy link
Contributor

@sulakshm sulakshm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

changes look good to me.

Makefile.in Outdated Show resolved Hide resolved
pxd.h Outdated Show resolved Hide resolved
@@ -0,0 +1,160 @@
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we add a note on such header files indicating that they are included for build purpose only?

Comment on lines +26 to +32
void pxd_fastpath_adjust_limits(struct pxd_device *pxd_dev, struct request_queue *topque) {}
int pxd_suspend_state(struct pxd_device *pxd_dev) {return 0;}

void pxd_suspend_io(struct pxd_device* pxd_dev) { }
void pxd_resume_io(struct pxd_device* pxd_dev) { }
int pxd_switch_fastpath(struct pxd_device* pxd_dev) {return -1;}
int pxd_switch_nativepath(struct pxd_device* pxd_dev) {return -1;}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

traces for these functions where we dont expect them to be called? I would have said ASSERTs but I am not sure if a kernel panic is what we want. Is there any other way to ensure these functions are not getting called, perhaps a test only module which will have asserts here.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's not that they can't be called, we are not going to advertise fastpath.

pxd.h Show resolved Hide resolved
#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,9,0)
#define BLK_QC_RETVAL BLK_QC_T_NONE
blk_qc_t pxd_make_request_fastpath(struct bio *bio)
{
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This function should definitely assert hard. When fastpath function is stubbed, IO cannot be received/processed.

fuse_end_queued_requests(fc);
spin_unlock(&fc->lock);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants