{"action":"created","issue":{"url":"https://api.github.com/repos/trynd/wren/issues/12","labels_url":"https://api.github.com/repos/trynd/wren/issues/12/labels{/name}","comments_url":"https://api.github.com/repos/trynd/wren/issues/12/comments","events_url":"https://api.github.com/repos/trynd/wren/issues/12/events","html_url":"https://github.com/trynd/wren/pull/12","id":56706027,"number":12,"title":"Replace LVM with Btrfs","user":{"login":"codewithmichael","id":2614473,"avatar_url":"https://avatars.githubusercontent.com/u/2614473?v=3","gravatar_id":"","url":"https://api.github.com/users/codewithmichael","html_url":"https://github.com/codewithmichael","followers_url":"https://api.github.com/users/codewithmichael/followers","following_url":"https://api.github.com/users/codewithmichael/following{/other_user}","gists_url":"https://api.github.com/users/codewithmichael/gists{/gist_id}","starred_url":"https://api.github.com/users/codewithmichael/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codewithmichael/subscriptions","organizations_url":"https://api.github.com/users/codewithmichael/orgs","repos_url":"https://api.github.com/users/codewithmichael/repos","events_url":"https://api.github.com/users/codewithmichael/events{/privacy}","received_events_url":"https://api.github.com/users/codewithmichael/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/trynd/wren/labels/enhancement","name":"enhancement","color":"c7def8"},{"url":"https://api.github.com/repos/trynd/wren/labels/ready","name":"ready","color":"ffdd00"}],"state":"open","locked":false,"assignee":{"login":"codewithmichael","id":2614473,"avatar_url":"https://avatars.githubusercontent.com/u/2614473?v=3","gravatar_id":"","url":"https://api.github.com/users/codewithmichael","html_url":"https://github.com/codewithmichael","followers_url":"https://api.github.com/users/codewithmichael/followers","following_url":"https://api.github.com/users/codewithmichael/following{/other_user}","gists_url":"https://api.github.com/users/codewithmichael/gists{/gist_id}","starred_url":"https://api.github.com/users/codewithmichael/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codewithmichael/subscriptions","organizations_url":"https://api.github.com/users/codewithmichael/orgs","repos_url":"https://api.github.com/users/codewithmichael/repos","events_url":"https://api.github.com/users/codewithmichael/events{/privacy}","received_events_url":"https://api.github.com/users/codewithmichael/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/trynd/wren/milestones/3","labels_url":"https://api.github.com/repos/trynd/wren/milestones/3/labels","id":974463,"number":3,"title":"release-0.2.0","description":"","creator":{"login":"codewithmichael","id":2614473,"avatar_url":"https://avatars.githubusercontent.com/u/2614473?v=3","gravatar_id":"","url":"https://api.github.com/users/codewithmichael","html_url":"https://github.com/codewithmichael","followers_url":"https://api.github.com/users/codewithmichael/followers","following_url":"https://api.github.com/users/codewithmichael/following{/other_user}","gists_url":"https://api.github.com/users/codewithmichael/gists{/gist_id}","starred_url":"https://api.github.com/users/codewithmichael/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codewithmichael/subscriptions","organizations_url":"https://api.github.com/users/codewithmichael/orgs","repos_url":"https://api.github.com/users/codewithmichael/repos","events_url":"https://api.github.com/users/codewithmichael/events{/privacy}","received_events_url":"https://api.github.com/users/codewithmichael/received_events","type":"User","site_admin":false},"open_issues":5,"closed_issues":0,"state":"open","created_at":"2015-02-10T22:37:11Z","updated_at":"2015-02-18T23:57:55Z","due_on":null,"closed_at":null},"comments":15,"created_at":"2015-02-05T18:02:08Z","updated_at":"2015-02-19T00:22:37Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/trynd/wren/pulls/12","html_url":"https://github.com/trynd/wren/pull/12","diff_url":"https://github.com/trynd/wren/pull/12.diff","patch_url":"https://github.com/trynd/wren/pull/12.patch"},"body":"Addressed Issues:\r\n* #8 - Move to /opt/wren\r\n* #10 - Investigate ZFS and Btrfs\r\n* #22 - Incorrect active data capacity at startup\r\n* #23 - Cron job to increase active data capacity\r\n\r\n-\r\n\r\nThis pull request addresses issue #10 (*Investigate ZFS and Btrfs*) by fully replacing LVM with Btrfs and reintegrating snapshot functionality into Wren.\r\n\r\nWith these changes, Wren now boots using a Btrfs subvolume to store in-memory active save data. All supporting scripts have been updated to accommodate the change, maintaining their existing functionality with the exception of snapshots being re-enabled in `save.sh`.\r\n\r\nAll references to LVM functionality have been removed from the code base and the `watershed` and `lvm2` package dependencies have been removed. However, LVM-related platform variables have been maintained with `DEPRECATED` headers in the `platform.conf` file to (temporarily) continue support of booting custom save instances based on version 0.1.x.\r\n\r\nDocumentation has been updated to reflect the change.\r\n\r\n**Notes:**\r\n* While making the changes I noticed that that boot script (`initramfs-script`) incorrectly uses the `getFileSize` function to determine the size of the save file in order to calculate required active storage capacity. This doesn't take into account the sparse nature of save files and should be updated. I will file a separate issue on the matter. For the time being, I have maintained the existing functionality.\r\n* To avoid changing the public API in any way, I have neither added or removed any functionality with the exception of re-enabling snapshot capability during the save process. However, the switch to Btrfs for active data storage allows for some additional features. Notably, active save size can easily be *decreased* via a command like: `sudo btrfs filesystem resize -1G /mnt/wren/xx-volumes/active`. This, of course, does not handle shrinking the backing (sparse) image.\r\n* ~~As there have been no public API changes, the [Wren GUI](https://github.com/codewithmichael/wren-gui) project continues to act as a functional interface for this version of Wren.~~ *(not since moving to `/opt/wren`)*\r\n* Platform LVM values have been retained in a *deprecated* state in `platform.conf` to avoid making it impossible to boot custom save images. Existing images should be rebuilt, but it is necessary to maintain these values for at least one release cycle to allow conversion of existing saves.\r\n\r\n**Update Instructions:**\r\n* Use `wrender` to build new `initrd.img-*` and `platform-*` images and replace the existing images on the boot device in `/boot/images/` (common mount path: `/mnt/wren/00-device/boot/images/`).\r\n  * Custom save images should also be rebuilt and replaced.\r\n* Copy `conf/platform.conf` to the boot device's `/boot/conf/` directory, replacing the existing `platform.conf` instance.\r\n* Reboot."},"comment":{"url":"https://api.github.com/repos/trynd/wren/issues/comments/74977841","html_url":"https://github.com/trynd/wren/pull/12#issuecomment-74977841","issue_url":"https://api.github.com/repos/trynd/wren/issues/12","id":74977841,"user":{"login":"codewithmichael","id":2614473,"avatar_url":"https://avatars.githubusercontent.com/u/2614473?v=3","gravatar_id":"","url":"https://api.github.com/users/codewithmichael","html_url":"https://github.com/codewithmichael","followers_url":"https://api.github.com/users/codewithmichael/followers","following_url":"https://api.github.com/users/codewithmichael/following{/other_user}","gists_url":"https://api.github.com/users/codewithmichael/gists{/gist_id}","starred_url":"https://api.github.com/users/codewithmichael/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/codewithmichael/subscriptions","organizations_url":"https://api.github.com/users/codewithmichael/orgs","repos_url":"https://api.github.com/users/codewithmichael/repos","events_url":"https://api.github.com/users/codewithmichael/events{/privacy}","received_events_url":"https://api.github.com/users/codewithmichael/received_events","type":"User","site_admin":false},"created_at":"2015-02-19T00:22:37Z","updated_at":"2015-02-19T00:22:37Z","body":"Merged into `release-0.2.0` for testing."}}