All of lore.kernel.org
 help / color / mirror / Atom feed
* [GIT PULL] Btrfs changes for 4.15
@ 2017-11-13 15:35 David Sterba
  2017-11-13 23:39 ` Qu Wenruo
  0 siblings, 1 reply; 4+ messages in thread
From: David Sterba @ 2017-11-13 15:35 UTC (permalink / raw)
  To: torvalds; +Cc: David Sterba, clm, linux-btrfs, linux-kernel

Hi,

please pull the following btrfs changes. There are some new user features and
the usual load of invisible enhancements or cleanups. The branch merges
cleanly, has been frozen in case rc7 was the last one, so I send out the pull
request early. Thanks.


New features:

- extend mount options to specify zlib compression level, -o compress=zlib:9

- v2 of ioctl "extent to inode mapping", addressing a usecase where we want to
  retrieve more but inaccurate results and do the postprocessing in userspace,
  aiding defragmentation or deduplication tools

- populate compression heuristics logic, do data sampling and try to guess
  compressibility by: looking for repeated patterns, counting unique byte
  values and distribution, calculating Shannon entropy;
  this will need more benchmarking and possibly fine tuning, but the base
  should be good enough

- enable indexing for btrfs as lower filesystem in overlayfs

- speedup page cache readahead during send on large files


Internal enhancements:

- more sanity checks of b-tree items when reading them from disk

- more EINVAL/EUCLEAN fixups, missing BLK_STS_* conversion, other errno or
  error handling fixes

- remove some homegrown IO-related logic, that's been obsoleted by core block
  layer changes (batching, plug/unplug, own counters)

- add ref-verify, optional debugging feature to verify extent reference
  accounting

- simplify code handling outstanding extents, make it more clear where and how
  the accounting is done

- make delalloc reservations per-inode, simplify the code and make the logic
  more straightforward

- extensive cleanup of delayed refs code


Notable fixes:

- fix send ioctl on 32bit with 64bit kernel


The branch top commit matches the signed tag for-4.15-tag.

----------------------------------------------------------------
The following changes since commit 0b07194bb55ed836c2cc7c22e866b87a14681984:

  Linux 4.14-rc7 (2017-10-29 13:58:38 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-4.15

for you to fetch changes up to d28e649a5c58b779b303c252c66ee84a0f2c3b32:

  btrfs: Fix bug for misused dev_t when lookup in dev state hash table. (2017-11-01 20:45:36 +0100)

----------------------------------------------------------------
Adam Borowski (1):
      btrfs: allow setting zlib compression level via :9

Allen Pais (1):
      btrfs: return -ENOMEM on allocation failure in btrfsic

Anand Jain (13):
      btrfs: declare TRACE_DEFINE_ENUM for each of show_flush_state enum
      btrfs: copy fsid to super_block s_uuid
      btrfs: undo writable superblocke when sprouting fails
      btrfs: fix BUG_ON in btrfs_init_new_device()
      btrfs: error out if btrfs_attach_transaction() fails
      btrfs: add_missing_dev() should return the actual error
      btrfs: fix EIO misuse to report missing degraded option
      btrfs: declare btrfs_report_missing_device() static
      btrfs: fix use of error or warning for missing device
      btrfs: use BLK_STS defines where needed
      btrfs: use need_full_stripe() in __btrfs_map_block()
      btrfs: fix false EIO for missing device
      btrfs: remove BUG_ON in btrfs_rm_dev_replace_free_srcdev()

Arnd Bergmann (1):
      btrfs: tree-checker: use %zu format string for size_t

Christophe JAILLET (1):
      btrfs: tests: Fix a memory leak in error handling path in 'run_test()'

Christos Gkekas (2):
      btrfs: Clean up dead code in root-tree
      btrfs: Clean up unused variables in free-space-tree.c

Colin Ian King (2):
      btrfs: avoid null pointer dereference on fs_info when calling btrfs_crit
      btrfs: make array types static const, reduces object code size

David Sterba (4):
      btrfs: scrub: get rid of sector_t
      btrfs: rename page offset parameter in submit_extent_page
      btrfs: get rid of sector_t and use u64 offset in submit_extent_page
      btrfs: allow to set compression level for zlib

Goldwyn Rodrigues (1):
      btrfs: cleanup extent locking sequence

Gu JinXiang (2):
      btrfs: Use bd_dev to generate index when dev_state_hashtable add items.
      btrfs: Fix bug for misused dev_t when lookup in dev state hash table.

Hans van Kranenburg (1):
      btrfs: prefix sysfs attribute struct names

Josef Bacik (22):
      btrfs: change how we decide to commit transactions during flushing
      btrfs: fix send ioctl on 32bit with 64bit kernel
      btrfs: add ref-verify mount option
      btrfs: pass root to various extent ref mod functions
      Btrfs: add a extent ref verify tool
      Btrfs: only check delayed ref usage in should_end_transaction
      btrfs: add a helper to return a head ref
      btrfs: move extent_op cleanup to a helper
      btrfs: breakout empty head cleanup to a helper
      btrfs: move ref_mod modification into the if (ref) logic
      btrfs: move all ref head cleanup to the helper function
      btrfs: remove delayed_ref_node from ref_head
      btrfs: remove type argument from comp_tree_refs
      btrfs: add assertions for releasing trans handle reservations
      Btrfs: rework outstanding_extents
      btrfs: add tracepoints for outstanding extents mods
      btrfs: make the delalloc block rsv per inode
      btrfs: switch args for comp_*_refs
      btrfs: add a comp_refs() helper
      btrfs: track refs in a rb_tree instead of a list
      btrfs: don't call btrfs_start_delalloc_roots in flushoncommit
      btrfs: move btrfs_truncate_block out of trans handle

Kuanling Huang (1):
      Btrfs: send, apply asynchronous page cache readahead to enhance page read

Liu Bo (13):
      Btrfs: remove batch plug in run_scheduled_IO
      Btrfs: move finish_wait out of the loop
      Btrfs: use wait_event instead of a single function
      Btrfs: protect conditions within root->log_mutex while waiting
      Btrfs: search parity device wisely
      Btrfs: do not async submit for nodatasum inodes
      Btrfs: make plug in writing meta blocks really work
      Btrfs: remove bio_flags which indicates a meta block of log-tree
      Btrfs: fix confusing worker helper info in stacktrace
      Btrfs: fix memory leak in raid56
      Btrfs: remove nr_async_bios
      Btrfs: do not make defrag wait on async_delalloc_pages
      Btrfs: remove nr_async_submits and async_submit_draining

Nikolay Borisov (11):
      btrfs: Remove redundant forward declarations
      btrfs: Remove unused variable
      btrfs: Remove unused parameters from various functions
      btrfs: Remove unused arguments from btrfs_changed_cb_t
      btrfs: Remove unused parameter from check_direct_IO
      btrfs: Rework error handling of add_extent_mapping in __btrfs_alloc_chunk
      btrfs: Remove redundant argument of __link_block_group
      btrfs: Explicitly handle btrfs_update_root failure
      btrfs: Refactor transaction handling in received subvolume ioctl
      btrfs: Replace opencoded sizes with their symbolic constants
      btrfs: send: remove unused code

Omar Sandoval (2):
      Btrfs: make some volumes.c functions static
      Btrfs: fix __user casting in ioctl.c

Qu Wenruo (9):
      btrfs: Refactor check_leaf function for later expansion
      btrfs: Check if item pointer overlaps with the item itself
      btrfs: Add sanity check for EXTENT_DATA when reading out leaf
      btrfs: Add checker for EXTENT_CSUM
      btrfs: Move leaf and node validation checker to tree-checker.c
      btrfs: tree-checker: Enhance btrfs_check_node output
      btrfs: tree-checker: Enhance output for btrfs_check_leaf
      btrfs: tree-checker: Enhance output for check_csum_item
      btrfs: tree-checker: Enhance output for check_extent_data_item

Rakesh Pandit (1):
      btrfs: use appropriate replacements for __sb_{start,end}_write calls

Satoru Takeuchi (1):
      btrfs: convert all mount option checking code to use btrfs_test_opt

Thomas Meyer (1):
      btrfs: Fix bool initialization/comparison

Timofey Titovets (9):
      Btrfs: cleanup 'start' subtraction from try uncompressed inline extent
      Btrfs: compress_file_range remove dead variable num_bytes
      Btrfs: compression: separate heuristic/compression workspaces
      Btrfs: heuristic: add bucket and sample counters and other defines
      Btrfs: heuristic: implement sampling logic
      Btrfs: heuristic: add detection of repeated data patterns
      Btrfs: heuristic: add byte set calculation
      Btrfs: heuristic: add byte core set calculation
      Btrfs: heuristic: add Shannon entropy calculation

Zygo Blaxell (3):
      btrfs: add a flag to iterate_inodes_from_logical to find all extent refs for uncompressed extents
      btrfs: add a flags argument to LOGICAL_INO and call it LOGICAL_INO_V2
      btrfs: increase output size for LOGICAL_INO_V2 ioctl

 fs/btrfs/Kconfig                       |   11 +
 fs/btrfs/Makefile                      |    3 +-
 fs/btrfs/async-thread.c                |    2 +-
 fs/btrfs/backref.c                     |   72 ++-
 fs/btrfs/backref.h                     |    8 +-
 fs/btrfs/btrfs_inode.h                 |   29 +-
 fs/btrfs/check-integrity.c             |    8 +-
 fs/btrfs/compression.c                 |  493 ++++++++++++++-
 fs/btrfs/compression.h                 |    6 +-
 fs/btrfs/ctree.c                       |   17 +-
 fs/btrfs/ctree.h                       |   30 +-
 fs/btrfs/delayed-inode.c               |   46 +-
 fs/btrfs/delayed-ref.c                 |  296 +++++----
 fs/btrfs/delayed-ref.h                 |   54 +-
 fs/btrfs/disk-io.c                     |  227 ++-----
 fs/btrfs/extent-tree.c                 |  829 ++++++++++++-------------
 fs/btrfs/extent_io.c                   |   44 +-
 fs/btrfs/extent_io.h                   |    1 -
 fs/btrfs/file.c                        |   50 +-
 fs/btrfs/free-space-tree.c             |    4 -
 fs/btrfs/inode-map.c                   |    3 +-
 fs/btrfs/inode.c                       |  327 ++++------
 fs/btrfs/ioctl.c                       |  156 +++--
 fs/btrfs/lzo.c                         |    5 +
 fs/btrfs/ordered-data.c                |   21 +-
 fs/btrfs/qgroup.c                      |    8 +-
 fs/btrfs/raid56.c                      |   30 +-
 fs/btrfs/ref-verify.c                  | 1031 ++++++++++++++++++++++++++++++++
 fs/btrfs/ref-verify.h                  |   62 ++
 fs/btrfs/relocation.c                  |   17 +-
 fs/btrfs/root-tree.c                   |    4 -
 fs/btrfs/scrub.c                       |   22 +-
 fs/btrfs/send.c                        |   74 +--
 fs/btrfs/send.h                        |    2 +-
 fs/btrfs/super.c                       |   37 +-
 fs/btrfs/sysfs.c                       |   63 +-
 fs/btrfs/sysfs.h                       |   26 +-
 fs/btrfs/tests/free-space-tree-tests.c |    3 +-
 fs/btrfs/tests/inode-tests.c           |   20 +-
 fs/btrfs/tests/qgroup-tests.c          |   30 +-
 fs/btrfs/transaction.c                 |   16 +-
 fs/btrfs/tree-checker.c                |  425 +++++++++++++
 fs/btrfs/tree-checker.h                |   26 +
 fs/btrfs/tree-log.c                    |   34 +-
 fs/btrfs/volumes.c                     |  168 +++---
 fs/btrfs/volumes.h                     |    2 -
 fs/btrfs/zlib.c                        |   15 +-
 fs/btrfs/zstd.c                        |    5 +
 include/trace/events/btrfs.h           |   41 +-
 include/uapi/linux/btrfs.h             |    8 +-
 include/uapi/linux/btrfs_tree.h        |    1 +
 51 files changed, 3356 insertions(+), 1556 deletions(-)
 create mode 100644 fs/btrfs/ref-verify.c
 create mode 100644 fs/btrfs/ref-verify.h
 create mode 100644 fs/btrfs/tree-checker.c
 create mode 100644 fs/btrfs/tree-checker.h

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

* Re: [GIT PULL] Btrfs changes for 4.15
  2017-11-13 15:35 [GIT PULL] Btrfs changes for 4.15 David Sterba
@ 2017-11-13 23:39 ` Qu Wenruo
  2017-11-14 14:50   ` David Sterba
  2017-11-15 19:59   ` Duncan
  0 siblings, 2 replies; 4+ messages in thread
