Re: Btrfs progs release 4.1

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





Qu Wenruo wrote on 2015/09/09 09:34 +0800:
Hi David,

Sorry for the late reply, but I noticed something interesting.

David Sterba wrote on 2015/06/22 17:00 +0200:
Hi,

btrfs-progs 4.1 have been released (in time with kernel 4.1). Unusual
load of
changes.

Fixed since rc1:
   - uuid rewrite prints the correct original UUID
   - map-logical updated
   - fi show size units
   - typos

* bugfixes
   - fsck.btrfs: no bash-isms
   - bugzilla 97171: invalid memory access (with tests)
   - receive:
     - cloning works with --chroot
     - capabilities not lost
   - mkfs: do not try to register bare file images
   - option --help accepted by the standalone utilities

* enhancements
   - corrupt block: ability to remove csums
   - mkfs:
     - warn if metadata redundancy is lower than for data
     - options to make the output quiet (only errors)
     - mixed case names of raid profiles accepted
     - rework the output:
       - more comprehensive, 'key: value' format
   - subvol:
     - show:
       - print received uuid
       - update the output
       - new options to specify size units
     - sync:
       - grab all deleted ids and print them as they're removed,
    previous implementation only checked if there are any
    to be deleted - change in command semantics
   - scrub: print timestamps in days HMS format
   - receive:
     - can specify mount point, do not rely on /proc
     - can work inside subvolumes
   - send:
     - new option to send stream without data (NO_FILE_DATA)
   - convert:
     - specify incompat features on the new fs
   - qgroup:
     - show: distinguish no limits and 0 limit value
     - limit: ability to clear the limit
   - help for 'btrfs' is shorter, 1st level command overview
   - debug tree: print key names according to their C name

* new
   - rescure zero-log
   - btrfsune:
     - rewrite uuid on a filesystem image
     - new option to turn on NO_HOLES incompat feature

* deprecated
   - standalone btrfs-zero-log

* other
   - testing framework updates
     - uuid rewrite test
     - btrfstune feature setting test
     - zero-log tests
     - more testing image formats
   - manual page updates
   - ioctl.h synced with current kernel uapi version
   - convert: preparatory works for more filesystems (reiserfs pending)
   - use static buffers for path handling where possible
   - add new helpers for send uilts that check memory allocations,
     switch all users, deprecate old helpers
   - Makefile: fix build dependency generation
   - map-logical: make it work again

Tarballs:
https://www.kernel.org/pub/linux/kernel/people/kdave/btrfs-progs/
Git: git://git.kernel.org/pub/scm/linux/kernel/git/kdave/btrfs-progs.git

Shortlog:

Anand Jain (2):
       btrfs-progs: add info about list-all to the help
       btrfs-progs: use function is_block_device() instead

Dimitri John Ledkov (1):
       btrfs-progs: fsck.btrfs: Fix bashism and bad getopts processing

Dongsheng Yang (4):
       btrfs-progs: qgroup: show 'none' when we did not limit it on
this qgroup
       btrfs-progs: qgroup: allow user to clear some limitation on
qgroup.
       btrfs-progs: qgroup limit: error out if input value is negative
       btrfs-progs: qgroup limit: add a check for invalid input of
'T/G/M/K'

Emil Karlson (1):
       btrfs-progs: use openat for process_clone in receive

Goffredo Baroncelli (4):
       btrfs-progs: add strdup in btrfs_add_to_fsid() to track the
device path
       btrfs-progs: return the fsid from make_btrfs()
       btrfs-progs: mkfs: track sizes of created block groups
       btrfs-progs: mkfs: print the summary

Jeff Mahoney (8):
       btrfs-progs: convert: clean up blk_iterate_data handling wrt
record_file_blocks
       btrfs-progs: convert: remove unused fs argument from
block_iterate_proc
       btrfs-progs: convert: remove unused inode_key in copy_single_inode
       btrfs-progs: convert: rename ext2_root to image_root
       btrfs-progs: compat: define DIV_ROUND_UP if not already defined
       btrfs-progs: convert: fix typo in btrfs_insert_dir_item call
       btrfs-progs: convert: factor out adding dirent into
