)]}'
{
  "commit": "eb0004848442749cb865d72f0d833101d364ca0c",
  "tree": "0b876d14f1896a189732f2d24134880c5443b2a9",
  "parents": [
    "8b4c2a22bff85f86af44587973c8da8c29a67ffc"
  ],
  "author": {
    "name": "Arne Jansen",
    "email": "sensille@gmx.net",
    "time": "Mon Oct 10 16:10:49 2011 +0200"
  },
  "committer": {
    "name": "Arne Jansen",
    "email": "sensille@gmx.net",
    "time": "Mon Oct 10 17:12:42 2011 +0200"
  },
  "message": "btrfs-progs: add qgroup commands\n\nThis adds the necessary interface to control the qgroups feature. The\ncommand set is still preliminary and low-level. It is planned to add\nsome convenience commands to manage common usecases. There\u0027s still work\nto be done to define a good representation for the end user.\nI\u0027ll add a manpage in a later version, when we settle on an interface.\n\nSee http://sensille.com/qgroups.pdf for an explanation of the concepts.\n\nCommands added by this patch:\n\nbtrfs quota enable\n    Enable subvolume quota support for a filesystem. It creates the quota\n    tree.\n\nbtrfs quota disable\n    Disable subvolume quota support for a filesystem. It removes the quota\n    tree and with it all configuration information.\n\nbtrfs quota rescan\n    Triggers a full re-init of quota information, doing a full fs rescan.\n    Kernel side currently does not implement it yet.\n\nbtrfs qgroup assign \u003csrcid\u003e \u003cdestid\u003e \u003cpath\u003e\n    Assigns the lower level qgroup src to the higher level qgroup dest in the\n    btrfs found in \u003cpath\u003e. It is used to build qgroup hierarchies.\n\nbtrfs qgroup remove \u003csrcid\u003e \u003cdestid\u003e \u003cpath\u003e\n    Remove the qgroup src from the qgroup dest.\n\nbtrfs qgroup create \u003cqgroupid\u003e \u003cpath\u003e\n    Creates a qgroup with id \u003cqgroupid\u003e for the btrfs found in \u003cpath\u003e. It will\n    not be part of any hierarchy.\n\nbtrfs qgroup destroy \u003cqgroupid\u003e \u003cpath\u003e\n    Removes the qgroup qgroupid from the btrfs found in \u003cpath\u003e. It will also\n    be removed from any higher-level qgroups.\n\nbtrfs qgroup show\n    Lists all configured qgroup together with the current exclusive and\n    referenced values.\n\nbtrfs qgroup limit \u003csize\u003e|none \u003cpath-to-subvol\u003e\nbtrfs qgroup limit \u003csize\u003e|none \u003cqgroupid\u003e \u003cpath-to-btrfs\u003e\n    Impose a limit of \u003csize\u003e for the amount of referenced space onto the\n    qgroup \u003cqgroupid\u003e in btrfs \u003cpath-to-btrfs\u003e or onto the qgroup referenced\n    by \u003cpath-to-subvol\u003e. A size of none removes the limit.\n\nCommands extended for this patch:\nbtrfs subvolume create [-i \u003cqid\u003e] [-c \u003ccspec\u003e] [-x \u003ccspec\u003e] \u003cname\u003e\nbtrfs subvolume snapshot [-i \u003cqid\u003e] [-c \u003ccspec\u003e] [-x \u003ccspec\u003e] \u003csource\u003e \u003cname\u003e\n    With the creation of a subvolume either by subvolume create or subvolume\n    snapshot a qgroup gets created automatically. With -i this qgroup can be\n    added to a higher level qgroup \u003cqid\u003e at creation time. This option can be\n    given multiple times.\n    -c and -x copy the values from one qgroup to another at creation time.\n    In some usecases this is necessary to keep the values consistent. See\n    the above mentioned concept paper for details. The copy spec \u003ccspec\u003e\n    consists of two qgroupid separated by \u0027:\u0027, giving \u003csrcid\u003e:\u003cdstid\u003e. -c\n    copies the \u0027referenced\u0027 value, -x copies the \u0027exclusive\u0027 value.  These\n    options can be given multiple times.\n\nSigned-off-by: Arne Jansen \u003csensille@gmx.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a3f9a01dbbac76f18edbc149d26926f4b6275fb7",
      "old_mode": 33188,
      "old_path": "btrfs.c",
      "new_id": "38c15f50487c37bde2ef2bc077f80748ba72f958",
      "new_mode": 33188,
      "new_path": "btrfs.c"
    },
    {
      "type": "modify",
      "old_id": "699dfc2cdaf56b787ffb755359a9cb8c854949bc",
      "old_mode": 33188,
      "old_path": "btrfs_cmds.c",
      "new_id": "8ddaa1319db3b61df8a4de5b2a49c8ba752f7c2e",
      "new_mode": 33188,
      "new_path": "btrfs_cmds.c"
    },
    {
      "type": "modify",
      "old_id": "3e171dac343220ff12b1cb826fe8fbf701e2bd28",
      "old_mode": 33188,
      "old_path": "btrfs_cmds.h",
      "new_id": "e5fd9c04980f7cb5d9a8a0900d698ae792c8ad31",
      "new_mode": 33188,
      "new_path": "btrfs_cmds.h"
    },
    {
      "type": "modify",
      "old_id": "6e1b80b7f58e8867d55ef0de201a0677a205bb34",
      "old_mode": 33188,
      "old_path": "ctree.h",
      "new_id": "bfa06d0ccc1a46a2a3adfe889609147396a39352",
      "new_mode": 33188,
      "new_path": "ctree.h"
    },
    {
      "type": "modify",
      "old_id": "34cefe9fb3a18a2aca9fcfd413746504be4d46e5",
      "old_mode": 33188,
      "old_path": "debug-tree.c",
      "new_id": "a3f9c310bc81a72430aae4326137a08793e1d346",
      "new_mode": 33188,
      "new_path": "debug-tree.c"
    },
    {
      "type": "modify",
      "old_id": "a391695cc4f1f675fda4b3070630346901cb0d5e",
      "old_mode": 33188,
      "old_path": "ioctl.h",
      "new_id": "83c0e163b8f8513697341a845749ae4241196682",
      "new_mode": 33188,
      "new_path": "ioctl.h"
    },
    {
      "type": "modify",
      "old_id": "59c23c5265dde0834ebdf7bba4807b91d56c4dc4",
      "old_mode": 33188,
      "old_path": "print-tree.c",
      "new_id": "251baafd752e5c567aa3e31b9d0bba1a504fc6a0",
      "new_mode": 33188,
      "new_path": "print-tree.c"
    }
  ]
}