From: Qu Wenruo @ 2017-11-13 23:39 UTC (permalink / raw)
  To: David Sterba, torvalds; +Cc: clm, linux-btrfs, linux-kernel


[-- Attachment #1.1: Type: text/plain, Size: 13168 bytes --]



On 2017年11月13日 23:35, David Sterba wrote:
> Hi,
> 
> please pull the following btrfs changes. There are some new user features and
> the usual load of invisible enhancements or cleanups. The branch merges
> cleanly, has been frozen in case rc7 was the last one, so I send out the pull
> request early. Thanks.
> 
> 
> New features:
> 
> - extend mount options to specify zlib compression level, -o compress=zlib:9

However the support for it has a big problem, it will cause wild memory
access for "-o compress" mount option.

Kernel ASAN can detect it easily and we already have user report about
it. Btrfs/026 could also easily trigger it.

The fixing patch is submitted some days ago:
https://patchwork.kernel.org/patch/10042553/

And the default compression level when not specified is zero, which
means no compression but directly memory copy.

Thanks,
Qu

> 
> - v2 of ioctl "extent to inode mapping", addressing a usecase where we want to
>   retrieve more but inaccurate results and do the postprocessing in userspace,
>   aiding defragmentation or deduplication tools
> 
> - populate compression heuristics logic, do data sampling and try to guess
>   compressibility by: looking for repeated patterns, counting unique byte
>   values and distribution, calculating Shannon entropy;
>   this will need more benchmarking and possibly fine tuning, but the base
>   should be good enough
> 
> - enable indexing for btrfs as lower filesystem in overlayfs
> 
> - speedup page cache readahead during send on large files
> 
> 
> Internal enhancements:
> 
> - more sanity checks of b-tree items when reading them from disk
> 
> - more EINVAL/EUCLEAN fixups, missing BLK_STS_* conversion, other errno or
>   error handling fixes
> 
> - remove some homegrown IO-related logic, that's been obsoleted by core block
>   layer changes (batching, plug/unplug, own counters)
> 
> - add ref-verify, optional debugging feature to verify extent reference
>   accounting
> 
> - simplify code handling outstanding extents, make it more clear where and how
>   the accounting is done
> 
> - make delalloc reservations per-inode, simplify the code and make the logic
>   more straightforward
> 
> - extensive cleanup of delayed refs code
> 
> 
> Notable fixes:
> 
> - fix send ioctl on 32bit with 64bit kernel
> 
> 
> The branch top commit matches the signed tag for-4.15-tag.
> 
> ----------------------------------------------------------------
> The following changes since commit 0b07194bb55ed836c2cc7c22e866b87a14681984:
> 
>   Linux 4.14-rc7 (2017-10-29 13:58:38 -0700)
> 
> are available in the Git repository at:
> 
>   git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-4.15
> 
> for you to fetch changes up to d28e649a5c58b779b303c252c66ee84a0f2c3b32:
> 
>   btrfs: Fix bug for misused dev_t when lookup in dev state hash table. (2017-11-01 20:45:36 +0100)
> 
> ----------------------------------------------------------------
> Adam Borowski (1):
>       btrfs: allow setting zlib compression level via :9
> 
> Allen Pais (1):
>       btrfs: return -ENOMEM on allocation failure in btrfsic
> 
> Anand Jain (13):
>       btrfs: declare TRACE_DEFINE_ENUM for each of show_flush_state enum
>       btrfs: copy fsid to super_block s_uuid
>       btrfs: undo writable superblocke when sprouting fails
>       btrfs: fix BUG_ON in btrfs_init_new_device()
>       btrfs: error out if btrfs_attach_transaction() fails
>       btrfs: add_missing_dev() should return the actual error
>       btrfs: fix EIO misuse to report missing degraded option
>       btrfs: declare btrfs_report_missing_device() static
>       btrfs: fix use of error or warning for missing device
>       btrfs: use BLK_STS defines where needed
>       btrfs: use need_full_stripe() in __btrfs_map_block()
>       btrfs: fix false EIO for missing device
>       btrfs: remove BUG_ON in btrfs_rm_dev_replace_free_srcdev()
> 
> Arnd Bergmann (1):
>       btrfs: tree-checker: use %zu format string for size_t
> 
> Christophe JAILLET (1):
>       btrfs: tests: Fix a memory leak in error handling path in 'run_test()'
> 
> Christos Gkekas (2):
>       btrfs: Clean up dead code in root-tree
>       btrfs: Clean up unused variables in free-space-tree.c
> 
> Colin Ian King (2):
>       btrfs: avoid null pointer dereference on fs_info when calling btrfs_crit
>       btrfs: make array types static const, reduces object code size
> 
> David Sterba (4):
>       btrfs: scrub: get rid of sector_t
>       btrfs: rename page offset parameter in submit_extent_page
>       btrfs: get rid of sector_t and use u64 offset in submit_extent_page
>       btrfs: allow to set compression level for zlib
> 
> Goldwyn Rodrigues (1):
>       btrfs: cleanup extent locking sequence
> 
> Gu JinXiang (2):
>       btrfs: Use bd_dev to generate index when dev_state_hashtable add items.
>       btrfs: Fix bug for misused dev_t when lookup in dev state hash table.
> 
> Hans van Kranenburg (1):
>       btrfs: prefix sysfs attribute struct names
> 
> Josef Bacik (22):
>       btrfs: change how we decide to commit transactions during flushing
>       btrfs: fix send ioctl on 32bit with 64bit kernel
>       btrfs: add ref-verify mount option
>       btrfs: pass root to various extent ref mod functions
>       Btrfs: add a extent ref verify tool
>       Btrfs: only check delayed ref usage in should_end_transaction
>       btrfs: add a helper to return a head ref
>       btrfs: move extent_op cleanup to a helper
>       btrfs: breakout empty head cleanup to a helper
>       btrfs: move ref_mod modification into the if (ref) logic
>       btrfs: move all ref head cleanup to the helper function
>       btrfs: remove delayed_ref_node from ref_head
>       btrfs: remove type argument from comp_tree_refs
>       btrfs: add assertions for releasing trans handle reservations
>       Btrfs: rework outstanding_extents
>       btrfs: add tracepoints for outstanding extents mods
>       btrfs: make the delalloc block rsv per inode
>       btrfs: switch args for comp_*_refs
>       btrfs: add a comp_refs() helper
>       btrfs: track refs in a rb_tree instead of a list
>       btrfs: don't call btrfs_start_delalloc_roots in flushoncommit
>       btrfs: move btrfs_truncate_block out of trans handle
> 
> Kuanling Huang (1):
>       Btrfs: send, apply asynchronous page cache readahead to enhance page read
> 
> Liu Bo (13):
>       Btrfs: remove batch plug in run_scheduled_IO
>       Btrfs: move finish_wait out of the loop
>       Btrfs: use wait_event instead of a single function
>       Btrfs: protect conditions within root->log_mutex while waiting
>       Btrfs: search parity device wisely
>       Btrfs: do not async submit for nodatasum inodes
>       Btrfs: make plug in writing meta blocks really work
>       Btrfs: remove bio_flags which indicates a meta block of log-tree
>       Btrfs: fix confusing worker helper info in stacktrace
>       Btrfs: fix memory leak in raid56
>       Btrfs: remove nr_async_bios
>       Btrfs: do not make defrag wait on async_delalloc_pages
>       Btrfs: remove nr_async_submits and async_submit_draining
> 
> Nikolay Borisov (11):
>       btrfs: Remove redundant forward declarations
>       btrfs: Remove unused variable
>       btrfs: Remove unused parameters from various functions
>       btrfs: Remove unused arguments from btrfs_changed_cb_t
>       btrfs: Remove unused parameter from check_direct_IO
>       btrfs: Rework error handling of add_extent_mapping in __btrfs_alloc_chunk
>       btrfs: Remove redundant argument of __link_block_group
>       btrfs: Explicitly handle btrfs_update_root failure
>       btrfs: Refactor transaction handling in received subvolume ioctl
>       btrfs: Replace opencoded sizes with their symbolic constants
>       btrfs: send: remove unused code
> 
> Omar Sandoval (2):
>       Btrfs: make some volumes.c functions static
>       Btrfs: fix __user casting in ioctl.c
> 
> Qu Wenruo (9):
>       btrfs: Refactor check_leaf function for later expansion
>       btrfs: Check if item pointer overlaps with the item itself
>       btrfs: Add sanity check for EXTENT_DATA when reading out leaf
>       btrfs: Add checker for EXTENT_CSUM
>       btrfs: Move leaf and node validation checker to tree-checker.c
>       btrfs: tree-checker: Enhance btrfs_check_node output
>       btrfs: tree-checker: Enhance output for btrfs_check_leaf
>       btrfs: tree-checker: Enhance output for check_csum_item
>       btrfs: tree-checker: Enhance output for check_extent_data_item
> 
> Rakesh Pandit (1):
>       btrfs: use appropriate replacements for __sb_{start,end}_write calls
> 
> Satoru Takeuchi (1):
>       btrfs: convert all mount option checking code to use btrfs_test_opt
> 
> Thomas Meyer (1):
>       btrfs: Fix bool initialization/comparison
> 
> Timofey Titovets (9):
>       Btrfs: cleanup 'start' subtraction from try uncompressed inline extent
>       Btrfs: compress_file_range remove dead variable num_bytes
>       Btrfs: compression: separate heuristic/compression workspaces
>       Btrfs: heuristic: add bucket and sample counters and other defines
>       Btrfs: heuristic: implement sampling logic
>       Btrfs: heuristic: add detection of repeated data patterns
>       Btrfs: heuristic: add byte set calculation
>       Btrfs: heuristic: add byte core set calculation
>       Btrfs: heuristic: add Shannon entropy calculation
> 
> Zygo Blaxell (3):
>       btrfs: add a flag to iterate_inodes_from_logical to find all extent refs for uncompressed extents
>       btrfs: add a flags argument to LOGICAL_INO and call it LOGICAL_INO_V2
>       btrfs: increase output size for LOGICAL_INO_V2 ioctl
> 
>  fs/btrfs/Kconfig                       |   11 +
>  fs/btrfs/Makefile                      |    3 +-
>  fs/btrfs/async-thread.c                |    2 +-
>  fs/btrfs/backref.c                     |   72 ++-
>  fs/btrfs/backref.h                     |    8 +-
>  fs/btrfs/btrfs_inode.h                 |   29 +-
>  fs/btrfs/check-integrity.c             |    8 +-
>  fs/btrfs/compression.c                 |  493 ++++++++++++++-
>  fs/btrfs/compression.h                 |    6 +-
>  fs/btrfs/ctree.c                       |   17 +-
>  fs/btrfs/ctree.h                       |   30 +-
>  fs/btrfs/delayed-inode.c               |   46 +-
>  fs/btrfs/delayed-ref.c                 |  296 +++++----
>  fs/btrfs/delayed-ref.h                 |   54 +-
>  fs/btrfs/disk-io.c                     |  227 ++-----
>  fs/btrfs/extent-tree.c                 |  829 ++++++++++++-------------
>  fs/btrfs/extent_io.c                   |   44 +-
>  fs/btrfs/extent_io.h                   |    1 -
>  fs/btrfs/file.c                        |   50 +-
>  fs/btrfs/free-space-tree.c             |    4 -
>  fs/btrfs/inode-map.c                   |    3 +-
>  fs/btrfs/inode.c                       |  327 ++++------
>  fs/btrfs/ioctl.c                       |  156 +++--
>  fs/btrfs/lzo.c                         |    5 +
>  fs/btrfs/ordered-data.c                |   21 +-
>  fs/btrfs/qgroup.c                      |    8 +-
>  fs/btrfs/raid56.c                      |   30 +-
>  fs/btrfs/ref-verify.c                  | 1031 ++++++++++++++++++++++++++++++++
>  fs/btrfs/ref-verify.h                  |   62 ++
>  fs/btrfs/relocation.c                  |   17 +-
>  fs/btrfs/root-tree.c                   |    4 -
>  fs/btrfs/scrub.c                       |   22 +-
>  fs/btrfs/send.c                        |   74 +--
>  fs/btrfs/send.h                        |    2 +-
>  fs/btrfs/super.c                       |   37 +-
>  fs/btrfs/sysfs.c                       |   63 +-
>  fs/btrfs/sysfs.h                       |   26 +-
>  fs/btrfs/tests/free-space-tree-tests.c |    3 +-
>  fs/btrfs/tests/inode-tests.c           |   20 +-
>  fs/btrfs/tests/qgroup-tests.c          |   30 +-
>  fs/btrfs/transaction.c                 |   16 +-
>  fs/btrfs/tree-checker.c                |  425 +++++++++++++
>  fs/btrfs/tree-checker.h                |   26 +
>  fs/btrfs/tree-log.c                    |   34 +-
>  fs/btrfs/volumes.c                     |  168 +++---
>  fs/btrfs/volumes.h                     |    2 -
>  fs/btrfs/zlib.c                        |   15 +-
>  fs/btrfs/zstd.c                        |    5 +
>  include/trace/events/btrfs.h           |   41 +-
>  include/uapi/linux/btrfs.h             |    8 +-
>  include/uapi/linux/btrfs_tree.h        |    1 +
>  51 files changed, 3356 insertions(+), 1556 deletions(-)
>  create mode 100644 fs/btrfs/ref-verify.c
>  create mode 100644 fs/btrfs/ref-verify.h
>  create mode 100644 fs/btrfs/tree-checker.c
>  create mode 100644 fs/btrfs/tree-checker.h
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 520 bytes --]

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