convert_insert_dirent
       btrfs-progs: convert: factor out block iteration callback

Josef Bacik (3):
       Btrfs-progs: corrupt-block: add the ability to remove csums
       btrfs-progs: specify mountpoint for recieve
       btrfs-progs: make receive work inside of subvolumes

Qu Wenruo (13):
       btrfs-progs: Enhance read_tree_block to avoid memory corruption
       btrfs-progs: btrfstune: rework change_uuid
       btrfs-progs: btrfstune: add ability to restore unfinished fsid
change
       btrfs-progs: btrfstune: add '-U' and '-u' option to change fsid
       btrfs-progs: Documentation: uuid change
       btrfs-progs: btrfstune: fix a bug which makes unfinished fsid
change unrecoverable
       btrfs-progs: export read_extent_data function
       btrfs-progs: map-logical: introduce map_one_extent function
       Btrfs-progs: map-logical: introduce print_mapping_info function
       Btrfs-progs: map-logical: introduce write_extent_content function
       btrfs-progs: map-logical: Rework map-logical logics
       btrfs-progs: Allow "filesystem show" command to handle
different units
       btrfs-progs: docs: new size options for fi show

Sam Tygier (1):
       btrfs-progs: mkfs: check metadata redundancy

David Sterba (79):
       btrfs-progs: tests: log the test name in results file
       btrfs-progs: tests: support more formats of test images
       btrfs-progs: tests: use readlink -f to resolve path
       btrfs-progs: tests: sort image files
       btrfs-progs: test: 015-check-bad-memory-access
       btrfs-progs: tests: add script to clean intermediate images
       btrfs-progs: receive: restore capabilities after chown
       btrfs-progs: tests: add driver script for misc tests
       btrfs-progs: tests: common: add helper run_check_stdout
       btrfs-progs: tests: add misc test for fs features
       btrfs-progs: update .gitignore
       btrfs-progs: subvol show: print received uuid
       btrfs-progs: subvol show: tweak output
       btrfs-progs: btrfstune: rework option handling
       btrfs-progs: btrfstune: add option to enable NO_HOLES
       btrfs-progs: doc: update btrfstune manpage
       btrfs-progs: tests: add misc tests for uuid rewrite
       btrfs-progs: btrfstune: make uuid rewrite progress more verbose
       btrfs-progs: ioctl.h: reorder to match kernel uapi header
       btrfs-progs: ioctl.h: copy commented version of scrub_progress
structure
       btrfs-progs: ioctl.h: copy commented version of balance structures
       btrfs-progs: ioctl.h: add EXTENT_SAME ioctl and structures
       btrfs-progs: ioctl.h: add send flag mask
       btrfs-progs: ioctl.h: update type annotations
       btrfs-progs: ioctl.h: update btrfs_ioctl_fs_info_args
       btrfs-progs: ioctl.h: add btrfs_ioctl_feature_flags struct
       btrfs-progs: doc: update btrfs-rescue page and drop btrfs-zero-log
       btrfs-progs: scrub: more friendly duration format in status
       btrfs-progs: add function to stringify filesystem features
       btrfs-progs: convert: allow to set filesystem features

Tons of new patches, but at least I didn't find the patch in mail list
for the above convert patch, when I want to comment on it.

So I can only comment here.

[[Good fix even before we found the real bug]]
This convert patch is quite good, as it in fact addressed the
metadata-cross-map-boundary bug, even before we found it.

For the metadata crossing map boundary bug, the root cause was, for old
convert, we were using mixed block group by default but use wrong
node/leaf size.

For mixed block group case, node/leaf size must be the same with
sectorsize(4K on x86/x86_64), but we were using 16K leaf/node size in
that case. And causing tree blocks crossing map boundary.

