Code Monkey home page Code Monkey logo

btrfs-progs's Introduction

Btrfs-progs build status coverity status gitlab CI/CD

Userspace utilities to manage btrfs filesystems. License: GPLv2.

Btrfs is a copy on write (COW) filesystem for Linux aimed at implementing advanced features while focusing on fault tolerance, repair and easy administration.

This repository hosts following utilities:

  • btrfs โ€” the main administration tool (manual page)
  • mkfs.btrfs โ€” utility to create the filesystem (manual page)
  • all-in-one binary in the busybox style with mkfs.btrfs, btrfs-image and other tools built-in (standalone tools)

The C and python 3 bindings are provided by a LGPL library libbtrfsutil see libbtrfsutil/README.md for more.

See INSTALL for build instructions and tests/README.md for testing information.

Release cycle

The major version releases are time-based and follow the cycle of the linux kernel releases. The cycle usually takes 2 months. A minor version releases may happen in the meantime if there are bug fixes or minor useful improvements queued.

The release tags are signed with a GPG key ID F2B4 1200 C54E FB30 380C 1756 C565 D5F9 D76D 583B, release tarballs are hosted at kernel.org. See file CHANGES or changelogs on wiki.

Reporting bugs

There are several ways, each has its own specifics and audience that can give feedback or work on a fix. The following list is sorted in the order of preference:

  • github issue tracker
  • to the mailing list [email protected] -- (not required to subscribe), beware that the mail might get overlooked in other traffic
  • IRC (irc.freenode.net #btrfs) -- good for discussions eg. if a bug is already known, but reports could miss developers' attention
  • bugzilla.kernel.org -- (requires registration), set the product to Filesystems and component Btrfs, please put 'btrfs-progs' into the subject so it's clear that it's not a kernel bug report

Development

The patch submissions, development or general discussions take place at [email protected] mailinglist, subsciption is not required to post.

The GitHub pull requests will not be accepted directly, the preferred way is to send patches to the mailinglist instead. You can link to a branch in any git repository if the mails do not make it to the mailinglist or just for convenience (makes it easier to test).

The development model of btrfs-progs shares a lot with the kernel model. The github way is different in some ways. We, the upstream community, expect that the patches meet some criteria (often lacking in github contributions):

  • one logical change per patch: eg. not mixing bugfixes, cleanups, features etc., sometimes it's not clear and will be usually pointed out during reviews
  • proper subject line: eg. prefix with btrfs-progs: subpart, ... , descriptive yet not too long, see git log --oneline for some inspiration
  • proper changelog: the changelogs are often missing or lacking explanation why the change was made, or how is something broken, what are user-visible effects of the bug or the fix, how does an improvement help or the intended usecase
  • the Signed-off-by line: this documents who authored the change, you can read more about the The Developer's Certificate of Origin (chapter 11)
    • if you are not used to the signed-off style, your contributions won't be rejected just because of it's missing, the Author: tag will be added as a substitute in order to allow contributions without much bothering with formalities

Source code coding style and preferences follow the kernel coding style. You can find the editor settins in .editorconfig and use the EditorConfig plugin to let your editor use that, or update your editor settings manually.

Documentation updates

Documentation fixes or updates do not need much explanation so sticking to the code rules in the previous section is not necessary. GitHub pull requests are OK, patches could be sent to me directly and not required to be also in the mailinglist. Pointing out typos via IRC also works, although might get accidentally lost in the noise.

Third-party sources

Build dependencies are listed in INSTALL. Implementation of checksum/hash functions is provided by copies of the respective sources to avoid adding dependencies that would make deployments in rescure or limited environments harder. The implementations are portable and not optimized for speed nor accelerated. Optionally it's possible to use libgcrypt, libsodium or libkcapi implementations.

References

btrfs-progs's People

Contributors

adam900710 avatar adambuchbinder avatar asj avatar chrismason-xx avatar darkling avatar fdmanana avatar fougner avatar goldwynr avatar guaneryu avatar idryomov avatar jeffmahoney avatar jsoref avatar karelzak avatar kdave avatar kilobyte avatar knorrie avatar kreijack avatar lakshmipathi avatar lorddoskias avatar marcosps avatar morbidrsa avatar naota avatar osandov avatar rakeshpandit avatar sten0 avatar suyj-fnst avatar t-msn avatar ukernel avatar zabbo avatar zhaoleidd avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Forkers

zbisch

btrfs-progs's Issues

dduper: "No such file or directory" on broken links

Namaste !

thank you for dduper, looks like dduper does not handle broken links properly yet, here is what I get;

I tried to use it, ,but had no success with broken symlinks. Here is my report;

kalou@myvps:~/btrfs-progs$ df -h .
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/data-home 6.0G 4.4G 1.1G 81% /home

kalou@myvps:~/btrfs-progs$ git remote -v
origin https://gitlab.collabora.com/laks/btrfs-progs.git (fetch)
origin https://gitlab.collabora.com/laks/btrfs-progs.git (push)

kalou@myvps:~/btrfs-progs$ git branch -v

dump_csum 71303187 Update fast-mode option usage

kalou@myvps:~/btrfs-progs$ sudo python dduper --device=/dev/mapper/data-home --dir=/home --recurse

(...)
Skipped /home/ida/xsh/bin/treeps not unique regular files or file size < 4kb or size < 32768
Skipped /home/ida/xsh/etc/Makefile not unique regular files or file size < 4kb or size < 32768
Traceback (most recent call last):
File "dduper", line 330, in
main(results)
File "dduper", line 281, in main
dedupe_dir(results.dir_path, results.dry_run, results.recurse)
File "dduper", line 264, in dedupe_dir
if validate_file(fn) is True:
File "dduper", line 247, in validate_file
file_stat = os.stat(filename)
OSError: [Errno 2] No such file or directory: '/home/ida/xsh/etc/icecast.xml'

(this issue was fatal, and program stopped without deduping anything)

kalou@myvps:~/btrfs-progs$ df -h .

Filesystem Size Used Avail Use% Mounted on
/dev/mapper/data-home 6.0G 4.4G 1.1G 81% /home

root@myvps:~/btrfs-progs$ ls -l /home/ida/xsh/etc/icecast.xml
lrwxrwxrwx 1 ida ida 24 Dec 31 10:33 /home/ida/xsh/etc/icecast.xml -> ../Local/etc/icecast.xml

root@myvps:/home/ida/xsh/etc# ls -ltr icecast.xml
lrwxrwxrwx 1 ida ida 24 Dec 31 10:33 icecast.xml -> ../Local/etc/icecast.xml

root@myvps:/home/ida/xsh/etc# ls ../Local
ls: cannot access '../Local': No such file or directory

kalou@myvps:~/btrfs-progs$ uname -a
Linux myvps 4.19.0-8-amd64 #1 SMP Debian 4.19.98-1 (2020-01-26) x86_64 GNU/Linux

--
Reported by @Berryamin

inspect-internal dump-csum doesn't print leading zeros?

It prints the csums like this, with variable-length:

7d6c253f eed64b9c 35074662 31528ee6 698c68ed 46134188 cf889b36 bdb3141b 
de6d71b8 d76d428f a698d755 d0a69b33 2f993506 23afc40f 5836c189 bf14de8b 
12478f4b a5e6438d 5ebee31f 2a8b7e06 acb78 d190a6a7 af0e7374 5b96f9b5 
587719b3 67c30392 d7acd802 d6400cbc e19bfaae b57726b2 1c4f88e2 4baf63fc 
93913c9e e159ba2e 4fb43f49 395c4fb 1585b0e 6305714c 7d4d33c6 2d745b4b  
15afd56a 7ee9ba25 3a4b5257 1c0007bf 658373f4 9c0feb42 e54e4f7 2813cb5 

But these are always 4 bytes, right? Should it print the leading zeros, too?

7d6c253f eed64b9c 35074662 31528ee6 698c68ed 46134188 cf889b36 bdb3141b 
de6d71b8 d76d428f a698d755 d0a69b33 2f993506 23afc40f 5836c189 bf14de8b 
12478f4b a5e6438d 5ebee31f 2a8b7e06 000acb78 d190a6a7 af0e7374 5b96f9b5 
587719b3 67c30392 d7acd802 d6400cbc e19bfaae b57726b2 1c4f88e2 4baf63fc 
93913c9e e159ba2e 4fb43f49 0395c4fb 01585b0e 6305714c 7d4d33c6 2d745b4b  
15afd56a 7ee9ba25 3a4b5257 1c0007bf 658373f4 9c0feb42 0e54e4f7 02813cb5 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.