* Re: [GIT PULL] Btrfs changes for 4.15
  2017-11-13 23:39 ` Qu Wenruo
@ 2017-11-14 14:50   ` David Sterba
  2017-11-15 19:59   ` Duncan
  1 sibling, 0 replies; 4+ messages in thread
From: David Sterba @ 2017-11-14 14:50 UTC (permalink / raw)
  To: Qu Wenruo; +Cc: David Sterba, torvalds, clm, linux-btrfs, linux-kernel

On Tue, Nov 14, 2017 at 07:39:11AM +0800, Qu Wenruo wrote:
> > - extend mount options to specify zlib compression level, -o compress=zlib:9
> 
> However the support for it has a big problem, it will cause wild memory
> access for "-o compress" mount option.
> 
> Kernel ASAN can detect it easily and we already have user report about
> it. Btrfs/026 could also easily trigger it.
> 
> The fixing patch is submitted some days ago:
> https://patchwork.kernel.org/patch/10042553/
> 
> And the default compression level when not specified is zero, which
> means no compression but directly memory copy.

This fix will go in next pull request. Thanks.

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

* Re: [GIT PULL] Btrfs changes for 4.15
  2017-11-13 23:39 ` Qu Wenruo
  2017-11-14 14:50   ` David Sterba
@ 2017-11-15 19:59   ` Duncan
  1 sibling, 0 replies; 4+ messages in thread
