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

NAS-125539 / None / [stable/dragonfish] Block Cloning Fixes and ZVOL Patch Backports #200

Merged
merged 6 commits into from
Dec 13, 2023

Commits on Dec 13, 2023

  1. zvol: Cleanup set property

    zvol_set_volmode() and zvol_set_snapdev() share a common code path.
    Merge this shared code path into zvol_set_common().
    
    Signed-off-by: Ameer Hamza <[email protected]>
    ixhamza committed Dec 13, 2023
    Configuration menu
    Copy the full SHA
    860aba8 View commit details
    Browse the repository at this point in the history
  2. zvol: Implement zvol threading as a Property

    Currently, zvol threading can be switched through the zvol_request_sync
    module parameter system-wide. By making it a zvol property, zvol
    threading can be switched per zvol.
    
    Signed-off-by: Ameer Hamza <[email protected]>
    ixhamza committed Dec 13, 2023
    Configuration menu
    Copy the full SHA
    eeeff73 View commit details
    Browse the repository at this point in the history
  3. zvol: fix delayed update to block device ro entry

    The change in the zvol readonly property does not update the block
    device readonly entry until the first IO to the ZVOL. This patch
    addresses the issue by updating the block device readonly property
    from the set property IOCTL call.
    
    Signed-off-by: Ameer Hamza <[email protected]>
    ixhamza committed Dec 13, 2023
    Configuration menu
    Copy the full SHA
    4505cdd View commit details
    Browse the repository at this point in the history
  4. dbuf: Handle arcbuf assignment after block cloning

    In some cases dbuf_assign_arcbuf() may be called on a block that
    was recently cloned.  If it happened in current TXG we must undo
    the block cloning first, since the only one dirty record per TXG
    can't and shouldn't mean both cloning and overwrite same time.
    
    Reviewed-by: Kay Pedersen <[email protected]>
    Reviewed-by: Brian Behlendorf <[email protected]>
    Signed-off-by:	Alexander Motin <[email protected]>
    Sponsored by:	iXsystems, Inc.
    Closes openzfs#15653
    amotin authored and ixhamza committed Dec 13, 2023
    Configuration menu
    Copy the full SHA
    57f7291 View commit details
    Browse the repository at this point in the history
  5. Add VERIFY0P() and ASSERT0P() macros.

    These macros are similar to VERIFY0() and ASSERT0() but are intended
    for pointers, and therefore use uintptr_t instead of int64_t.
    
    Reviewed-by: Brian Behlendorf <[email protected]>
    Reviewed-by: Kay Pedersen <[email protected]>
    Reviewed-by: Alexander Motin <[email protected]>
    Signed-off-by: Dag-Erling Smørgrav <[email protected]>
    Closes openzfs#15225
    dag-erling authored and ixhamza committed Dec 13, 2023
    Configuration menu
    Copy the full SHA
    03255b0 View commit details
    Browse the repository at this point in the history
  6. dbuf: Set dr_data when unoverriding after clone

    Block cloning normally creates dirty record without dr_data.  But if
    the block is read after cloning, it is moved into DB_CACHED state and
    receives the data buffer.  If after that we call dbuf_unoverride()
    to convert the dirty record into normal write, we should give it the
    data buffer from dbuf and release one.
    
    Reviewed-by: Kay Pedersen <[email protected]>
    Reviewed-by: Brian Behlendorf <[email protected]>
    Signed-off-by: Alexander Motin <[email protected]>
    Sponsored by: iXsystems, Inc.
    Closes openzfs#15654
    Closes openzfs#15656
    amotin authored and ixhamza committed Dec 13, 2023
    Configuration menu
    Copy the full SHA
    ba69ae2 View commit details
    Browse the repository at this point in the history