)]}'
{
  "commit": "07e77dca8a1f17a724a9b7449f0ca02e70e9d057",
  "tree": "69186be641145fd997ce15e17a22598d9a264119",
  "parents": [
    "8ac835056ca39b242d98332f46e4d65428a8b7db"
  ],
  "author": {
    "name": "Miklos Szeredi",
    "email": "mszeredi@suse.cz",
    "time": "Tue Dec 07 20:16:56 2010 +0100"
  },
  "committer": {
    "name": "Miklos Szeredi",
    "email": "mszeredi@suse.cz",
    "time": "Tue Dec 07 20:16:56 2010 +0100"
  },
  "message": "fuse: separate queue for FORGET requests\n\nTerje Malmedal reports that a fuse filesystem with 32 million inodes\non a machine with lots of memory can go unresponsive for up to 30\nminutes when all those inodes are evicted from the icache.\n\nThe reason is that FORGET messages, sent when the inode is evicted,\nare queued up together with regular filesystem requests, and while the\nhuge queue of FORGET messages are processed no other filesystem\noperation can proceed.\n\nSince a full fuse request structure is allocated for each inode, these\ntake up quite a bit of memory as well.\n\nTo solve these issues, create a slim \u0027fuse_forget_link\u0027 structure\ncontaining just the minimum of information required to send the FORGET\nrequest and chain these on a separate queue.\n\nWhen userspace is asking for a request make sure that FORGET and\nnon-FORGET requests are selected fairly: for each 8 non-FORGET allow\n16 FORGET requests.  This will make sure FORGETs do not pile up, yet\nother requests are also allowed to proceed while the queued FORGETs\nare processed.\n\nReported-by: Terje Malmedal \u003cterje.malmedal@usit.uio.no\u003e\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6e07696308dc17a2c8ce26f852b04550d070175f",
      "old_mode": 33188,
      "old_path": "fs/fuse/dev.c",
      "new_id": "fed65303eeeb246ae74285d60541d13a814b7cb1",
      "new_mode": 33188,
      "new_path": "fs/fuse/dev.c"
    },
    {
      "type": "modify",
      "old_id": "c9627c95482d1f316102272e7aee88e1f2f31fe0",
      "old_mode": 33188,
      "old_path": "fs/fuse/dir.c",
      "new_id": "6ea42e98cb1724f064f3112058ba6d0fa1a39f6b",
      "new_mode": 33188,
      "new_path": "fs/fuse/dir.c"
    },
    {
      "type": "modify",
      "old_id": "57d4a3a0f1023afa775ed07841e24c09c54130c1",
      "old_mode": 33188,
      "old_path": "fs/fuse/fuse_i.h",
      "new_id": "33369c63a522e11fd98760f2c8bb04ca7f3f7ecf",
      "new_mode": 33188,
      "new_path": "fs/fuse/fuse_i.h"
    },
    {
      "type": "modify",
      "old_id": "cfce3ad86a9253c8f82f793da306979357f4df6f",
      "old_mode": 33188,
      "old_path": "fs/fuse/inode.c",
      "new_id": "7ba4d351da6541ce93d873aa797d18335eac5d47",
      "new_mode": 33188,
      "new_path": "fs/fuse/inode.c"
    }
  ]
}
