On Fri, Jun 10, 2016 at 10:17 AM, Qu Wenruo <quwen...@cn.fujitsu.com> wrote: > > > At 06/02/2016 10:56 PM, Nikolaus Rath wrote: >> >> On Jun 02 2016, Qu Wenruo <quwen...@cn.fujitsu.com> wrote: >>> >>> At 06/02/2016 11:06 AM, Nikolaus Rath wrote: >>>> >>>> Hello, >>>> >>>> For one of my btrfs volumes, btrfsck reports a lot of the following >>>> warnings: >>>> >>>> [...] >>>> checking extents >>>> bad extent [138477568, 138510336), type mismatch with chunk >>>> bad extent [140091392, 140148736), type mismatch with chunk >>>> bad extent [140148736, 140201984), type mismatch with chunk >>>> bad extent [140836864, 140865536), type mismatch with chunk >>>> [...] >>>> >>>> Is there a way to discover which files are affected by this (in >>>> particular so that I can take a look at them before and after a btrfsck >>>> --repair)? >>> >>> >>> Which version is the progs? If the fs is not converted from ext2/3/4, >>> it may be a false alert. >> >> >> Version is 4.4.1. The fs may very well have been converted from ext4, >> but I can't tell for sure. >> >> >> Best, >> -Nikolaus >> > > Sorry for the late reply. > > For such case, btrfsck --repair is unable to fix it, as btrfs-progs is not > able to balance extents. > > Normally, a full balance would fix it. > > > I would try to update btrfs-progs to 4.5 and recheck, to see if it's a false > alert. > If not, then remove unused snapshots and then do the full balance. > > It's recommended to delete unused snapshots, as if there are too many > snapshots, balance may be quite slow.
You might want to try to balance only the ranges that are problematic if a recent kernel+tools still report this bad extents. AFAIK, in the 'bad extent [X, Y), type mismatch with chunk' text, the X and Y are logical byte numbers (virtual addresses). You can list all chunks with this: https://github.com/knorrie/btrfs-heatmap/blob/master/show_usage.py To force balance of this [X, Y) range, run btrfs balance start -v -dvrange=X..Y <mountpoint> or -mvrange or -svrange if [X, Y) is in a metadata resp. system chunk. The btrfs-debugfs python script in the git://git.kernel.org/pub/scm/linux/kernel/git/kdave/btrfs-progs.git sources might also help, but it does not list system and metadata chunks. After such a filtered balance, you should see at least one new chunk added (just see the highest virtual addr) In case the [X, Y) are physical, have a look at the man btrfs-balance drange filter. I currently don't know an answer to your post subject, but maybe less important as [X, Y) might also be not file contents related. -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html