)]}'
{
  "log": [
    {
      "commit": "1b8ab8159ef8f818f870a1d2e3b6953d80eefd3f",
      "tree": "97fdfc87493d5077c4c510e4defedccc483477af",
      "parents": [
        "9afa2fb6c13501e5b3536d15344fce4e5442c469"
      ],
      "author": {
        "name": "Erez Zadok",
        "email": "ezk@cs.sunysb.edu",
        "time": "Thu Dec 03 21:56:09 2009 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 17 10:58:17 2009 -0500"
      },
      "message": "VFS/fsstack: handle 32-bit smp + preempt + large files in fsstack_copy_inode_size\n\nCopy the inode size and blocks from one inode to another correctly on 32-bit\nsystems with CONFIG_SMP, CONFIG_PREEMPT, or CONFIG_LBDAF.  Use proper inode\nspinlocks only when i_size/i_blocks cannot fit in one 32-bit word.\n\nSigned-off-by: Hugh Dickins \u003chugh.dickins@tiscali.co.uk\u003e\nSigned-off-by: Erez Zadok \u003cezk@cs.sunysb.edu\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "9afa2fb6c13501e5b3536d15344fce4e5442c469",
      "tree": "470ff1993ad9e88e0ed3abf81cb7c9745919b33d",
      "parents": [
        "cb59861f03a626196a23fdef5e20ddbb8cca6466"
      ],
      "author": {
        "name": "Erez Zadok",
        "email": "ezk@cs.sunysb.edu",
        "time": "Wed Dec 02 19:51:54 2009 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 17 10:57:30 2009 -0500"
      },
      "message": "fsstack/ecryptfs: remove unused get_nlinks param to fsstack_copy_attr_all\n\nThis get_nlinks parameter was never used by the only mainline user,\necryptfs; and it has never been used by unionfs or wrapfs either.\n\nAcked-by: Dustin Kirkland \u003ckirkland@canonical.com\u003e\nAcked-by: Tyler Hicks \u003ctyhicks@linux.vnet.ibm.com\u003e\nSigned-off-by: Erez Zadok \u003cezk@cs.sunysb.edu\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a6e6df25ec6751f4f73784398ab7d43cf9d2019f",
      "tree": "64c2862e00a9094d5ace11b812fcf0ac506df945",
      "parents": [
        "bc5393a6c9c0e70b4b43fb2fb63e3315e9a15c8f"
      ],
      "author": {
        "name": "Erez Zadok",
        "email": "ezk@cs.sunysb.edu",
        "time": "Sun Feb 18 23:57:45 2007 -0500"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 19 14:21:50 2007 -0800"
      },
      "message": "[PATCH] fs/stack.c: Copy i_nlink after all other attributes are copied\n\nA user-specified get_nlinks may depend on other inode attributes.\n\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nSigned-off-by: Erez Zadok \u003cezk@cs.sunysb.edu\u003e\nSigned-off-by: Josef \u0027Jeff\u0027 Sipek \u003cjsipek@cs.sunysb.edu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "ba3ff12fca318225cb978c6181b83d38dcbc5b09",
      "tree": "fe1ae914a197aa6e74a7c1281bf38888e2eac3d5",
      "parents": [
        "ef8142a525c58dec325e8dd9a7bf92fb240d05c7"
      ],
      "author": {
        "name": "Michael Halcrow",
        "email": "mhalcrow@us.ibm.com",
        "time": "Fri Dec 22 01:08:43 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 22 08:55:48 2006 -0800"
      },
      "message": "[PATCH] fsstack: Remove inode copy\n\nTrevor found a file size problem in eCryptfs in recent kernels, and he\ntracked it down to an fsstack change.\n\nThis was the eCryptfs copy_attr_all:\n\n\u003e -void ecryptfs_copy_attr_all(struct inode *dest, const struct inode *src)\n\u003e -{\n\u003e -       dest-\u003ei_mode \u003d src-\u003ei_mode;\n\u003e -       dest-\u003ei_nlink \u003d src-\u003ei_nlink;\n\u003e -       dest-\u003ei_uid \u003d src-\u003ei_uid;\n\u003e -       dest-\u003ei_gid \u003d src-\u003ei_gid;\n\u003e -       dest-\u003ei_rdev \u003d src-\u003ei_rdev;\n\u003e -       dest-\u003ei_atime \u003d src-\u003ei_atime;\n\u003e -       dest-\u003ei_mtime \u003d src-\u003ei_mtime;\n\u003e -       dest-\u003ei_ctime \u003d src-\u003ei_ctime;\n\u003e -       dest-\u003ei_blkbits \u003d src-\u003ei_blkbits;\n\u003e -       dest-\u003ei_flags \u003d src-\u003ei_flags;\n\u003e -}\n\nThis is the fsstack copy_attr_all:\n\n\u003e +void fsstack_copy_attr_all(struct inode *dest, const struct inode *src,\n\u003e +                               int (*get_nlinks)(struct inode *))\n\u003e +{\n\u003e +       if (!get_nlinks)\n\u003e +               dest-\u003ei_nlink \u003d src-\u003ei_nlink;\n\u003e +       else\n\u003e +               dest-\u003ei_nlink \u003d (*get_nlinks)(dest);\n\u003e +\n\u003e +       dest-\u003ei_mode \u003d src-\u003ei_mode;\n\u003e +       dest-\u003ei_uid \u003d src-\u003ei_uid;\n\u003e +       dest-\u003ei_gid \u003d src-\u003ei_gid;\n\u003e +       dest-\u003ei_rdev \u003d src-\u003ei_rdev;\n\u003e +       dest-\u003ei_atime \u003d src-\u003ei_atime;\n\u003e +       dest-\u003ei_mtime \u003d src-\u003ei_mtime;\n\u003e +       dest-\u003ei_ctime \u003d src-\u003ei_ctime;\n\u003e +       dest-\u003ei_blkbits \u003d src-\u003ei_blkbits;\n\u003e +       dest-\u003ei_flags \u003d src-\u003ei_flags;\n\u003e +\n\u003e +       fsstack_copy_inode_size(dest, src);\n\u003e +}\n\nThe addition of copy_inode_size breaks eCryptfs, since eCryptfs needs to\ninterpolate the file sizes (eCryptfs has extra space in the lower file for\nthe header).  The setting of the upper inode size occurs elsewhere in\neCryptfs, and the new copy_attr_all now undoes what eCryptfs was doing\nright beforehand.\n\nI see three ways of going forward from here.  (1) Something like this patch\nneeds to go in (assuming it jives with Unionfs), (2) we need to make a\nchange to the fsstack API for more fine-grained control over copying\nattributes (e.g., by also including a callback function for calculating the\nright file size, which will require some more work on both eCryptfs and\nUnionfs), or (3) the fsstack patch on eCryptfs (commit\n0cc72dc7f050188d8d7344b1dd688cbc68d3cd30 made on Fri Dec 8 02:36:31 2006\n-0800) needs to be yanked in 2.6.20.\n\nI think the simplest solution, from eCryptfs\u0027 perspective, is to just\nremove the inode size copy.\n\nRemove inode size copy in general fsstack attr copy code. Stacked\nfilesystems may need to interpolate the inode size, since the file\nsize in the lower file may be different than the file size in the\nstacked layer.\n\nSigned-off-by: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nAcked-by: Josef \"Jeff\" Sipek \u003cjsipek@cs.sunysb.edu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "42cf11939becc717bd125d121a1a23415106a099",
      "tree": "d9c0c66e3f01287fd7da6315c1a4df7c3fd9d05b",
      "parents": [
        "17b3cff079721bbc45e9d6de2fa3edb73561e27d"
      ],
      "author": {
        "name": "Josef \"Jeff\" Sipek",
        "email": "jsipek@cs.sunysb.edu",
        "time": "Fri Dec 08 02:36:31 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Dec 08 08:28:40 2006 -0800"
      },
      "message": "[PATCH] fsstack: Introduce fsstack_copy_{attr,inode}_*\n\nIntroduce several fsstack_copy_* functions which allow stackable filesystems\n(such as eCryptfs and Unionfs) to easily copy over (currently only) inode\nattributes.  This prevents code duplication and allows for code reuse.\n\n[akpm@osdl.org: Remove unneeded wrapper]\n[bunk@stusta.de: fs/stack.c should #include \u003clinux/fs_stack.h\u003e]\nSigned-off-by: Josef \"Jeff\" Sipek \u003cjsipek@cs.sunysb.edu\u003e\nCc: Michael Halcrow \u003cmhalcrow@us.ibm.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    }
  ]
}