I'm a little surprised kernel can still mount such image without major
bugs. But anyway, we still need to add new kernel check.
Sorry David, I found this explain is wrong, as kernel already has checked this case.

The problem is that, for converted image, it's quite possible that data and metadata extent are stored in one chunk even the chunk is not mixed.

I'll add fsck support for it soon.

BTW, the side effect still exists and may worth consideration.

Thanks,
Qu

[[Side effect]]
On the other hand, for convert case, unlike btrfs, ext2/3 is not extent
based, and their data/metadata aren't batched together.
Ext4 is a little better, but still not so extent-based like btrf.

If not using mixed block group, even for a newly created ext4 image,
btrfs-convert will create 13 block groups for the scattered ext4 data.
And things will be even worse if the ext4 image contains some data.

[[True fix]]
IMHO, I still prefer to use mixed block group for btrfs-convert, as that
fits better for the use case.

And what we really need is, to keep fixing btrfs-convert and kernel.
Banning mixed bg for convert case is just avoiding the real cause, and I
think that should be the last method.

Thanks,
Qu

       btrfs-progs: tests: update convert tests to set fs features
       btrfs-progs: cleanup and deprecate btrfs-zero-log
       btrfs-progs: tests: add test for zero-log
       btrfs-progs: mkfs: add option to make it quiet
       btrfs-progs: mkfs: accept mixed case for profile names
       btrfs-progs: mkfs: move info message out of btrfs_add_to_fsid
       btrfs-progs: mkfs: do not try to register non-block-devices
       btrfs-progs: mkfs, move uuid to the end of device summary
       btrfs-progs: mkfs, drop UUID from device summary
       btrfs-progs: mkfs: drop mixed from summary
       btrfs-progs: mkfs: make the summary more compact
       btrfs-progs: remove stray deprecation notice
       btrfs-progs: fix argv0_buf handling
       btrfs-progs: add command group info strings
       btrfs-progs: print compact help for btrfs
       btrfs-progs: receive: fix minor resource leak
       btrfs-progs: cleanup after errors in open_file_or_dir3
       btrfs-progs: subvol: let sync check only current deletions
       btrfs-progs: add helper to wait for subvolume cleaning
       btrfs-progs: add missing includes to header files
       btrfs-progs: accept --help as option in the standalone utilities
       btrfs-progs: print error within test_dev_for_mkfs
       btrfs-progs: print error within test_num_disk_vs_raid
       btrfs-progs: use less memory for pretty_size_mode buffers
       btrfs-progs: receive: implement the update_extent callback
       btrfs-progs: send: add option to for the no-data mode
       btrfs-progs: use PATH_MAX instead of BTRFS_PATH_NAME_MAX
       btrfs-progs: properly set up ioctl arguments
       btrfs-progs: receive: use static buffer for cur_subvol
       btrfs-progs: add helper for copying paths
       btrfs-progs: receive: use static buffer for mount point option
argument
       btrfs-progs: receive: use static buffer for source file
       btrfs-progs: send: use static buffer for output file name
       btrfs-progs: and new path_cat helpers to send utils
       btrfs-progs: send utils: switch callbacks to new helpers
       btrfs-progs: unify naming of key types in print-tree
       btrfs-progs: receive: use static buffer for root_subvol_path
       btrfs-progs: receive: use static buffer for write_path
       btrfs-progs: send utils: switch callbacks to patch_cat3_out
       btrfs-progs: receive: use static buffer for cur_subvol path
       btrfs-progs: send utils: deprecate path_cat and path_cat3
       btrfs-progs: Makefile: fix typo, dependencies for cmds-* files
       Btrfs progs v4.1-rc1
       btrfs-progs: tests: verify btrfstune output during uuid-rewrite
       btrfs-progs: btrfstune: print lowercase uuid during uuid rewrite
       btrfs-progs: btrfstune: print correct current uuid during rewrite
       btrfs-progs: configure: fix typo in summary
       btrfs-progs: INSTALL: fix typos
       Btrfs progs v4.1
--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in

--
To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux