)]}'
{
  "log": [
    {
      "commit": "22d2b35b200f76085c16a2e14ca30b58510fcbe7",
      "tree": "669ce98845b73c0a2e12b37beaa24aed8481e1d2",
      "parents": [
        "18796aa00243a594a2bd6733f1360aa38c3cd8f4"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Tue Oct 16 23:30:26 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Wed Oct 17 08:43:01 2007 -0700"
      },
      "message": "F_DUPFD_CLOEXEC implementation\n\nOne more small change to extend the availability of creation of file\ndescriptors with FD_CLOEXEC set.  Adding a new command to fcntl() requires\nno new system call and the overall impact on code size if minimal.\n\nIf this patch gets accepted we will also add this change to the next\nrevision of the POSIX spec.\n\nTo test the patch, use the following little program.  Adjust the value of\nF_DUPFD_CLOEXEC appropriately.\n\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n#include \u003cerrno.h\u003e\n#include \u003cfcntl.h\u003e\n#include \u003cstdio.h\u003e\n#include \u003cstdlib.h\u003e\n#include \u003cunistd.h\u003e\n\n#ifndef F_DUPFD_CLOEXEC\n# define F_DUPFD_CLOEXEC 12\n#endif\n\nint\nmain (int argc, char *argv[])\n{\n  if  (argc \u003e 1)\n    {\n      if (fcntl (3, F_GETFD) \u003d\u003d 0)\n\t{\n\t  puts (\"descriptor not closed\");\n\t  exit (1);\n\t}\n      if (errno !\u003d EBADF)\n\t{\n\t  puts (\"error not EBADF\");\n\t  exit (1);\n\t}\n\n      exit (0);\n    }\n  int fd \u003d fcntl (STDOUT_FILENO, F_DUPFD_CLOEXEC, 0);\n  if (fd \u003d\u003d -1 \u0026\u0026 errno \u003d\u003d EINVAL)\n    {\n      puts (\"F_DUPFD_CLOEXEC not supported\");\n      return 0;\n    }\n  if (fd !\u003d 3)\n    {\n      puts (\"program called with descriptors other than 0,1,2\");\n      return 1;\n    }\n\n  execl (\"/proc/self/exe\", \"/proc/self/exe\", \"1\", NULL);\n  puts (\"execl failed\");\n  return 1;\n}\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nCc: Kyle McMartin \u003ckyle@mcmartin.ca\u003e\nCc: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9b9d2ab4154a42ea4a119f7d3e4e0288bfe0bb79",
      "tree": "62af6b2eff0885c26aa2af4b01890cc02cf0b2f0",
      "parents": [
        "150b393456e5a23513cace286a019e87151e47f0"
      ],
      "author": {
        "name": "Marc Eshel",
        "email": "eshel@almaden.ibm.com",
        "time": "Thu Jan 18 17:52:58 2007 -0500"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Sun May 06 20:38:28 2007 -0400"
      },
      "message": "locks: add lock cancel command\n\nLock managers need to be able to cancel pending lock requests.  In the case\nwhere the exported filesystem manages its own locks, it\u0027s not sufficient just\nto call posix_unblock_lock(); we need to let the filesystem know what\u0027s\nhappening too.\n\nWe do this by adding a new fcntl lock command: FL_CANCELLK.  Some day this\nmight also be made available to userspace applications that could benefit from\nan asynchronous locking api.\n\nSigned-off-by: Marc Eshel \u003ceshel@almaden.ibm.com\u003e\nSigned-off-by: \"J. Bruce Fields\" \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "45c9b11a1d07770cabb48cb0f7960a77650ffc64",
      "tree": "f1928b66fa23a5350cc15b0c448e9acefff66758",
      "parents": [
        "584e1236bbcdfec3f64c751908b8b4fe868c2d20"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Sun Jun 25 05:49:11 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Sun Jun 25 10:01:22 2006 -0700"
      },
      "message": "[PATCH] Implement AT_SYMLINK_FOLLOW flag for linkat\n\nWhen the linkat() syscall was added the flag parameter was added in the\nlast minute but it wasn\u0027t used so far.  The following patch should change\nthat.  My tests show that this is all that\u0027s needed.\n\nIf OLDNAME is a symlink setting the flag causes linkat to follow the\nsymlink and create a hardlink with the target.  This is actually the\nbehavior POSIX demands for link() as well but Linux wisely does not do\nthis.  With this flag (which will most likely be in the next POSIX\nrevision) the programmer can choose the behavior, defaulting to the safe\nvariant.  As a side effect it is now possible to implement a\nPOSIX-compliant link(2) function for those who are interested.\n\n  touch file\n  ln -s file symlink\n\n  linkat(fd, \"symlink\", fd, \"newlink\", 0)\n    -\u003e newlink is hardlink of symlink\n\n  linkat(fd, \"symlink\", fd, \"newlink\", AT_SYMLINK_FOLLOW)\n    -\u003e newlink is hardlink of file\n\nThe value of AT_SYMLINK_FOLLOW is determined by the definition we already\nuse in glibc.\n\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nAcked-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "5590ff0d5528b60153c0b4e7b771472b5a95e297",
      "tree": "5fdccf2354269702f71beb8e0a2942e4167fd992",
      "parents": [
        "e2f99018eb7b29954747a2dd78e9fc0c36a60f0f"
      ],
      "author": {
        "name": "Ulrich Drepper",
        "email": "drepper@redhat.com",
        "time": "Wed Jan 18 17:43:53 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Jan 18 19:20:29 2006 -0800"
      },
      "message": "[PATCH] vfs: *at functions: core\n\nHere is a series of patches which introduce in total 13 new system calls\nwhich take a file descriptor/filename pair instead of a single file\nname.  These functions, openat etc, have been discussed on numerous\noccasions.  They are needed to implement race-free filesystem traversal,\nthey are necessary to implement a virtual per-thread current working\ndirectory (think multi-threaded backup software), etc.\n\nWe have in glibc today implementations of the interfaces which use the\n/proc/self/fd magic.  But this code is rather expensive.  Here are some\nresults (similar to what Jim Meyering posted before).\n\nThe test creates a deep directory hierarchy on a tmpfs filesystem.  Then\nrm -fr is used to remove all directories.  Without syscall support I get\nthis:\n\nreal    0m31.921s\nuser    0m0.688s\nsys     0m31.234s\n\nWith syscall support the results are much better:\n\nreal    0m20.699s\nuser    0m0.536s\nsys     0m20.149s\n\nThe interfaces are for obvious reasons currently not much used.  But they\u0027ll\nbe used.  coreutils (and Jeff\u0027s posixutils) are already using them.\nFurthermore, code like ftw/fts in libc (maybe even glob) will also start using\nthem.  I expect a patch to make follow soon.  Every program which is walking\nthe filesystem tree will benefit.\n\nSigned-off-by: Ulrich Drepper \u003cdrepper@redhat.com\u003e\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nCc: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Al Viro \u003cviro@ftp.linux.org.uk\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\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"
    },
    {
      "commit": "ef3daeda7b58f046f94b26637d500354038d39f4",
      "tree": "acce3fb6a4ef5fa5c4e6962490d6f0db434fbad3",
      "parents": [
        "44e58a6a0bd604f46be9d808408a1cd880cc9b19"
      ],
      "author": {
        "name": "Yoav Zach",
        "email": "yoav_zach@yahoo.com",
        "time": "Thu Jun 23 00:09:58 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Thu Jun 23 09:45:28 2005 -0700"
      },
      "message": "[PATCH] Don\u0027t force O_LARGEFILE for 32 bit processes on ia64\n\nIn ia64 kernel, the O_LARGEFILE flag is forced when opening a file.  This\nis problematic for execution of 32 bit processes, which are not largefile\naware, either by SW emulation or by HW execution.\n\nFor such processes, the problem is two-fold:\n\n1) When trying to open a file that is larger than 4G\n   the operation should fail, but it\u0027s not\n2) Writing to offset larger than 4G should fail, but\n   it\u0027s not\n\nThe proposed patch takes advantage of the way 32 bit processes are\nidentified in ia64 systems.  Such processes have PER_LINUX32 for their\npersonality.  With the patch, the ia64 kernel will not enforce the\nO_LARGEFILE flag if the current process has PER_LINUX32 set.  The behavior\nfor all other architectures remains unchanged.\n\nSigned-off-by: Yoav Zach \u003cyoav.zach@intel.com\u003e\nAcked-by: Tony Luck \u003ctony.luck@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
      "tree": "0bba044c4ce775e45a88a51686b5d9f90697ea9d",
      "parents": [],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@ppc970.osdl.org",
        "time": "Sat Apr 16 15:20:36 2005 -0700"
      },
      "message": "Linux-2.6.12-rc2\n\nInitial git repository build. I\u0027m not bothering with the full history,\neven though we have it. We can create a separate \"historical\" git\narchive of that later if we want to, and in the meantime it\u0027s about\n3.2GB when imported into git - space that would just make the early\ngit days unnecessarily complicated, when we don\u0027t have a lot of good\ninfrastructure for it.\n\nLet it rip!\n"
    }
  ]
}
