)]}'
{
  "commit": "fee096deb4f33897937b974cb2c5168bab7935be",
  "tree": "c86e5ed5b3435ff0f0266f343b19f8cc7be63340",
  "parents": [
    "d0e27b7808dc667f3015be0b6888f6d680e222c8"
  ],
  "author": {
    "name": "David Howells",
    "email": "dhowells@redhat.com",
    "time": "Thu Nov 19 18:12:05 2009 +0000"
  },
  "committer": {
    "name": "David Howells",
    "email": "dhowells@redhat.com",
    "time": "Thu Nov 19 18:12:05 2009 +0000"
  },
  "message": "CacheFiles: Catch an overly long wait for an old active object\n\nCatch an overly long wait for an old, dying active object when we want to\nreplace it with a new one.  The probability is that all the slow-work threads\nare hogged, and the delete can\u0027t get a look in.\n\nWhat we do instead is:\n\n (1) if there\u0027s nothing in the slow work queue, we sleep until either the dying\n     object has finished dying or there is something in the slow work queue\n     behind which we can queue our object.\n\n (2) if there is something in the slow work queue, we return ETIMEDOUT to\n     fscache_lookup_object(), which then puts us back on the slow work queue,\n     presumably behind the deletion that we\u0027re blocked by.  We are then\n     deferred for a while until we work our way back through the queue -\n     without blocking a slow-work thread unnecessarily.\n\nA backtrace similar to the following may appear in the log without this patch:\n\n\tINFO: task kslowd004:5711 blocked for more than 120 seconds.\n\t\"echo 0 \u003e /proc/sys/kernel/hung_task_timeout_secs\" disables this message.\n\tkslowd004     D 0000000000000000     0  5711      2 0x00000080\n\t ffff88000340bb80 0000000000000046 ffff88002550d000 0000000000000000\n\t ffff88002550d000 0000000000000007 ffff88000340bfd8 ffff88002550d2a8\n\t 000000000000ddf0 00000000000118c0 00000000000118c0 ffff88002550d2a8\n\tCall Trace:\n\t [\u003cffffffff81058e21\u003e] ? trace_hardirqs_on+0xd/0xf\n\t [\u003cffffffffa011c4d8\u003e] ? cachefiles_wait_bit+0x0/0xd [cachefiles]\n\t [\u003cffffffffa011c4e1\u003e] cachefiles_wait_bit+0x9/0xd [cachefiles]\n\t [\u003cffffffff81353153\u003e] __wait_on_bit+0x43/0x76\n\t [\u003cffffffff8111ae39\u003e] ? ext3_xattr_get+0x1ec/0x270\n\t [\u003cffffffff813531ef\u003e] out_of_line_wait_on_bit+0x69/0x74\n\t [\u003cffffffffa011c4d8\u003e] ? cachefiles_wait_bit+0x0/0xd [cachefiles]\n\t [\u003cffffffff8104c125\u003e] ? wake_bit_function+0x0/0x2e\n\t [\u003cffffffffa011bc79\u003e] cachefiles_mark_object_active+0x203/0x23b [cachefiles]\n\t [\u003cffffffffa011c209\u003e] cachefiles_walk_to_object+0x558/0x827 [cachefiles]\n\t [\u003cffffffffa011a429\u003e] cachefiles_lookup_object+0xac/0x12a [cachefiles]\n\t [\u003cffffffffa00aa1e9\u003e] fscache_lookup_object+0x1c7/0x214 [fscache]\n\t [\u003cffffffffa00aafc5\u003e] fscache_object_state_machine+0xa5/0x52d [fscache]\n\t [\u003cffffffffa00ab4ac\u003e] fscache_object_slow_work_execute+0x5f/0xa0 [fscache]\n\t [\u003cffffffff81082093\u003e] slow_work_execute+0x18f/0x2d1\n\t [\u003cffffffff8108239a\u003e] slow_work_thread+0x1c5/0x308\n\t [\u003cffffffff8104c0f1\u003e] ? autoremove_wake_function+0x0/0x34\n\t [\u003cffffffff810821d5\u003e] ? slow_work_thread+0x0/0x308\n\t [\u003cffffffff8104be91\u003e] kthread+0x7a/0x82\n\t [\u003cffffffff8100beda\u003e] child_rip+0xa/0x20\n\t [\u003cffffffff8100b87c\u003e] ? restore_args+0x0/0x30\n\t [\u003cffffffff8104be17\u003e] ? kthread+0x0/0x82\n\t [\u003cffffffff8100bed0\u003e] ? child_rip+0x0/0x20\n\t1 lock held by kslowd004/5711:\n\t #0:  (\u0026sb-\u003es_type-\u003ei_mutex_key#7/1){+.+.+.}, at: [\u003cffffffffa011be64\u003e] cachefiles_walk_to_object+0x1b3/0x827 [cachefiles]\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3c23411956bb32800a3e57f7221b43096aa7f767",
      "old_mode": 33188,
      "old_path": "Documentation/filesystems/caching/fscache.txt",
      "new_id": "a91e2e2095b09fcebca6f456fe7e1fe36263006d",
      "new_mode": 33188,
      "new_path": "Documentation/filesystems/caching/fscache.txt"
    },
    {
      "type": "modify",
      "old_id": "8e67abf05985324f94ed6594d90fed3d346f8beb",
      "old_mode": 33188,
      "old_path": "fs/cachefiles/interface.c",
      "new_id": "9d3c426044aebb2f329929e4e1a2c71f71bd32e4",
      "new_mode": 33188,
      "new_path": "fs/cachefiles/interface.c"
    },
    {
      "type": "modify",
      "old_id": "00a0cda8f47a39bcf984770c74cc8fd37ff1a826",
      "old_mode": 33188,
      "old_path": "fs/cachefiles/namei.c",
      "new_id": "14ac4806e2913f8c37e76d95dc1d0274f4bbd027",
      "new_mode": 33188,
      "new_path": "fs/cachefiles/namei.c"
    },
    {
      "type": "modify",
      "old_id": "5b49a373689bdbdeba9e839a545c948c9aeb350e",
      "old_mode": 33188,
      "old_path": "fs/fscache/internal.h",
      "new_id": "0ca2566e038c6efcd96a1615cc9d49b0f5f51f61",
      "new_mode": 33188,
      "new_path": "fs/fscache/internal.h"
    },
    {
      "type": "modify",
      "old_id": "f3f952cf887ea83c9fdcdc2662d5e3edf9e2b12f",
      "old_mode": 33188,
      "old_path": "fs/fscache/object.c",
      "new_id": "e513ac599c8e9b587c8646e33485be20d2ce1c4e",
      "new_mode": 33188,
      "new_path": "fs/fscache/object.c"
    },
    {
      "type": "modify",
      "old_id": "05f77caf4a2d4eb661bae148aaa3522056a56581",
      "old_mode": 33188,
      "old_path": "fs/fscache/stats.c",
      "new_id": "46435f3aae689936404bf1ecd5e3c6d6094a214b",
      "new_mode": 33188,
      "new_path": "fs/fscache/stats.c"
    },
    {
      "type": "modify",
      "old_id": "5db50002f3b5ee450a20f1fe81a4b029a0d29652",
      "old_mode": 33188,
      "old_path": "include/linux/fscache-cache.h",
      "new_id": "7be0c6fbe8808be086d884939c7c621e3f5d78cf",
      "new_mode": 33188,
      "new_path": "include/linux/fscache-cache.h"
    }
  ]
}
