{"id":18765189,"url":"https://github.com/illdefined/integrity-scrub","last_synced_at":"2025-04-13T05:10:42.004Z","repository":{"id":62440965,"uuid":"422726920","full_name":"illdefined/integrity-scrub","owner":"illdefined","description":"Scrub dm-integrity devices","archived":false,"fork":false,"pushed_at":"2025-02-17T11:43:55.000Z","size":118,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-26T22:02:16.396Z","etag":null,"topics":["block-device","dm-integrity","integrity-checker"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/illdefined.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-29T22:21:41.000Z","updated_at":"2025-02-17T11:43:58.000Z","dependencies_parsed_at":"2024-08-28T17:45:28.184Z","dependency_job_id":"8fd359d2-f6e7-4b39-9fce-7c26e0a843c5","html_url":"https://github.com/illdefined/integrity-scrub","commit_stats":{"total_commits":102,"total_committers":1,"mean_commits":102.0,"dds":0.0,"last_synced_commit":"0cab2e9bb38bd9d4919b486ad5770065c8c0ed76"},"previous_names":[],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/illdefined%2Fintegrity-scrub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/illdefined%2Fintegrity-scrub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/illdefined%2Fintegrity-scrub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/illdefined%2Fintegrity-scrub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/illdefined","download_url":"https://codeload.github.com/illdefined/integrity-scrub/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248625564,"owners_count":21135518,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["block-device","dm-integrity","integrity-checker"],"created_at":"2024-11-07T18:33:07.632Z","updated_at":"2025-04-13T05:10:41.992Z","avatar_url":"https://github.com/illdefined.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Synopsis\n\nThis tool attempts to read all logical sectors of a block device, overwriting any sector that cannot be read due to an\nI/O error with zeros. It is intended to restore Linux dm-integrity volumes with invalid (corrupted) integrity tags.\n\n## Usage\n\nIf you wish to scrub a volume, consider creating a backup of the underlying physical device first.\n\nThen run the tool with the volume device path (`/dev/mapper/…` or `/dev/dm-…`) as a command line argument.\n\nUnless you really know what you are doing, you should not run it on a mounted volume. Data written by the filesystem\nmight get overwritten by interleaved writes of the tool.\n\n## Implementation notes\n\nThe block device is first read in large chunks (the maximum sectors per request as reported by the `BLKSECTGET` ioctl).\nIf a read results in an integrity error (`EILSEQ`), the logical sectors in the chunk are read individually and any\nerroneous sector is overwritten with zeros.\n\nReads are performed using direct I/O (`O_DIRECT`), while writes rely on buffered I/O with chunk‐wise asynchronous\nflushing (`sync_file_range(2)`). Any outstanding writes are finalised using `fdatasync(3)` before the tool exits.\n\n## Caveat\n\nThis tool might delete all your data and summon a seal. Use it at your own risk. The seal will demand fish.\n\nIf you are not using a filesystem with copy‐on‐write semantics (e.g. btrfs) or data journalling (e.g. ext4 with\n`data=journal`), you should probably rely on dm-integrity’s data journal.\n\n## Intellectual property\n\nThis work is dedicated to the public domain under the terms of the\n[CC0 1.0 licence](https://creativecommons.org/publicdomain/zero/1.0/).\n\nThe author holds no patent rights related to this work.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filldefined%2Fintegrity-scrub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Filldefined%2Fintegrity-scrub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filldefined%2Fintegrity-scrub/lists"}