From: Duncan @ 2017-11-15 19:59 UTC (permalink / raw)
  To: linux-kernel; +Cc: linux-btrfs

Qu Wenruo posted on Tue, 14 Nov 2017 07:39:11 +0800 as excerpted:

>> New features:
>> 
>> - extend mount options to specify zlib compression level, -o
>> compress=zlib:9
> 
> However the support for it has a big problem, it will cause wild memory
> access for "-o compress" mount option.
> 
> Kernel ASAN can detect it easily and we already have user report about
> it. Btrfs/026 could also easily trigger it.
> 
> The fixing patch is submitted some days ago:
> https://patchwork.kernel.org/patch/10042553/
> 
> And the default compression level when not specified is zero, which
> means no compression but directly memory copy.

When not specified means ???

There's a couple possibilities:

* -o compress (zlib as default, no compression level specified)

* -o compress=zlib (zlib specified, no compression level specified)

Maybe both are considered unspecified and thus no compression, now?

Regardless, defaulting to zero compression changes current behavior, 
doesn't it?  It's also entirely unintuitive that specifying compression 
means _no_ compression.

With both that and the wild memory access being known issues, why is this 
being merged without the known fix (at least to the wild memory access) 
folded in, potentially breaking bisects even if people are more careful 
than to start testing pre-rc1.

-o compress=lzo continues to work as expected, I hope?

-- 
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman

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

end of thread, other threads:[~2017-11-15 19:59 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-13 15:35 [GIT PULL] Btrfs changes for 4.15 David Sterba
2017-11-13 23:39 ` Qu Wenruo
2017-11-14 14:50   ` David Sterba
2017-11-15 19:59   ` Duncan

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.