)]}'
{
  "commit": "f348d70a324e15afc701a494f32ec468abb7d1eb",
  "tree": "a4cb43429f7f08a6621c581bd99e4a03198e8c67",
  "parents": [
    "501f2499b897ca4be68b1acc7a4bc8cf66f5fd24"
  ],
  "author": {
    "name": "Davide Libenzi",
    "email": "davidel@xmailserver.org",
    "time": "Sat Mar 25 03:07:39 2006 -0800"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Sat Mar 25 08:22:56 2006 -0800"
  },
  "message": "[PATCH] POLLRDHUP/EPOLLRDHUP handling for half-closed devices notifications\n\nImplement the half-closed devices notifiation, by adding a new POLLRDHUP\n(and its alias EPOLLRDHUP) bit to the existing poll/select sets.  Since the\nexisting POLLHUP handling, that does not report correctly half-closed\ndevices, was feared to be changed, this implementation leaves the current\nPOLLHUP reporting unchanged and simply add a new bit that is set in the few\nplaces where it makes sense.  The same thing was discussed and conceptually\nagreed quite some time ago:\n\nhttp://lkml.org/lkml/2003/7/12/116\n\nSince this new event bit is added to the existing Linux poll infrastruture,\neven the existing poll/select system calls will be able to use it.  As far\nas the existing POLLHUP handling, the patch leaves it as is.  The\npollrdhup-2.6.16.rc5-0.10.diff defines the POLLRDHUP for all the existing\narchs and sets the bit in the six relevant files.  The other attached diff\nis the simple change required to sys/epoll.h to add the EPOLLRDHUP\ndefinition.\n\nThere is \"a stupid program\" to test POLLRDHUP delivery here:\n\n http://www.xmailserver.org/pollrdhup-test.c\n\nIt tests poll(2), but since the delivery is same epoll(2) will work equally.\n\nSigned-off-by: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Michael Kerrisk \u003cmtk-manpages@gmx.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "1c2b16fda13aa8caf87869f29d2db8eb29ac8438",
      "old_mode": 33188,
      "old_path": "fs/eventpoll.c",
      "new_id": "a0f682cdd03e06e8802efdf320c6da9d436d31ad",
      "new_mode": 33188,
      "new_path": "fs/eventpoll.c"
    },
    {
      "type": "modify",
      "old_id": "34f333b762a04b57e244ff0b2f9b2fe34df510c6",
      "old_mode": 33188,
      "old_path": "include/asm-alpha/poll.h",
      "new_id": "95707182b3ed3c7a7c7609d4307bc137c0572a48",
      "new_mode": 33188,
      "new_path": "include/asm-alpha/poll.h"
    },
    {
      "type": "modify",
      "old_id": "2744ca831f5d126130df470e06a4805c062c9832",
      "old_mode": 33188,
      "old_path": "include/asm-arm/poll.h",
      "new_id": "5030b2b232a3c7433be4c96676da242e77155c90",
      "new_mode": 33188,
      "new_path": "include/asm-arm/poll.h"
    },
    {
      "type": "modify",
      "old_id": "fdfdab064a658a0d31465d29fa0a0636f8162abf",
      "old_mode": 33188,
      "old_path": "include/asm-arm26/poll.h",
      "new_id": "9ccb7f4190cafaae318e3e4eb2d784c8d13cb7a1",
      "new_mode": 33188,
      "new_path": "include/asm-arm26/poll.h"
    },
    {
      "type": "modify",
      "old_id": "1c0efc3e4be70e5fc067a4ee9d01cc0426471567",
      "old_mode": 33188,
      "old_path": "include/asm-cris/poll.h",
      "new_id": "1b25d4cf498c4aab72193c3246c94f312d00b1eb",
      "new_mode": 33188,
      "new_path": "include/asm-cris/poll.h"
    },
    {
      "type": "modify",
      "old_id": "8cbcd60e334fb293224789b2e8f753bc0730122e",
      "old_mode": 33188,
      "old_path": "include/asm-frv/poll.h",
      "new_id": "c8fe8801d075819c3e069e720e7806604d6ea8b5",
      "new_mode": 33188,
      "new_path": "include/asm-frv/poll.h"
    },
    {
      "type": "modify",
      "old_id": "bf49ab8ad6da173f8c9d7313bf845e76a73aa922",
      "old_mode": 33188,
      "old_path": "include/asm-h8300/poll.h",
      "new_id": "fc52103b276ae0011a2dfcb755c5b201ae6ea161",
      "new_mode": 33188,
      "new_path": "include/asm-h8300/poll.h"
    },
    {
      "type": "modify",
      "old_id": "aecc80a15d3687f6fdc6274e4a17bc08eb5f4210",
      "old_mode": 33188,
      "old_path": "include/asm-i386/poll.h",
      "new_id": "2cd4929abd40426b3ad88ef33762c859227b497b",
      "new_mode": 33188,
      "new_path": "include/asm-i386/poll.h"
    },
    {
      "type": "modify",
      "old_id": "160258a0528d2692292cd8d3941bf595e6fcfa31",
      "old_mode": 33188,
      "old_path": "include/asm-ia64/poll.h",
      "new_id": "bcaf9f1402427ddaef313f0d82306d58e6a7410e",
      "new_mode": 33188,
      "new_path": "include/asm-ia64/poll.h"
    },
    {
      "type": "modify",
      "old_id": "43b7acf732d57ae1310819edb022133fb6b1fb1f",
      "old_mode": 33188,
      "old_path": "include/asm-m32r/poll.h",
      "new_id": "9e0e700e727c94e2e160b7b1e717181ce142a190",
      "new_mode": 33188,
      "new_path": "include/asm-m32r/poll.h"
    },
    {
      "type": "modify",
      "old_id": "c4b69c4a87e1a337d6c66b564f264d57ccd05fa2",
      "old_mode": 33188,
      "old_path": "include/asm-m68k/poll.h",
      "new_id": "0fb8843647f8a4a4bbafc74d99bda97e622db475",
      "new_mode": 33188,
      "new_path": "include/asm-m68k/poll.h"
    },
    {
      "type": "modify",
      "old_id": "a000f1f789e342b296b305879caa4f6b3921da6f",
      "old_mode": 33188,
      "old_path": "include/asm-mips/poll.h",
      "new_id": "70881f8c5c5092e58e00df92ec21956abeb1586e",
      "new_mode": 33188,
      "new_path": "include/asm-mips/poll.h"
    },
    {
      "type": "modify",
      "old_id": "1c1da86934cffc08326f181478f437c50b502faa",
      "old_mode": 33188,
      "old_path": "include/asm-parisc/poll.h",
      "new_id": "20e4d03c74cb835d7d873015456aa26a0b67a6c6",
      "new_mode": 33188,
      "new_path": "include/asm-parisc/poll.h"
    },
    {
      "type": "modify",
      "old_id": "edd2054da86b49d3b83503b7aed2962ab3f416af",
      "old_mode": 33188,
      "old_path": "include/asm-powerpc/poll.h",
      "new_id": "9c7d1263103353745dfb10cece78ac1e3719d976",
      "new_mode": 33188,
      "new_path": "include/asm-powerpc/poll.h"
    },
    {
      "type": "modify",
      "old_id": "e90a5ca4206193716cf4490270ce9a4e2ae55f82",
      "old_mode": 33188,
      "old_path": "include/asm-s390/poll.h",
      "new_id": "6f7f65ac7d27da520ca756590ba1495076dd34a2",
      "new_mode": 33188,
      "new_path": "include/asm-s390/poll.h"
    },
    {
      "type": "modify",
      "old_id": "52f95b9188dcfe1105901a28a718424f500127f5",
      "old_mode": 33188,
      "old_path": "include/asm-sh/poll.h",
      "new_id": "dbca9b32f4a6c4ff0f9f5f250e218e3eed4a0846",
      "new_mode": 33188,
      "new_path": "include/asm-sh/poll.h"
    },
    {
      "type": "modify",
      "old_id": "a420d14eb704a548ffb5591fa9521a5d5b657adb",
      "old_mode": 33188,
      "old_path": "include/asm-sh64/poll.h",
      "new_id": "3a6cbad08d281a9bc2a94a3b7fdc0397eca31502",
      "new_mode": 33188,
      "new_path": "include/asm-sh64/poll.h"
    },
    {
      "type": "modify",
      "old_id": "3ddcc6481f0973d3441c7a18605e843fbfcf4a8f",
      "old_mode": 33188,
      "old_path": "include/asm-sparc/poll.h",
      "new_id": "26f13fb35497f77926404a6503e7b091c1f5a425",
      "new_mode": 33188,
      "new_path": "include/asm-sparc/poll.h"
    },
    {
      "type": "modify",
      "old_id": "31b611aa74685d61ac7f244d6429298cc8bac450",
      "old_mode": 33188,
      "old_path": "include/asm-sparc64/poll.h",
      "new_id": "ab6b0d1bb4adb6c0d2b1599fc951e5a5b7399896",
      "new_mode": 33188,
      "new_path": "include/asm-sparc64/poll.h"
    },
    {
      "type": "modify",
      "old_id": "0369562c7e1588db6fe077a723096cba9eb60f2e",
      "old_mode": 33188,
      "old_path": "include/asm-v850/poll.h",
      "new_id": "c10176c2c28ff7b7b15a05e3e600399948a59966",
      "new_mode": 33188,
      "new_path": "include/asm-v850/poll.h"
    },
    {
      "type": "modify",
      "old_id": "c43cbba31913dbaf0809938cacb272526c4ab8fe",
      "old_mode": 33188,
      "old_path": "include/asm-x86_64/poll.h",
      "new_id": "c0475a9d8bb860d0e330a866b6d6576b9a99d114",
      "new_mode": 33188,
      "new_path": "include/asm-x86_64/poll.h"
    },
    {
      "type": "modify",
      "old_id": "dffe447534e063d58d480937515691f415ca8927",
      "old_mode": 33188,
      "old_path": "include/asm-xtensa/poll.h",
      "new_id": "6fd94773e866051bef79e0cff38fe5d6e0b04e6b",
      "new_mode": 33188,
      "new_path": "include/asm-xtensa/poll.h"
    },
    {
      "type": "modify",
      "old_id": "fb031fe9be9ed140bce6fdfe6092f3ab6df8ff87",
      "old_mode": 33188,
      "old_path": "net/bluetooth/af_bluetooth.c",
      "new_id": "469eda0f0dfd713f0d998b5c830faaff2e9c71fd",
      "new_mode": 33188,
      "new_path": "net/bluetooth/af_bluetooth.c"
    },
    {
      "type": "modify",
      "old_id": "b8ce6bf81188943a1ac91f3b80b361d03ce3c955",
      "old_mode": 33188,
      "old_path": "net/core/datagram.c",
      "new_id": "aecddcc304012d48769e9f98b91157aa946cd60d",
      "new_mode": 33188,
      "new_path": "net/core/datagram.c"
    },
    {
      "type": "modify",
      "old_id": "d4b293e16283e4e2e5ddc3b5b25fb84c2aecc05b",
      "old_mode": 33188,
      "old_path": "net/dccp/proto.c",
      "new_id": "1ff7328b0e170bf137819ab03a76b3a4acdd9572",
      "new_mode": 33188,
      "new_path": "net/dccp/proto.c"
    },
    {
      "type": "modify",
      "old_id": "4b0272c92d665a3b8b1caef5e4ed7d2526e06bb4",
      "old_mode": 33188,
      "old_path": "net/ipv4/tcp.c",
      "new_id": "19ea5c0b094bcb47ba180907a290a7d75d5a0f71",
      "new_mode": 33188,
      "new_path": "net/ipv4/tcp.c"
    },
    {
      "type": "modify",
      "old_id": "0ea947eb681320561d3e3d61ac91001aa1043926",
      "old_mode": 33188,
      "old_path": "net/sctp/socket.c",
      "new_id": "b6e4b89539b3178216037c53350f5591dde8a1b6",
      "new_mode": 33188,
      "new_path": "net/sctp/socket.c"
    },
    {
      "type": "modify",
      "old_id": "2b4cc2eea5b38bd6a686b94cb0136f8b7a18adbf",
      "old_mode": 33188,
      "old_path": "net/unix/af_unix.c",
      "new_id": "d901465ce0135093276d55adabbb7691591097c3",
      "new_mode": 33188,
      "new_path": "net/unix/af_unix.c"
    }
  ]
}
