)]}'
{
  "commit": "083b51643e946bcaa41f50156bd99cd8b7886149",
  "tree": "03519586561925c99cc6b1797d57ba850695c383",
  "parents": [
    "aadf7f88011370b5faf503bedaf85e00cfcbc07b"
  ],
  "author": {
    "name": "David Howells",
    "email": "dhowells@redhat.com",
    "time": "Fri Sep 01 16:55:12 2017 +0100"
  },
  "committer": {
    "name": "David Howells",
    "email": "dhowells@redhat.com",
    "time": "Tue Sep 05 10:58:01 2017 +0100"
  },
  "message": "afs: Retry rxrpc calls with address rotation on network error\n\nWhen a network error occurs when we attempt a call, we want to rotate the\nset of addresses we have for that peer and try the call again.  Use the new\nAF_RXRPC call-retrying facility to do this, thereby avoiding the need to\nre-encrypt each time as this allows us to reuse the Tx-queue from the dead\ncall.\n\nThis method will work for accessing alternate VL servers and the various\naddresses available for a single FS server, but should not be used to go to\nalternate FS servers since that has other implications (such as getting\ncallbacks on other servers).\n\nTo this end:\n\n (1) An \u0027address list\u0027 concept is introduced.  Address lists are RCU\n     replaceable lists of addresses.\n\n (2) A cell\u0027s VL server address list can be loaded directly via insmod or\n     echo to /proc/fs/afs/cells or dynamically from a DNS query for AFSDB\n     or SRV records.\n\n (3) An FS server\u0027s address list, for the moment, has a single entry that\n     is the key to the server list.  This will change in the future when a\n     server is instead keyed on its UUID and the VL.GetAddrsU operation is\n     used.\n\n (4) Anyone wanting to use a cell\u0027s VL server address must wait until the\n     cell record comes online and has tried to obtain some addresses.\n\n (5) An \u0027address cursor\u0027 concept is introduced to handle stepping over the\n     address list.  For client calls, this is driven from a wrapper around\n     rxrpc_kernel_send_data().  It isn\u0027t used for CM service call replies as\n     they have to go to the caller\u0027s address.\n\nIn the future, we might want to annotate the list with information about\nhow each address fares.  We might then want to propagate such annotations\nover address list replacement.\n\nWhilst we\u0027re at it, we allow IPv6 addresses to be specified in\ncolon-delimited lists by enclosing them in square brackets.\n\nSigned-off-by: David Howells \u003cdhowells@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "095c54165dfd311e2b3a65fd6e627a7d83aa5b8a",
      "old_mode": 33188,
      "old_path": "fs/afs/Makefile",
      "new_id": "7cb4d55f6f1ff1863b385a19f3032b704e2e3d74",
      "new_mode": 33188,
      "new_path": "fs/afs/Makefile"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4de7b07c3fa6b5e93ce0252aab0385949dbcf5c1",
      "new_mode": 33188,
      "new_path": "fs/afs/addr_list.c"
    },
    {
      "type": "modify",
      "old_id": "ab042d87ca13fb83d841c69866bf247f879a9867",
      "old_mode": 33188,
      "old_path": "fs/afs/cell.c",
      "new_id": "c8033a4bc51eeb62d6f1e72169d23bc8063f723e",
      "new_mode": 33188,
      "new_path": "fs/afs/cell.c"
    },
    {
      "type": "modify",
      "old_id": "bac2e8db6e75ad6a2c3f7ecce6d005ca85ad06ec",
      "old_mode": 33188,
      "old_path": "fs/afs/fsclient.c",
      "new_id": "f4e3ec104ac4912a4832b77f59036f599488e129",
      "new_mode": 33188,
      "new_path": "fs/afs/fsclient.c"
    },
    {
      "type": "modify",
      "old_id": "9a7c1e95767d516ca2275392b420a5578edf1c35",
      "old_mode": 33188,
      "old_path": "fs/afs/internal.h",
      "new_id": "5f8067fdb22d58ed6f206ea9a833820d2da393a3",
      "new_mode": 33188,
      "new_path": "fs/afs/internal.h"
    },
    {
      "type": "modify",
      "old_id": "08565429615d1a6b518d4331138e32a8a59b3bb4",
      "old_mode": 33188,
      "old_path": "fs/afs/proc.c",
      "new_id": "9cf9ce88a8dd349ea70e2155e2b3a4ba31e78233",
      "new_mode": 33188,
      "new_path": "fs/afs/proc.c"
    },
    {
      "type": "modify",
      "old_id": "805ae0542478e011c4df88630bc6fdf0dd8bee43",
      "old_mode": 33188,
      "old_path": "fs/afs/rxrpc.c",
      "new_id": "ab149f67f908576142b37137827a87aa89e4831b",
      "new_mode": 33188,
      "new_path": "fs/afs/rxrpc.c"
    },
    {
      "type": "modify",
      "old_id": "57c2f605e11b1ed330cadc9f034ec5f965473c2c",
      "old_mode": 33188,
      "old_path": "fs/afs/server.c",
      "new_id": "0f2e84966d3e3d808f36dde6521e4710e1939472",
      "new_mode": 33188,
      "new_path": "fs/afs/server.c"
    },
    {
      "type": "modify",
      "old_id": "276319aa86d8b25336d75bbc9d12170260bba8f5",
      "old_mode": 33188,
      "old_path": "fs/afs/vlclient.c",
      "new_id": "54d02e5ea20a1c9ccca2ce84faadf8fb8c69d2be",
      "new_mode": 33188,
      "new_path": "fs/afs/vlclient.c"
    },
    {
      "type": "modify",
      "old_id": "ec5ab8dc9bc8dd7ad3191cbc3fe1194caf5e541b",
      "old_mode": 33188,
      "old_path": "fs/afs/vlocation.c",
      "new_id": "8c64a16c0aaf99b05a68e52132f68f4fec36d0d2",
      "new_mode": 33188,
      "new_path": "fs/afs/vlocation.c"
    },
    {
      "type": "modify",
      "old_id": "64834b20f0f66996c384a25e37a97548b63abee7",
      "old_mode": 33188,
      "old_path": "fs/afs/vnode.c",
      "new_id": "8dcf4921340a3829cf2a183b1b74977cc63e6fe7",
      "new_mode": 33188,
      "new_path": "fs/afs/vnode.c"
    },
    {
      "type": "modify",
      "old_id": "fbbb470ac02712160fb8d4a885a4460728d139c3",
      "old_mode": 33188,
      "old_path": "fs/afs/volume.c",
      "new_id": "c0d4e9725d5efa7fe31254b9f28caec43234a19e",
      "new_mode": 33188,
      "new_path": "fs/afs/volume.c"
    }
  ]
}
