{"push_id":2354908054,"size":30,"distinct_size":30,"ref":"refs/heads/devel","head":"242663345a2a739c6f42f6fedcccb096e60209d3","before":"6372a87adecdd6985e7729f173bbbd8ea8342f74","commits":[{"sha":"502e2a3510c5db03335c0df8abc7f9804a65207b","author":{"name":"Omar Sandoval","email":"39102d44aa5274bc7139838962c296ef0b609c1e@fb.com"},"message":"Add libbtrfsutil\n\nCurrently, users wishing to manage Btrfs filesystems programatically\nhave to shell out to btrfs-progs and parse the output. This isn't ideal.\nThe goal of libbtrfsutil is to provide a library version of as many of\nthe operations of btrfs-progs as possible and to migrate btrfs-progs to\nuse it.\n\nRather than simply refactoring the existing btrfs-progs code, the code\nhas to be written from scratch for a couple of reasons:\n\n* A lot of the btrfs-progs code was not designed with a nice library API\n  in mind in terms of reusability, naming, and error reporting.\n* libbtrfsutil is licensed under the LGPL, whereas btrfs-progs is under\n  the GPL, which makes it dubious to directly copy or move the code.\n\nEventually, most of the low-level btrfs-progs code should either live in\nlibbtrfsutil or the shared kernel/userspace filesystem code, and\nbtrfs-progs will just be the CLI wrapper.\n\nThis first commit just includes the build system changes, license,\nREADME, and error reporting helper.\n\nSigned-off-by: Omar Sandoval <osandov@fb.com>\nReviewed-by: Liu Bo <bo.li.liu@oracle.com>\nSigned-off-by: David Sterba <dsterba@suse.com>","distinct":true,"url":"https://api.github.com/repos/kdave/btrfs-progs/commits/502e2a3510c5db03335c0df8abc7f9804a65207b"},{"sha":"d51e8b128f598a31933367ca0fa14b6875b34ca0","author":{"name":"David Sterba","email":"2a1b63fbe60861bed635596eb6fd114917061844@suse.com"},"message":"btrfs-progs: ci: add python dependencies for libbtrfsutil\n\nInstall the setuptools. Python is not yet in the musl image, so the\nbuild is disabled there.\n\nSigned-off-by: David Sterba <dsterba@suse.com>","distinct":true,"url":"https://api.github.com/repos/kdave/btrfs-progs/commits/d51e8b128f598a31933367ca0fa14b6875b34ca0"},{"sha":"23c01b3c1b0803950657f3f29914cd59f3554a84","author":{"name":"Omar Sandoval","email":"39102d44aa5274bc7139838962c296ef0b609c1e@fb.com"},"message":"libbtrfsutil: add Python bindings\n\nThe C libbtrfsutil library isn't very useful for scripting, so we also\nwant bindings for Python. Writing unit tests in Python is also much\neasier than doing so in C. Only Python 3 is supported; if someone really\nwants Python 2 support, they can write their own bindings. This commit\nis just the scaffolding.\n\nSigned-off-by: Omar Sandoval <osandov@fb.com>\nSigned-off-by: David Sterba <dsterba@suse.com>","distinct":true,"url":"https://api.github.com/repos/kdave/btrfs-progs/commits/23c01b3c1b0803950657f3f29914cd59f3554a84"},{"sha":"bad4208da33f3ef2adf9af2b06a597f2ce23d228","author":{"name":"Omar Sandoval","email":"39102d44aa5274bc7139838962c296ef0b609c1e@fb.com"},"message":"libbtrfsutil: add qgroup inheritance helpers\n\nWe want to hide struct btrfs_qgroup_inherit from the user because that\ncomes from the Btrfs UAPI headers. Instead, wrap it in a struct\nbtrfs_util_qgroup_inherit and provide helpers to manipulate it. This\nwill be used for subvolume and snapshot creation.\n\nSigned-off-by: Omar Sandoval <osandov@fb.com>\nSigned-off-by: David Sterba <dsterba@suse.com>","distinct":true,"url":"https://api.github.com/repos/kdave/btrfs-progs/commits/bad4208da33f3ef2adf9af2b06a597f2ce23d228"},{"sha":"9615c23d1570c22a249c9eced754156e844c26b6","author":{"name":"Omar Sandoval","email":"39102d44aa5274bc7139838962c296ef0b609c1e@fb.com"},"message":"libbtrfsutil: add filesystem sync helpers\n\nNamely, sync, start_sync, and wait_sync.\n\nSigned-off-by: Omar Sandoval <osandov@fb.com>\nSigned-off-by: David Sterba <dsterba@suse.com>","distinct":true,"url":"https://api.github.com/repos/kdave/btrfs-progs/commits/9615c23d1570c22a249c9eced754156e844c26b6"},{"sha":"e9097ad59321f30e05bbc0cd1b41224b26125088","author":{"name":"Qu Wenruo","email":"5cd44384b9e83d7e6ef5ce960c2af66c6abb4ffc@suse.com"},"message":"btrfs-progs: Refactor parameter of BTRFS_MAX_DEVS() from root to fs_info\n\nSigned-off-by: Qu Wenruo <wqu@suse.com>\nSigned-off-by: David Sterba <dsterba@suse.com>","distinct":true,"url":"https://api.github.com/repos/kdave/btrfs-progs/commits/e9097ad59321f30e05bbc0cd1b41224b26125088"},{"sha":"12becfe1220bb4e45e529d4d2363394431605deb","author":{"name":"Qu Wenruo","email":"5cd44384b9e83d7e6ef5ce960c2af66c6abb4ffc@suse.com"},"message":"btrfs-progs: Introduce btrfs_raid_array and related infrastructures\n\nAs part of the effort to unify code and behavior between btrfs-progs and\nkernel, copy the btrfs_raid_array from kernel to btrfs-progs.\n\nSo later we can use the btrfs_raid_array[] to get needed raid info other\nthan manually do if-else branches.\n\nSigned-off-by: Qu Wenruo <wqu@suse.com>\nSigned-off-by: David Sterba <dsterba@suse.com>","distinct":true,"url":"https://api.github.com/repos/kdave/btrfs-progs/commits/12becfe1220bb4e45e529d4d2363394431605deb"},{"sha":"f174972d2dd1f2e6c9ca62839061782a22971070","author":{"name":"Qu Wenruo","email":"5cd44384b9e83d7e6ef5ce960c2af66c6abb4ffc@suse.com"},"message":"btrfs-progs: volumes: Allow find_free_dev_extent() to return maximum hole size\n\nJust as kernel find_free_dev_extent(), allow it to return maximum hole\nsize for us to build device list for later chunk allocator rework.\n\nSigned-off-by: Qu Wenruo <wqu@suse.com>\nSigned-off-by: David Sterba <dsterba@suse.com>","distinct":true,"url":"https://api.github.com/repos/kdave/btrfs-progs/commits/f174972d2dd1f2e6c9ca62839061782a22971070"},{"sha":"b3b79aaf8a7f8115c6dd548cb82b51e861607bf2","author":{"name":"Qu Wenruo","email":"5cd44384b9e83d7e6ef5ce960c2af66c6abb4ffc@suse.com"},"message":"btrfs-progs: Move chunk stripe size calcution function to volumes.h\n\nSigned-off-by: Qu Wenruo <wqu@suse.com>\nSigned-off-by: David Sterba <dsterba@suse.com>","distinct":true,"url":"https://api.github.com/repos/kdave/btrfs-progs/commits/b3b79aaf8a7f8115c6dd548cb82b51e861607bf2"},{"sha":"d336ca146c1fadc102c8d3342348344135f9b9a8","author":{"name":"Omar Sandoval","email":"39102d44aa5274bc7139838962c296ef0b609c1e@fb.com"},"message":"libbtrfsutil: fix Python tests\n\nThese were broken when the patch series got shuffled around.\n\nSigned-off-by: Omar Sandoval <osandov@fb.com>\nSigned-off-by: David Sterba <dsterba@suse.com>","distinct":true,"url":"https://api.github.com/repos/kdave/btrfs-progs/commits/d336ca146c1fadc102c8d3342348344135f9b9a8"},{"sha":"8bc33414b1419cbf8579cfc93b6b30cc1cced7ce","author":{"name":"Omar Sandoval","email":"39102d44aa5274bc7139838962c296ef0b609c1e@fb.com"},"message":"libbtrfsutil: copy in Btrfs UAPI headers\n\nSystems with older kernels won't have these available, and the copies in\nbtrfs-progs aren't quite compatible, so for now, let's just copy these\nin. We can potentially deduplicate some of this in the future.\n\nSigned-off-by: Omar Sandoval <osandov@fb.com>\nSigned-off-by: David Sterba <dsterba@suse.com>","distinct":true,"url":"https://api.github.com/repos/kdave/btrfs-progs/commits/8bc33414b1419cbf8579cfc93b6b30cc1cced7ce"},{"sha":"276830d126689732d502a007cfd2fdba0793507f","author":{"name":"Omar Sandoval","email":"39102d44aa5274bc7139838962c296ef0b609c1e@fb.com"},"message":"libbtrfsutil: add btrfs_util_is_subvolume() and btrfs_util_subvolume_id()\n\nThese are the most trivial helpers in the library and will be used to\nimplement several of the more involved functions.\n\nSigned-off-by: Omar Sandoval <osandov@fb.com>\nSigned-off-by: David Sterba <dsterba@suse.com>","distinct":true,"url":"https://api.github.com/repos/kdave/btrfs-progs/commits/276830d126689732d502a007cfd2fdba0793507f"},{"sha":"37d35d0e0cbd52ee22f406d587a09eb7e0315bd6","author":{"name":"Omar Sandoval","email":"39102d44aa5274bc7139838962c296ef0b609c1e@fb.com"},"message":"libbtrfsutil: add btrfs_util_create_subvolume()\n\nDoing the ioctl() directly isn't too bad, but passing in a full path is\nmore convenient than opening the parent and passing the path component.\n\nSigned-off-by: Omar Sandoval <osandov@fb.com>\nSigned-off-by: David Sterba <dsterba@suse.com>","distinct":true,"url":"https://api.github.com/repos/kdave/btrfs-progs/commits/37d35d0e0cbd52ee22f406d587a09eb7e0315bd6"},{"sha":"23b57b5bf961b477cab13d61fb8768c89d7bd311","author":{"name":"Omar Sandoval","email":"39102d44aa5274bc7139838962c296ef0b609c1e@fb.com"},"message":"libbtrfsutil: add btrfs_util_subvolume_path()\n\nWe can just walk up root backrefs with BTRFS_IOC_TREE_SEARCH and inode\npaths with BTRFS_IOC_INO_LOOKUP.\n\nSigned-off-by: Omar Sandoval <osandov@fb.com>\nSigned-off-by: David Sterba <dsterba@suse.com>","distinct":true,"url":"https://api.github.com/repos/kdave/btrfs-progs/commits/23b57b5bf961b477cab13d61fb8768c89d7bd311"},{"sha":"1286b55e6cd13037fad7bf417fb8ebe176f4a7e4","author":{"name":"Omar Sandoval","email":"39102d44aa5274bc7139838962c296ef0b609c1e@fb.com"},"message":"libbtrfsutil: add btrfs_util_subvolume_info()\n\nThis gets the the information in `btrfs subvolume show` from the root\nitem.\n\nSigned-off-by: Omar Sandoval <osandov@fb.com>\nSigned-off-by: David Sterba <dsterba@suse.com>","distinct":true,"url":"https://api.github.com/repos/kdave/btrfs-progs/commits/1286b55e6cd13037fad7bf417fb8ebe176f4a7e4"},{"sha":"6c04077fb9d65780f44a71519962406f89d30a51","author":{"name":"Omar Sandoval","email":"39102d44aa5274bc7139838962c296ef0b609c1e@fb.com"},"message":"libbtrfsutil: add btrfs_util_[gs]et_read_only()\n\nIn the future, btrfs_util_[gs]et_subvolume_flags() might be useful, but\nsince these are the only subvolume flags we've defined in all this time,\nthis will do for now.\n\nSigned-off-by: Omar Sandoval <osandov@fb.com>\nSigned-off-by: David Sterba <dsterba@suse.com>","distinct":true,"url":"https://api.github.com/repos/kdave/btrfs-progs/commits/6c04077fb9d65780f44a71519962406f89d30a51"},{"sha":"91db80b3825338ba7bc45987b0db39bd4f22381b","author":{"name":"Omar Sandoval","email":"39102d44aa5274bc7139838962c296ef0b609c1e@fb.com"},"message":"libbtrfsutil: add btrfs_util_[gs]et_default_subvolume()\n\nset_default_subvolume() is a trivial ioctl(), but there's no ioctl() for\nget_default_subvolume(), so we need to search the root tree.\n\nSigned-off-by: Omar Sandoval <osandov@fb.com>\nSigned-off-by: David Sterba <dsterba@suse.com>","distinct":true,"url":"https://api.github.com/repos/kdave/btrfs-progs/commits/91db80b3825338ba7bc45987b0db39bd4f22381b"},{"sha":"e5c5d9e7005d6c63510a52e74d84789403492c6e","author":{"name":"David Sterba","email":"2a1b63fbe60861bed635596eb6fd114917061844@suse.com"},"message":"libbtrfsutil: add stub for reallocarray\n\nThis function is new in glibc 2.26 and breaks build in CI and possibly\nother environments.\n\nSigned-off-by: David Sterba <dsterba@suse.com>","distinct":true,"url":"https://api.github.com/repos/kdave/btrfs-progs/commits/e5c5d9e7005d6c63510a52e74d84789403492c6e"},{"sha":"734385136c0c3d8f29753e360b6ed65f67d3180d","author":{"name":"Omar Sandoval","email":"39102d44aa5274bc7139838962c296ef0b609c1e@fb.com"},"message":"libbtrfsutil: add subvolume iterator helpers\n\nThis is how we can implement stuff like `btrfs subvol list`. Rather than\nproducing the entire list upfront, the iterator approach uses less\nmemory in the common case where the whole list is not stored (O(max\nsubvolume path length)). It supports both pre-order traversal (useful\nfor, e.g, recursive snapshot) and post-order traversal (useful for\nrecursive delete).\n\nSigned-off-by: Omar Sandoval <osandov@fb.com>\nSigned-off-by: David Sterba <dsterba@suse.com>","distinct":true,"url":"https://api.github.com/repos/kdave/btrfs-progs/commits/734385136c0c3d8f29753e360b6ed65f67d3180d"},{"sha":"85c3b8a503c496acc289bdfdd80458629ae4796f","author":{"name":"Omar Sandoval","email":"39102d44aa5274bc7139838962c296ef0b609c1e@fb.com"},"message":"libbtrfsutil: add btrfs_util_create_snapshot()\n\nThanks to subvolume iterators, we can also implement recursive snapshot\nfairly easily.\n\nSigned-off-by: Omar Sandoval <osandov@fb.com>\nSigned-off-by: David Sterba <dsterba@suse.com>","distinct":true,"url":"https://api.github.com/repos/kdave/btrfs-progs/commits/85c3b8a503c496acc289bdfdd80458629ae4796f"}]}
{"actor":{"display_login":"kdave"}}