On 2016-07-25 04:14, Qu Wenruo wrote: > Hi Goffredo, > > At 07/24/2016 07:03 PM, Goffredo Baroncelli wrote: >> Hi all, >> >> the following patches add two new commands: 1) btrfs >> inspect-internal physical-find 2) btrfs inspect-internal >> physical-dump >> >> The aim of these two new commands is to locate (1) and dump (2) the >> stripe elements stored on the disks. I developed these two new >> command to simplify the debugging of some RAID5 bugs (but this is >> another discussion). > > That's pretty nice function. However the function seems to be a > combination of fiemap(to resolve file to logical) and resolve logical > (to resolve logical to on-device bytenr), with RAID5/6 specific > flags. > > > Instead of introduce a new functions doing a combination of existing > features, would you mind expanding current logical-resolve?
[I suppose that you are referring to ./btrfs-map-logical and not logical-resolve] Before developing these two utils, I was unaware of logical-resolve. Frankly speaking I am skeptical to extend btrfs-map-logical, which is outside the "btrfs" family function. So I consider it as legacy code: the one which should not be extended, because it was born as "a quick and dirty" utility. Finally, there is a big differences between my tools and btrfs-map-logical. The former needs a mounted filesystem, the latter doesn't. > > IMHO, it's not a good idea to cross two different logical > layers(file<->logical mapping layer and logical<->dev exten mapping > layer) in one function. Indeed, it was the goal. The use case it a tool to help to find bug in the raid5 code. Before my tools, I used some hacks to parse the output of filefrag and combing this with btrfs-debug-tree info.. So I develop "btrfs insp physical-find". Then Chris asked me to make a further step, so I made 'btrfs insp physical-dump'. I think that definitely we need a tool like "btrfs insp physical-find/dump". If you think that btrfs-map-logical has its use case, I can develop further physical-dump/find to start from a "logical" address instead of a file: it would be a lot more simple to me than extend btrfs-map-logical. > > Thanks, Qu >> >> An example of 'btrfs inspect-internal physical-find' is the >> following: >> >> # btrfs inspect physical-find mnt/out.txt mnt/out.txt: 0 devid: 3 >> dev_name: /dev/loop2 offset: 61931520 type: DATA devid: 2 dev_name: >> /dev/loop1 offset: 61931520 type: OTHER devid: 1 dev_name: >> /dev/loop0 offset: 81854464 type: PARITY devid: 4 dev_name: >> /dev/loop3 offset: 61931520 type: PARITY >> >> In the output above, DATA is the stripe elemnt conaining data. >> OTHER is the sibling stripe elemnt: it contains data related to or >> other files or to the same file but different position. The two >> stripe elements contain the RAID6 parity (P and Q). >> >> It is possible to pass the offset of the file to inspect. >> >> An example of 'btrfs inspect-internal physical-dump' is the >> following >> >> # btrfs insp physical-find mnt/out.txt mnt/out.txt: 0 devid: 5 >> dev_name: /dev/loop4 offset: 56819712 type: OTHER devid: 4 >> dev_name: /dev/loop3 offset: 56819712 type: OTHER devid: 3 >> dev_name: /dev/loop2 offset: 56819712 type: DATA devid: 2 dev_name: >> /dev/loop1 offset: 56819712 type: PARITY devid: 1 dev_name: >> /dev/loop0 offset: 76742656 type: PARITY >> >> # btrfs insp physical-dump mnt/out.txt | xxd mnt/out.txt: 0 file: >> /dev/loop2 off=56819712 00000000: 6164 6161 6161 6161 6161 6161 >> 6161 6161 adaaaaaaaaaaaaaa 00000010: 6161 6161 6161 6161 6161 6161 >> 6161 6161 aaaaaaaaaaaaaaaa 00000020: 6161 6161 6161 6161 6161 6161 >> 6161 6161 aaaaaaaaaaaaaaaa 00000030: 6161 6161 6161 6161 6161 6161 >> 6161 6161 aaaaaaaaaaaaaaaa 00000040: 6161 6161 6161 6161 6161 6161 >> 6161 6161 aaaaaaaaaaaaaaaa [...] >> >> In this case it is dumped the content of the first 4k of the file. >> It is possible to pass also an offset (at step of 4k). Moreover it >> is possible to select to dump: which copy has to be dumped (switch >> -c, only for RAID1/RAID10/DUP); which parity has to be dumped >> (switch -p, only for RAID5/RAID6); which stripe element other than >> data (switch -s, only for RAID5/RAID6). >> >> BR G.Baroncelli >> >> >> -- 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 >> >> > > > -- 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 > -- gpg @keyserver.linux.it: Goffredo Baroncelli <kreijackATinwind.it> Key fingerprint BBF5 1610 0B64 DAC6 5F7D 17B2 0EDA 9B37 8B82 E0B5 -- 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