)]}'
{
  "log": [
    {
      "commit": "1193755ac6328ad240ba987e6ec41d5e8baf0680",
      "tree": "40bf847d7e3ebaa57b107151d14e6cd1d280cc6d",
      "parents": [
        "4edebed86690eb8db9af3ab85baf4a34e73266cc",
        "0ef97dcfce4179a2eba046b855ee2f91d6f1b414"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 10:34:35 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jun 01 10:34:35 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs changes from Al Viro.\n \"A lot of misc stuff.  The obvious groups:\n   * Miklos\u0027 atomic_open series; kills the damn abuse of\n     -\u003ed_revalidate() by NFS, which was the major stumbling block for\n     all work in that area.\n   * ripping security_file_mmap() and dealing with deadlocks in the\n     area; sanitizing the neighborhood of vm_mmap()/vm_munmap() in\n     general.\n   * -\u003eencode_fh() switched to saner API; insane fake dentry in\n     mm/cleancache.c gone.\n   * assorted annotations in fs (endianness, __user)\n   * parts of Artem\u0027s -\u003es_dirty work (jff2 and reiserfs parts)\n   * -\u003eupdate_time() work from Josef.\n   * other bits and pieces all over the place.\n\n  Normally it would\u0027ve been in two or three pull requests, but\n  signal.git stuff had eaten a lot of time during this cycle ;-/\"\n\nFix up trivial conflicts in Documentation/filesystems/vfs.txt (the\n\u0027truncate_range\u0027 inode method was removed by the VM changes, the VFS\nupdate adds an \u0027update_time()\u0027 method), and in fs/btrfs/ulist.[ch] (due\nto sparse fix added twice, with other changes nearby).\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (95 commits)\n  nfs: don\u0027t open in -\u003ed_revalidate\n  vfs: retry last component if opening stale dentry\n  vfs: nameidata_to_filp(): don\u0027t throw away file on error\n  vfs: nameidata_to_filp(): inline __dentry_open()\n  vfs: do_dentry_open(): don\u0027t put filp\n  vfs: split __dentry_open()\n  vfs: do_last() common post lookup\n  vfs: do_last(): add audit_inode before open\n  vfs: do_last(): only return EISDIR for O_CREAT\n  vfs: do_last(): check LOOKUP_DIRECTORY\n  vfs: do_last(): make ENOENT exit RCU safe\n  vfs: make follow_link check RCU safe\n  vfs: do_last(): use inode variable\n  vfs: do_last(): inline walk_component()\n  vfs: do_last(): make exit RCU safe\n  vfs: split do_lookup()\n  Btrfs: move over to use -\u003eupdate_time\n  fs: introduce inode operation -\u003eupdate_time\n  reiserfs: get rid of resierfs_sync_super\n  reiserfs: mark the superblock as dirty a bit later\n  ...\n"
    },
    {
      "commit": "08615d7d85e5aa02c05bf6c4dde87d940e7f85f6",
      "tree": "18906149d313d25914160aca21cedf54b3a7e818",
      "parents": [
        "9fdadb2cbaf4b482dfd6086e8bd3d2db071a1702",
        "0a4dd35c67b144d8ef9432120105f1aab9293ee9"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 18:10:18 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 18:10:18 2012 -0700"
      },
      "message": "Merge branch \u0027akpm\u0027 (Andrew\u0027s patch-bomb)\n\nMerge misc patches from Andrew Morton:\n\n - the \"misc\" tree - stuff from all over the map\n\n - checkpatch updates\n\n - fatfs\n\n - kmod changes\n\n - procfs\n\n - cpumask\n\n - UML\n\n - kexec\n\n - mqueue\n\n - rapidio\n\n - pidns\n\n - some checkpoint-restore feature work.  Reluctantly.  Most of it\n   delayed a release.  I\u0027m still rather worried that we don\u0027t have a\n   clear roadmap to completion for this work.\n\n* emailed from Andrew Morton \u003cakpm@linux-foundation.org\u003e: (78 patches)\n  kconfig: update compression algorithm info\n  c/r: prctl: add ability to set new mm_struct::exe_file\n  c/r: prctl: extend PR_SET_MM to set up more mm_struct entries\n  c/r: procfs: add arg_start/end, env_start/end and exit_code members to /proc/$pid/stat\n  syscalls, x86: add __NR_kcmp syscall\n  fs, proc: introduce /proc/\u003cpid\u003e/task/\u003ctid\u003e/children entry\n  sysctl: make kernel.ns_last_pid control dependent on CHECKPOINT_RESTORE\n  aio/vfs: cleanup of rw_copy_check_uvector() and compat_rw_copy_check_uvector()\n  eventfd: change int to __u64 in eventfd_signal()\n  fs/nls: add Apple NLS\n  pidns: make killed children autoreap\n  pidns: use task_active_pid_ns in do_notify_parent\n  rapidio/tsi721: add DMA engine support\n  rapidio: add DMA engine support for RIO data transfers\n  ipc/mqueue: add rbtree node caching support\n  tools/selftests: add mq_perf_tests\n  ipc/mqueue: strengthen checks on mqueue creation\n  ipc/mqueue: correct mq_attr_ok test\n  ipc/mqueue: improve performance of send/recv\n  selftests: add mq_open_tests\n  ...\n"
    },
    {
      "commit": "a3860c1c5dd1137db23d7786d284939c5761d517",
      "tree": "48d688c6c391ef45f79bdd60815450ca06c5cc1a",
      "parents": [
        "15837294d4ce717f69942f7366e99d4d1d3d9923"
      ],
      "author": {
        "name": "Xi Wang",
        "email": "xi.wang@gmail.com",
        "time": "Thu May 31 16:26:04 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 31 17:49:26 2012 -0700"
      },
      "message": "introduce SIZE_MAX\n\nULONG_MAX is often used to check for integer overflow when calculating\nallocation size.  While ULONG_MAX happens to work on most systems, there\nis no guarantee that `size_t\u0027 must be the same size as `long\u0027.\n\nThis patch introduces SIZE_MAX, the maximum value of `size_t\u0027, to improve\nportability and readability for allocation size validation.\n\nSigned-off-by: Xi Wang \u003cxi.wang@gmail.com\u003e\nAcked-by: Alex Elder \u003celder@dreamhost.com\u003e\nCc: David Airlie \u003cairlied@linux.ie\u003e\nCc: Pekka Enberg \u003cpenberg@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "af56e0aa35f3ae2a4c1a6d1000702df1dd78cb76",
      "tree": "304bd85e5db2d07efa2913aa7c6313b918cfbfdb",
      "parents": [
        "65a50c951a38e9827dd9655b6e686bde912e799b",
        "6bd9adbdf9ca6a052b0b7455ac67b925eb38cfad"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 30 11:17:19 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 30 11:17:19 2012 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\nPull ceph updates from Sage Weil:\n \"There are some updates and cleanups to the CRUSH placement code, a bug\n  fix with incremental maps, several cleanups and fixes from Josh Durgin\n  in the RBD block device code, a series of cleanups and bug fixes from\n  Alex Elder in the messenger code, and some miscellaneous bounds\n  checking and gfp cleanups/fixes.\"\n\nFix up trivial conflicts in net/ceph/{messenger.c,osdmap.c} due to the\nnetworking people preferring \"unsigned int\" over just \"unsigned\".\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client: (45 commits)\n  libceph: fix pg_temp updates\n  libceph: avoid unregistering osd request when not registered\n  ceph: add auth buf in prepare_write_connect()\n  ceph: rename prepare_connect_authorizer()\n  ceph: return pointer from prepare_connect_authorizer()\n  ceph: use info returned by get_authorizer\n  ceph: have get_authorizer methods return pointers\n  ceph: ensure auth ops are defined before use\n  ceph: messenger: reduce args to create_authorizer\n  ceph: define ceph_auth_handshake type\n  ceph: messenger: check return from get_authorizer\n  ceph: messenger: rework prepare_connect_authorizer()\n  ceph: messenger: check prepare_write_connect() result\n  ceph: don\u0027t set WRITE_PENDING too early\n  ceph: drop msgr argument from prepare_write_connect()\n  ceph: messenger: send banner in process_connect()\n  ceph: messenger: reset connection kvec caller\n  libceph: don\u0027t reset kvec in prepare_write_banner()\n  ceph: ignore preferred_osd field\n  ceph: fully initialize new layout\n  ...\n"
    },
    {
      "commit": "c862868bb455694704c255481369c40d7185eb25",
      "tree": "6b0f0c0a9b252e1f526742bf7cb777b47320e49a",
      "parents": [
        "b0b0382bb4904965a9e9fca77ad87514dfda0d1c"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Apr 05 12:07:36 2012 -0700"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue May 29 23:28:33 2012 -0400"
      },
      "message": "ceph: move encode_fh to new API\n\nUse parent_inode has a flag for whether nfsd wants a connectable fh, but\ngenerate one opportunistically so that we can take advantage of the\nadditional info in there.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b0b0382bb4904965a9e9fca77ad87514dfda0d1c",
      "tree": "dc46873fa74e0d194e4a2571b16f0767e1919ae8",
      "parents": [
        "6d42e7e9f6d86ed4dfacde75a6cf515068f9749c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Apr 02 14:34:06 2012 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue May 29 23:28:33 2012 -0400"
      },
      "message": "-\u003eencode_fh() API change\n\npass inode + parent\u0027s inode or NULL instead of dentry + bool saying\nwhether we want the parent or not.\n\nNOTE: that needs ceph fix folded in.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "8f43fb53894079bf0caab6e348ceaffe7adc651a",
      "tree": "248ffc7366b569d13049a31e2cb1c88750d45ead",
      "parents": [
        "a3530df33eb91d787d08c7383a0a9982690e42d0"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 15:16:39 2012 -0500"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu May 17 08:18:13 2012 -0500"
      },
      "message": "ceph: use info returned by get_authorizer\n\nRather than passing a bunch of arguments to be filled in with the\ncontent of the ceph_auth_handshake buffer now returned by the\nget_authorizer method, just use the returned information in the\ncaller, and drop the unnecessary arguments.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "a3530df33eb91d787d08c7383a0a9982690e42d0",
      "tree": "3022fc82ea661654bfca48fae32a7a1584dba1e8",
      "parents": [
        "a255651d4cad89f1a606edd36135af892ada4f20"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 15:16:39 2012 -0500"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu May 17 08:18:13 2012 -0500"
      },
      "message": "ceph: have get_authorizer methods return pointers\n\nHave the get_authorizer auth_client method return a ceph_auth\npointer rather than an integer, pointer-encoding any returned\nerror value.  This is to pave the way for making use of the\nreturned value in an upcoming patch.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "a255651d4cad89f1a606edd36135af892ada4f20",
      "tree": "6d2c694b336f948272349e5de24be70460a94826",
      "parents": [
        "74f1869f76d043bad12ec03b4d5f04a8c3d1f157"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 15:16:39 2012 -0500"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu May 17 08:18:13 2012 -0500"
      },
      "message": "ceph: ensure auth ops are defined before use\n\nIn the create_authorizer method for both the mds and osd clients,\nthe auth_client-\u003eops pointer is blindly dereferenced.  There is no\nobvious guarantee that this pointer has been assigned.  And\nfurthermore, even if the ops pointer is non-null there is definitely\nno guarantee that the create_authorizer or destroy_authorizer\nmethods are defined.\n\nAdd checks in both routines to make sure they are defined (non-null)\nbefore use.  Add similar checks in a few other spots in these files\nwhile we\u0027re at it.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "74f1869f76d043bad12ec03b4d5f04a8c3d1f157",
      "tree": "fcce410d255e2660fc82532c70de1b2f60a956c6",
      "parents": [
        "6c4a19158b96ea1fb8acbe0c1d5493d9dcd2f147"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 15:16:39 2012 -0500"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu May 17 08:18:12 2012 -0500"
      },
      "message": "ceph: messenger: reduce args to create_authorizer\n\nMake use of the new ceph_auth_handshake structure in order to reduce\nthe number of arguments passed to the create_authorizor method in\nceph_auth_client_ops.  Use a local variable of that type as a\nshorthand in the get_authorizer method definitions.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "6c4a19158b96ea1fb8acbe0c1d5493d9dcd2f147",
      "tree": "5fe6418eb57bf4e84f1eda9606a4a045ff08dcba",
      "parents": [
        "ed96af646011412c2bf1ffe860db170db355fae5"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed May 16 15:16:38 2012 -0500"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu May 17 08:18:12 2012 -0500"
      },
      "message": "ceph: define ceph_auth_handshake type\n\nThe definitions for the ceph_mds_session and ceph_osd both contain\nfive fields related only to \"authorizers.\"  Encapsulate those fields\ninto their own struct type, allowing for better isolation in some\nupcoming patches.\n\nFix the #includes in \"linux/ceph/osd_client.h\" to lay out their more\ncomplete canonical path.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "c047be09349752b8a4dac27bc9f130bf4d592f11",
      "tree": "4303e2a712387350031aa9eb91a9ce8f54aef811",
      "parents": [
        "702aeb1f88e707241d76e1e2a1a02dd81e6c2d77"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon May 14 12:34:50 2012 -0700"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Wed May 16 14:28:28 2012 -0500"
      },
      "message": "ceph: ignore preferred_osd field\n\nOld users may not expect EINVAL, and there is no clear user-visibile\nbehavior change now that we ignore it.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\n"
    },
    {
      "commit": "702aeb1f88e707241d76e1e2a1a02dd81e6c2d77",
      "tree": "1d605a2109700d5ba4cc6c95f253e6ee3e10a120",
      "parents": [
        "fd51653f78cf40a0516e521b6de22f329c5bad8d"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon May 14 12:34:38 2012 -0700"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Wed May 16 14:28:27 2012 -0500"
      },
      "message": "ceph: fully initialize new layout\n\nWhen we are setting a new layout, fully initialize the structure:\n - zero it out\n - always set preferred_osd to -1\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\n"
    },
    {
      "commit": "e49bf4c51cbe27439c00516d4297193d45dd4097",
      "tree": "5be5727f0828f74719e7f0783fb1fba829658b47",
      "parents": [
        "3469ac1aa3a2f1e2586a412923c414779a0af854"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon May 07 15:34:35 2012 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon May 07 15:34:35 2012 -0700"
      },
      "message": "ceph: refactor SETLAYOUT and SETDIRLAYOUT ioctl checks into common helper\n\nBoth of these methods perform similar checks; move that code to a helper\nso that we can ensure the checks are consistent.\n\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "3469ac1aa3a2f1e2586a412923c414779a0af854",
      "tree": "b271456518130622e6d394cf50939c132f1a1d0d",
      "parents": [
        "cd9d9f5df6098c50726200d4185e9e8da32785b3"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon May 07 15:33:36 2012 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon May 07 15:33:36 2012 -0700"
      },
      "message": "ceph: drop support for preferred_osd pgs\n\nThis was an ill-conceived feature that has been removed from Ceph.  Do\nthis gracefully:\n\n - reject attempts to specify a preferred_osd via the ioctl\n - stop exposing this information via virtual xattrs\n - always fill in -1 for requests, in case we talk to an older server\n - don\u0027t calculate preferred_osd placements/pgids\n\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "56b59b429b4c26e5e730bc8c3d837de9f7d0a966",
      "tree": "191bf87e438a3985ccb7e3c5382fab8d31f94edb",
      "parents": [
        "9a7259d5c8978bbeb5fdcf64b168f8470d8208a6",
        "c666601a935b94cc0f3310339411b6940de751ba"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 10:01:29 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 28 10:01:29 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\nPull Ceph updates for 3.4-rc1 from Sage Weil:\n \"Alex has been busy.  There are a range of rbd and libceph cleanups,\n  especially surrounding device setup and teardown, and a few critical\n  fixes in that code.  There are more cleanups in the messenger code,\n  virtual xattrs, a fix for CRC calculation/checks, and lots of other\n  miscellaneous stuff.\n\n  There\u0027s a patch from Amon Ott to make inos behave a bit better on\n  32-bit boxes, some decode check fixes from Xi Wang, and network\n  throttling fix from Jim Schutt, and a couple RBD fixes from Josh\n  Durgin.\n\n  No new functionality, just a lot of cleanup and bug fixing.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client: (65 commits)\n  rbd: move snap_rwsem to the device, rename to header_rwsem\n  ceph: fix three bugs, two in ceph_vxattrcb_file_layout()\n  libceph: isolate kmap() call in write_partial_msg_pages()\n  libceph: rename \"page_shift\" variable to something sensible\n  libceph: get rid of zero_page_address\n  libceph: only call kernel_sendpage() via helper\n  libceph: use kernel_sendpage() for sending zeroes\n  libceph: fix inverted crc option logic\n  libceph: some simple changes\n  libceph: small refactor in write_partial_kvec()\n  libceph: do crc calculations outside loop\n  libceph: separate CRC calculation from byte swapping\n  libceph: use \"do\" in CRC-related Boolean variables\n  ceph: ensure Boolean options support both senses\n  libceph: a few small changes\n  libceph: make ceph_tcp_connect() return int\n  libceph: encapsulate some messenger cleanup code\n  libceph: make ceph_msgr_wq private\n  libceph: encapsulate connection kvec operations\n  libceph: move prepare_write_banner()\n  ...\n"
    },
    {
      "commit": "3489b42a72a41d477665ab37f196ae9257180abb",
      "tree": "f90c349a10cb7ca6c1c2da5d141324c636817d33",
      "parents": [
        "8d63e318c4eb1bea6f7e3cb4b77849eaa167bfec"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 08 16:50:09 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:52 2012 -0500"
      },
      "message": "ceph: fix three bugs, two in ceph_vxattrcb_file_layout()\n\nIn ceph_vxattrcb_file_layout(), there is a check to determine\nwhether a preferred PG should be formatted into the output buffer.\nThat check assumes that a preferred PG number of 0 indicates \"no\npreference,\" but that is wrong.  No preference is indicated by a\nnegative (specifically, -1) PG number.\n\nIn addition, if that condition yields true, the preferred value\nis formatted into a sized buffer, but the size consumed by the\nearlier snprintf() call is not accounted for, opening up the\npossibilty of a buffer overrun.\n\nFinally, in ceph_vxattrcb_dir_rctime() where the nanoseconds part of\nthe time displayed did not include leading 0\u0027s, which led to\nerroneous (sub-second portion of) time values being shown.\n\nThis fixes these three issues:\n    http://tracker.newdream.net/issues/2155\n    http://tracker.newdream.net/issues/2156\n    http://tracker.newdream.net/issues/2157\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nReviewed-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "cffaba15cd95d4a16eb5a6aa5c22a79f67d555ab",
      "tree": "d752174022e8444c70afb27e798e032163f89ac9",
      "parents": [
        "d3002b974cefbb7c1e325cc296966f768ff76b06"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Wed Feb 15 07:43:54 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:51 2012 -0500"
      },
      "message": "ceph: ensure Boolean options support both senses\n\nMany ceph-related Boolean options offer the ability to both enable\nand disable a feature.  For all those that don\u0027t offer this, add\na new option so that they do.\n\nNote that ceph_show_options()--which reports mount options currently\nin effect--only reports the option if it is different from the\ndefault value.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "ee57741c5209154b8ef124bcaa2496da1b69a988",
      "tree": "248a6e7bf259bb849f885f1ff4a82be74ab4913b",
      "parents": [
        "2107978668de13da484f7abc3f03516494c7fca9"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Tue Jan 24 10:08:36 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:47 2012 -0500"
      },
      "message": "rbd: make ceph_parse_options() return a pointer\n\nceph_parse_options() takes the address of a pointer as an argument\nand uses it to return the address of an allocated structure if\nsuccessful.  With this interface is not evident at call sites that\nthe pointer is always initialized.  Change the interface to return\nthe address instead (or a pointer-coded error code) to make the\nvalidity of the returned pointer obvious.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "18fa8b3feaac772925263b04b1429d80e2dfd779",
      "tree": "e9f6070faf16baf17bec93caa476afffeaa903b7",
      "parents": [
        "3ce6cd1233046eb97d6d2bd5d80c1cd40528ea2f"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Mon Jan 23 15:49:28 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:46 2012 -0500"
      },
      "message": "ceph: make ceph_setxattr() and ceph_removexattr() more alike\n\nThis patch just rearranges a few bits of code to make more\nportions of ceph_setxattr() and ceph_removexattr() identical.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "3ce6cd1233046eb97d6d2bd5d80c1cd40528ea2f",
      "tree": "43025c030db1741222b96156931b6aa2c8b85e51",
      "parents": [
        "aa4066ed7ba60421423c35f66b789bb3dd21d89e"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Mon Jan 23 15:49:28 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:46 2012 -0500"
      },
      "message": "ceph: avoid repeatedly computing the size of constant vxattr names\n\nAll names defined in the directory and file virtual extended\nattribute tables are constant, and the size of each is known at\ncompile time.  So there\u0027s no need to compute their length every\ntime any file\u0027s attribute is listed.\n\nRecord the length of each string and use it when needed to determine\nthe space need to represent them.  In addition, compute the\naggregate size of strings in each table just once at initialization\ntime.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "aa4066ed7ba60421423c35f66b789bb3dd21d89e",
      "tree": "3b3a805fd5acad82a5e4febb9770e939d9e533e3",
      "parents": [
        "881a5fa20092d221a7c4b365742c959ef4b297ec"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Mon Jan 23 15:49:28 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:46 2012 -0500"
      },
      "message": "ceph: encode type in vxattr callback routines\n\nThe names of the callback functions used for virtual extended\nattributes are based only on the last component of the attribute\nname.  Because of the way these are defined, this precludes allowing\na single (lowest) attribute name for different callbacks, dependent\non the type of file being operated on.  (For example, it might be\nnice to support both \"ceph.dir.layout\" and \"ceph.file.layout\".)\n\nJust change the callback names to avoid this problem.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "881a5fa20092d221a7c4b365742c959ef4b297ec",
      "tree": "3a983dfa715e1cf5594798bf48aa4668ba6de815",
      "parents": [
        "eb78808446aeed8e25b080c66bf823c1f188236d"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Mon Jan 23 15:49:28 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:46 2012 -0500"
      },
      "message": "ceph: drop \"_cb\" from name of struct ceph_vxattr_cb\n\nA struct ceph_vxattr_cb does not represent a callback at all, but\nrather a virtual extended attribute itself.  Drop the \"_cb\" suffix\nfrom its name to reflect that.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "eb78808446aeed8e25b080c66bf823c1f188236d",
      "tree": "d6d907a1028ead5286721f7d165c8cd20a6f4632",
      "parents": [
        "22891907193e005923a14384d82d702f6af4f0cf"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Mon Jan 23 15:49:28 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:46 2012 -0500"
      },
      "message": "ceph: use macros to normalize vxattr table definitions\n\nEntries in the ceph virtual extended attribute tables all follow a\ndistinct pattern in their definition.  Enforce this pattern through\nthe use of a macro.\n\nAlso, a null name field signals the end of the table, so make that\nbe the first field in the ceph_vxattr_cb structure.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "22891907193e005923a14384d82d702f6af4f0cf",
      "tree": "b41d7d2360f6fa013cc4a8b3732571f5d74afa1a",
      "parents": [
        "06476a69d8954f36a15ff5ddbfd47bdfcff22791"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Mon Jan 23 15:49:28 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:46 2012 -0500"
      },
      "message": "ceph: use a symbolic name for \"ceph.\" extended attribute namespace\n\nUse symbolic constants to define the top-level prefix for \"ceph.\"\nextended attribute names.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "06476a69d8954f36a15ff5ddbfd47bdfcff22791",
      "tree": "3fc48b0e9610b498b41eacbd1b23cce40ab456ec",
      "parents": [
        "b829c1954dbeb42a1277a8cb05943050ee70be94"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Mon Jan 23 15:49:27 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:46 2012 -0500"
      },
      "message": "ceph: pass inode rather than table to ceph_match_vxattr()\n\nAll callers of ceph_match_vxattr() determine what to pass as the\nfirst argument by calling ceph_inode_vxattrs(inode).  Just do that\ninside ceph_match_vxattr() itself, changing it to take an inode\nrather than the vxattr pointer as its first argument.\n\nAlso ensure the function works correctly for an empty table (i.e.,\ncontaining only a terminating null entry).\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "b829c1954dbeb42a1277a8cb05943050ee70be94",
      "tree": "661cb42188119da359b1850117a36a1fcf319063",
      "parents": [
        "99f0f3b2c4be15784bb4ede33b5f2c3f7861dba7"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Mon Jan 23 15:49:27 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:46 2012 -0500"
      },
      "message": "ceph: don\u0027t null-terminate xattr values\n\nFor some reason, ceph_setxattr() allocates an extra byte in which a\n\u0027\\0\u0027 is stored past the end of an extended attribute value.  This is\nnot needed, and is potentially misleading, so get rid of it.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "80834312a4da1405a9bc788313c67643de6fcb4c",
      "tree": "46fdff81b144f9307a4361f943b7f0fa4d7f1341",
      "parents": [
        "64486697771cbe219fffcb5c8e2ed9ca4fdf086c"
      ],
      "author": {
        "name": "Xi Wang",
        "email": "xi.wang@gmail.com",
        "time": "Thu Feb 16 11:56:29 2012 -0500"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:45 2012 -0500"
      },
      "message": "ceph: fix overflow check in build_snap_context()\n\nThe overflow check for a + n * b should be (n \u003e (ULONG_MAX - a) / b),\nrather than (n \u003e ULONG_MAX / b - a).\n\nSigned-off-by: Xi Wang \u003cxi.wang@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "810339ec2fae5cbd0164b8acde7fb65652755864",
      "tree": "4a7ea72b1af2201d2bc521afc5e34ed6f6a8ca41",
      "parents": [
        "a661fc561190c0ee2d7cfabcfa92204e2b3aa349"
      ],
      "author": {
        "name": "Xi Wang",
        "email": "xi.wang@gmail.com",
        "time": "Fri Feb 03 09:55:36 2012 -0500"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:45 2012 -0500"
      },
      "message": "ceph: avoid panic with mismatched symlink sizes in fill_inode()\n\nReturn -EINVAL rather than panic if iinfo-\u003esymlink_len and inode-\u003ei_size\ndo not match.\n\nAlso use kstrndup rather than kmalloc/memcpy.\n\nSigned-off-by: Xi Wang \u003cxi.wang@gmail.com\u003e\nReviewed-by: Alex Elder \u003celder@dreamhost.com\u003e\n"
    },
    {
      "commit": "a661fc561190c0ee2d7cfabcfa92204e2b3aa349",
      "tree": "792088d4d245645d5c91fbb97fd4ee2a43188bd1",
      "parents": [
        "1ce208a6ce030ea6ccd4b13c8cec0a84c0c7a1e9"
      ],
      "author": {
        "name": "Amon Ott",
        "email": "ao@m-privacy.de",
        "time": "Mon Jan 23 09:25:23 2012 -0800"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:45 2012 -0500"
      },
      "message": "ceph: use 2 instead of 1 as fallback for 32-bit inode number\n\nThe root directory of the Ceph mount has inode number 1, so falling back\nto 1 always creates a collision. 2 is unused on my test systems and seems\nless likely to collide.\n\nSigned-off-by: Amon Ott \u003cao@m-privacy.de\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "1ce208a6ce030ea6ccd4b13c8cec0a84c0c7a1e9",
      "tree": "2957ff4c5c853464fdd174a431a55a66924d6f79",
      "parents": [
        "182fac2689b769a96e7fc9defcd560c5cca92b1e"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Jan 12 17:48:11 2012 -0800"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Mar 22 10:47:45 2012 -0500"
      },
      "message": "ceph: don\u0027t reset s_cap_ttl to zero\n\nAvoid the need to check for a special zero s_cap_ttl value by just\nusing (jiffies - 1) as the value assigned to indicate \"sometime in\nthe past.\"\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nReviewed-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "48fde701aff662559b38d9a609574068f22d00fe",
      "tree": "aa6b203dc671b51d58575b65eb08310ff8309b60",
      "parents": [
        "6b4231e2f92adbcf96fb2a3fa751d7ca0a61b21f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 22:15:13 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:35 2012 -0400"
      },
      "message": "switch open-coded instances of d_make_root() to new helper\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6c073a7ee250118b8be3a2379c96fd7f78382b06",
      "tree": "b398bd9cad821a3543df835e5a0110f270acafb9",
      "parents": [
        "ff05f603c3238010769787f3ba54c48c290ed3e5",
        "d23a4b3fd6ef70b80411b39b8c8bc548a219ce70"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 02 15:47:33 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 02 15:47:33 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  rbd: fix safety of rbd_put_client()\n  rbd: fix a memory leak in rbd_get_client()\n  ceph: create a new session lock to avoid lock inversion\n  ceph: fix length validation in parse_reply_info()\n  ceph: initialize client debugfs outside of monc-\u003emutex\n  ceph: change \"ceph.layout\" xattr to be \"ceph.file.layout\"\n"
    },
    {
      "commit": "d8fb02abdc39f92a1066313e2b17047876afa8f9",
      "tree": "32f8126683dd185411b701b79d23900cf6c02035",
      "parents": [
        "32852a81bccd9e3d1953b894966393d1b546576d"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Thu Jan 12 17:48:10 2012 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Feb 02 12:49:19 2012 -0800"
      },
      "message": "ceph: create a new session lock to avoid lock inversion\n\nLockdep was reporting a possible circular lock dependency in\ndentry_lease_is_valid().  That function needs to sample the\nsession\u0027s s_cap_gen and and s_cap_ttl fields coherently, but needs\nto do so while holding a dentry lock.  The s_cap_lock field was\nbeing used to protect the two fields, but that can\u0027t be taken while\nholding a lock on a dentry within the session.\n\nIn most cases, the s_cap_gen and s_cap_ttl fields only get operated\non separately.  But in three cases they need to be updated together.\nImplement a new lock to protect the spots updating both fields\natomically is required.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nReviewed-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "32852a81bccd9e3d1953b894966393d1b546576d",
      "tree": "8c21ce9f1a1e6ecfbeafdcc8552b77b3587bca5b",
      "parents": [
        "ab434b60ab07f8c44246b6fb0cddee436687a09a"
      ],
      "author": {
        "name": "Xi Wang",
        "email": "xi.wang@gmail.com",
        "time": "Sat Jan 14 22:20:59 2012 -0500"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Feb 02 12:49:11 2012 -0800"
      },
      "message": "ceph: fix length validation in parse_reply_info()\n\n\"len\" is read from network and thus needs validation.  Otherwise, given\na bogus \"len\" value, p+len could be an out-of-bounds pointer, which is\nused in further parsing.\n\nSigned-off-by: Xi Wang \u003cxi.wang@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "114fc47492e23d93653e4a16664833e98d62a563",
      "tree": "c5ff822c89193cc6cad952cf24a06cd4a1f706eb",
      "parents": [
        "805a6af8dba5dfdd35ec35dc52ec0122400b2610"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Wed Jan 11 17:41:01 2012 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Feb 02 12:48:52 2012 -0800"
      },
      "message": "ceph: change \"ceph.layout\" xattr to be \"ceph.file.layout\"\n\nThe virtual extended attribute named \"ceph.layout\" is meaningful\nonly for regular files.  Change its name to be \"ceph.file.layout\" to\nmore directly reflect that in the ceph xattr namespace.  Preserve\nthe old \"ceph.layout\" name for the time being (until we decide it\u0027s\nsafe to get rid of it entirely).\n\nAdd a missing initializer for \"readonly\" in the terminating entry.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nReviewed-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "1a52bb0b686844021597d190e562ab55d1210104",
      "tree": "7edf13509869a6a7f1f488a679f15ff6c3057c54",
      "parents": [
        "8638094e956a47dbb9a25166705a91e9a0981d52",
        "83eb26af0db71f2dfe551405c55d982288fa6178"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 13 10:29:21 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 13 10:29:21 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:\n  ceph: ensure prealloc_blob is in place when removing xattr\n  rbd: initialize snap_rwsem in rbd_add()\n  ceph: enable/disable dentry complete flags via mount option\n  vfs: export symbol d_find_any_alias()\n  ceph: always initialize the dentry in open_root_dentry()\n  libceph: remove useless return value for osd_client __send_request()\n  ceph: avoid iput() while holding spinlock in ceph_dir_fsync\n  ceph: avoid useless dget/dput in encode_fh\n  ceph: dereference pointer after checking for NULL\n  crush: fix force for non-root TAKE\n  ceph: remove unnecessary d_fsdata conditional checks\n  ceph: Use kmemdup rather than duplicating its implementation\n\nFix up conflicts in fs/ceph/super.c (d_alloc_root() failure handling vs\nalways initialize the dentry in open_root_dentry)\n"
    },
    {
      "commit": "83eb26af0db71f2dfe551405c55d982288fa6178",
      "tree": "c7bc62a810483e328cbe2b931416e58ec655ab9b",
      "parents": [
        "0e805a1d857799352e51e8697c0b1a30aec16913"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Wed Jan 11 17:41:01 2012 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Jan 12 11:00:51 2012 -0800"
      },
      "message": "ceph: ensure prealloc_blob is in place when removing xattr\n\nIn __ceph_build_xattrs_blob(), if a ceph inode\u0027s extended attributes\nare marked dirty, all attributes recorded in its rb_tree index are\nformatted into a \"blob\" buffer.  The target buffer is recorded in\nceph_inode-\u003ei_xattrs.prealloc_blob, and it is expected to exist and\nbe of sufficient size to hold the attributes.\n\nThe extended attributes are marked dirty in two cases: when a new\nattribute is added to the inode; or when one is removed.  In the\nformer case work is done to ensure the prealloc_blob buffer is\nproperly set up, but in the latter it is not.\n\nChange the logic in ceph_removexattr() so it matches what is\ndone in ceph_setxattr().  Note that this is done in a way that\nkeeps the two blocks of code nearly identical, in anticipation\nof a subsequent patch that encapsulates some of this logic into\none or more helper routines.\n\nSigned-off-by: Alex Elder \u003celder@dreamhost.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "a40dc6cc2e121abcbd1b22583ef5447763df510c",
      "tree": "1c747cfabf33c6c9ad56811fabd22285816fc27a",
      "parents": [
        "46f72b349290d2bd7aecea38f02609d814332df6"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 10 09:12:55 2012 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Jan 12 11:00:40 2012 -0800"
      },
      "message": "ceph: enable/disable dentry complete flags via mount option\n\nEnable/disable use of the dentry dir \u0027complete\u0027 flag via a mount option.\nThis lets the admin control whether ceph uses the dcache to satisfy\nnegative lookups or readdir when it has the entire directory contents in\nits cache.\n\nThis is purely a performance optimization; correctness is guaranteed\nwhether it is enabled or not.\n\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "d46cfba5363a163851dc768f717f34185527a472",
      "tree": "18aaa9ab40b91b618ab206670de7a965f17589d1",
      "parents": [
        "56e925b677c5293e5aac73dac09e93b23259f907"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@dreamhost.com",
        "time": "Wed Jan 04 16:30:15 2012 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Jan 11 16:28:25 2012 -0800"
      },
      "message": "ceph: always initialize the dentry in open_root_dentry()\n\nWhen open_root_dentry() gets a dentry via d_obtain_alias() it does\nnot get initialized.  If the dentry obtained came from the cache,\nthis is OK.  But if not, the result is an improperly initialized\ndentry.\n\nTo fix this, call ceph_init_dentry() regardless of which path\nproduced the dentry.  That function returns immediately for a dentry\nthat is already initialized, it is safe to use either way.\n\n(Credit to Sage, who suggested this fix.)\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "2ff179e650e95c2b21841b21dc46dc2edefd04cd",
      "tree": "9b15ba73039053111d73da96227e1589b3f11ff2",
      "parents": [
        "ee6b1baf67591b6d7ce1a6a07544343433d5ec9e"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 03 10:09:07 2012 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 10 08:57:02 2012 -0800"
      },
      "message": "ceph: avoid iput() while holding spinlock in ceph_dir_fsync\n\nceph_mdsc_put_request() can call iput(), which can sleep.  Don\u0027t do that.\n\nFixes: #1812\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "ee6b1baf67591b6d7ce1a6a07544343433d5ec9e",
      "tree": "8aac5a6a2172d84d4188fe97bf3fe84aa558dc75",
      "parents": [
        "b8cd952b51034ad9f20ca147507ee68dc641c98c"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 03 08:20:40 2012 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 10 08:57:00 2012 -0800"
      },
      "message": "ceph: avoid useless dget/dput in encode_fh\n\nNothing we do here sleeps, so just do it under d_lock and avoid the dget/\ndput entirely.\n\nReported-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "b8cd952b51034ad9f20ca147507ee68dc641c98c",
      "tree": "78fe2114ab9859eecc780206cc5d423b675b7e09",
      "parents": [
        "e11b05d31f21f0ea39ea288af667887cd6c21c80"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Tue Dec 13 09:56:30 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 10 08:56:59 2012 -0800"
      },
      "message": "ceph: dereference pointer after checking for NULL\n\nmoved dereference after BUG_ON\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\n"
    },
    {
      "commit": "3d8eb7a94e8f25a33362f708974ac7daae9e84f8",
      "tree": "5392b81331ea8733ac25e7a390ae64dbcd3b382a",
      "parents": [
        "186482560f660b8dbf77ee43aa6489cb45d342cd"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Nov 11 09:48:53 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jan 10 08:56:56 2012 -0800"
      },
      "message": "ceph: remove unnecessary d_fsdata conditional checks\n\nWe now set d_fsdata unconditionally on all dentries prior to setting up\nthe d_ops, so all of these checks are unnecessary.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "3c5184ef1216dd476c9c67f22a199d90ac4d5892",
      "tree": "f6bd6d77ee9d1260892c8e8589497eaa2f5efbab",
      "parents": [
        "94bf608a18fa4421315275a81c5489734599297a"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 09 16:34:32 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jan 09 16:36:12 2012 -0500"
      },
      "message": "ceph: d_alloc_root() may fail\n\n... and ceph_init_dentry(NULL) will oops\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "34c80b1d93e6e20ca9dea0baf583a5b5510d92d4",
      "tree": "7dcbf0a4e09464247e6992c8f44fcc872867bd3a",
      "parents": [
        "a6322de67b58a00e3a783ad9c87c2a11b2d67b47"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Dec 08 21:32:45 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Jan 06 23:19:54 2012 -0500"
      },
      "message": "vfs: switch -\u003eshow_options() to struct dentry *\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "5706b27deae29ceee26d0c20112f087a9b841575",
      "tree": "8cd83edcaa711709e5671bd35376f3a9f67484f3",
      "parents": [
        "138d570de290ee7dbb18ef75d4f5735340352c56"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 04:52:22 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:55:16 2012 -0500"
      },
      "message": "ceph: propagate umode_t\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "dba19c6064766730dd64757a010ec3aec503ecdb",
      "tree": "2071835ccfcb169b6219be7d5a4692fcfdcbd2c5",
      "parents": [
        "1b9d5ff7644ddf2723c9205f4726c95ec01bf033"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Jul 25 20:49:29 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:55:12 2012 -0500"
      },
      "message": "get rid of open-coded S_ISREG(), etc.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "1a67aafb5f72a436ca044293309fa7e6351d6a35",
      "tree": "d9e58600148de9d41b478cf815773b746647d15b",
      "parents": [
        "4acdaf27ebe2034c342f3be57ef49aed1ad885ef"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 01:52:52 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:54 2012 -0500"
      },
      "message": "switch -\u003emknod() to umode_t\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "4acdaf27ebe2034c342f3be57ef49aed1ad885ef",
      "tree": "d89a876ee19cd88609a587f8aa6c464a52ee6d98",
      "parents": [
        "18bb1db3e7607e4a997d50991a6f9fa5b0f8722c"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 01:42:34 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:53 2012 -0500"
      },
      "message": "switch -\u003ecreate() to umode_t\n\nvfs_create() ignores everything outside of 16bit subset of its\nmode argument; switching it to umode_t is obviously equivalent\nand it\u0027s the only caller of the method\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "18bb1db3e7607e4a997d50991a6f9fa5b0f8722c",
      "tree": "4ee4e584bc9a67f3ec14ce159d2d7d4a27e68d4a",
      "parents": [
        "8208a22bb8bd3c52ef634b4ff194f14892ab1713"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jul 26 01:41:39 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:53 2012 -0500"
      },
      "message": "switch vfs_mkdir() and -\u003emkdir() to umode_t\n\nvfs_mkdir() gets int, but immediately drops everything that might not\nfit into umode_t and that\u0027s the only caller of -\u003emkdir()...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "6b520e0565422966cdf1c3759bd73df77b0f248c",
      "tree": "f63a26afa7342eb59b125271b16e30a219b59094",
      "parents": [
        "2a79f17e4a641a2f463cb512cb0ec349844a147b"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Dec 12 15:51:45 2011 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:52:40 2012 -0500"
      },
      "message": "vfs: fix the stupidity with i_dentry in inode destructors\n\nSeeing that just about every destructor got that INIT_LIST_HEAD() copied into\nit, there is no point whatsoever keeping this INIT_LIST_HEAD in inode_init_once();\nthe cost of taking it into inode_init_always() will be negligible for pipes\nand sockets and negative for everything else.  Not to mention the removal of\nboilerplate code from -\u003edestroy_inode() instances...\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "a4d46363ce96c8fd7534c6f79051c78b52464132",
      "tree": "8d41ef517efe09f7783204fffe56ec2102d70f90",
      "parents": [
        "9d5a09e659f8414dd3713e2acbfaf8a9e9794aa1"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Dec 29 08:05:14 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Dec 29 08:05:14 2011 -0800"
      },
      "message": "ceph: disable use of dcache for readdir etc.\n\nCeph attempts to use the dcache to satisfy negative lookups and readdir\nwhen the entire directory contents are in cache.  Disable this behavior\nuntil lingering bugs in this code are shaken out; we\u0027ll re-enable these\nhooks once things are fully stable.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "9d5a09e659f8414dd3713e2acbfaf8a9e9794aa1",
      "tree": "abba92c0a15f98cd4386cd86f081d1e2c89045ac",
      "parents": [
        "6a82c47aa84ab22cb5969a44105cca5358879d21"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Tue Dec 13 09:57:44 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Dec 13 11:59:53 2011 -0800"
      },
      "message": "ceph: add missing spin_unlock at ceph_mdsc_build_path()\n\none of the paths was missing spin_unlock\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\n"
    },
    {
      "commit": "6a82c47aa84ab22cb5969a44105cca5358879d21",
      "tree": "60dea7b341119350274ba9c50cacddc2b357fd52",
      "parents": [
        "f1932fc1a6d899c754676b1dd8b17de93b052d43"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Dec 13 09:19:26 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Dec 13 09:19:26 2011 -0800"
      },
      "message": "ceph: fix SEEK_CUR, SEEK_SET regression\n\nCommit 06222e491e663dac939f04b125c9dc52126a75c4 got the if wrong so that\nit always evaluates as true.  This is semantically harmless, but makes\nSEEK_CUR and SEEK_SET needlessly query the server.\n\nRewrite the if to explicitly enumerate the cases we DO need a valid i_size\nto make this code less fragile.\n\nReported-by: Roel Kluin \u003croel.kluin@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "be655596b3de5873f994ddbe205751a5ffb4de39",
      "tree": "cf6e53c6344f87a47ac68d6a6ff4d7dac6e5c25e",
      "parents": [
        "51703306b3b9ea7c05728040998521e47358147b"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Nov 30 09:47:09 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Dec 07 10:46:44 2011 -0800"
      },
      "message": "ceph: use i_ceph_lock instead of i_lock\n\nWe have been using i_lock to protect all kinds of data structures in the\nceph_inode_info struct, including lists of inodes that we need to iterate\nover while avoiding races with inode destruction.  That requires grabbing\na reference to the inode with the list lock protected, but igrab() now\ntakes i_lock to check the inode flags.\n\nChanging the list lock ordering would be a painful process.\n\nHowever, using a ceph-specific i_ceph_lock in the ceph inode instead of\ni_lock is a simple mechanical change and avoids the ordering constraints\nimposed by igrab().\n\nReported-by: Amon Ott \u003ca.ott@m-privacy.de\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "2151937d7ce491bfbe269a1ae742c6686904474c",
      "tree": "4aa64db4b4decc92cd8ee7c634a6d71546ab69f9",
      "parents": [
        "224736d9113ab4a7cf3f05c05377492bd99b4b02"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Dec 01 08:06:52 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Dec 02 09:27:54 2011 -0800"
      },
      "message": "ceph: fix rasize reporting by ceph_show_options\n\nFix typo.\n\nReported-by: mowang da \u003cwhooya.xxl@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "774ac21da76f5c3018428725074e27a3fd40b128",
      "tree": "3c22879278514494e467e651c918994cd6f359d2",
      "parents": [
        "15a2015fbc692e1c97d7ce12d96e077f5ae7ea6d"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Nov 11 09:48:08 2011 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Fri Nov 11 09:50:17 2011 -0800"
      },
      "message": "ceph: initialize root dentry\n\nSet up d_fsdata on the root dentry.  This fixes a NULL pointer dereference\nin ceph_d_prune on umount.  It also means we can eventually strip out all\nof the conditional checks on d_fsdata because it is now set unconditionally\n(prior to setting up the d_ops).\n\nFix the ceph_d_prune debug print while we\u0027re here.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "15a2015fbc692e1c97d7ce12d96e077f5ae7ea6d",
      "tree": "f902cc2b7cab475c8b220147bb786dc3a772888e",
      "parents": [
        "0c6d4b4e22a513f8563a2e00c5ab08e9f8796272"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Nov 05 22:06:31 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Nov 05 22:06:31 2011 -0700"
      },
      "message": "ceph: fix iput race when queueing inode work\n\nIf we queue a work item that calls iput(), make sure we ihold() before\nattempting to queue work. Otherwise our queued work might miraculously run\nbefore we notice the queue_work() succeeded and call ihold(), allowing the\ninode to be destroyed.\n\nThat is, instead of\n\n\tif (queue_work(...))\n\t\tihold();\n\nwe need to do\n\n\tihold();\n\tif (!queue_work(...))\n\t\tiput();\n\nReported-by: Amon Ott \u003ca.ott@m-privacy.de\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "0c6d4b4e22a513f8563a2e00c5ab08e9f8796272",
      "tree": "7c9401773dad6f6d64fea935b4623bab4e83c046",
      "parents": [
        "7fd7d101ff50af55d6d69f4705facc00c324024e"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Fri Sep 23 11:53:30 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Nov 05 21:10:12 2011 -0700"
      },
      "message": "ceph/super.c: quiet sparse noise\n\nQuiet the sparse noise:\n\nwarning: symbol \u0027create_fs_client\u0027 was not declared. Should it be static?\nwarning: symbol \u0027destroy_fs_client\u0027 was not declared. Should it be static?\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nceph-devel@vger.kernel.org\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "7fd7d101ff50af55d6d69f4705facc00c324024e",
      "tree": "5314049cb1fc3e27d9962962bcea0194ce971b39",
      "parents": [
        "c6ffe10015f4e6fba8a915318b319c43aed1836f"
      ],
      "author": {
        "name": "H Hartley Sweeten",
        "email": "hartleys@visionengravers.com",
        "time": "Fri Sep 23 13:22:11 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Nov 05 21:10:11 2011 -0700"
      },
      "message": "ceph/mds_client.c: quiet sparse noise\n\nQuiet the following sparse noise:\n\nwarning: symbol \u0027get_nonsnap_parent\u0027 was not declared. Should it be static?\nwarning: symbol \u0027done_closing_sessions\u0027 was not declared. Should it be static?\n\nLocal functions don\u0027t need external visability. Make them static.\n\nSigned-off-by: H Hartley Sweeten \u003chsweeten@visionengravers.com\u003e\nCc: Sage Weil \u003csage@newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "c6ffe10015f4e6fba8a915318b319c43aed1836f",
      "tree": "dd39730aeb6d00713ca27a1bf34b116d31479151",
      "parents": [
        "b58dc4100b9190f2cb437f1f67ffcb9f9acc4923"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Nov 03 09:23:36 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Sat Nov 05 21:10:10 2011 -0700"
      },
      "message": "ceph: use new D_COMPLETE dentry flag\n\nWe used to use a flag on the directory inode to track whether the dcache\ncontents for a directory were a complete cached copy.  Switch to a dentry\nflag CEPH_D_COMPLETE that is safely updated by -\u003ed_prune().\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "b58dc4100b9190f2cb437f1f67ffcb9f9acc4923",
      "tree": "5956065af3d9b126b8ae4a37551837c389f12702",
      "parents": [
        "3f8ddb032afa729d4bad1bf2965d3ec068de6b72"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Mar 15 15:53:40 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Nov 03 09:23:49 2011 -0700"
      },
      "message": "ceph: clear parent D_COMPLETE flag when on dentry prune\n\nWhen the VFS prunes a dentry from the cache, clear the D_COMPLETE flag\non the parent dentry.  Do this for the live and snapshotted namespaces. Do\nnot bother for the .snap dir contents, since we do not cache that.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "bfe8684869601dacfcb2cd69ef8cfd9045f62170",
      "tree": "4e213aaa766b26f43f0f9ec7998a7745239d9377",
      "parents": [
        "6d6b77f163c7eabedbba00ed2abb7d4a570bff76"
      ],
      "author": {
        "name": "Miklos Szeredi",
        "email": "mszeredi@suse.cz",
        "time": "Fri Oct 28 14:13:29 2011 +0200"
      },
      "committer": {
        "name": "Christoph Hellwig",
        "email": "hch@serles.lst.de",
        "time": "Wed Nov 02 12:53:43 2011 +0100"
      },
      "message": "filesystems: add set_nlink()\n\nReplace remaining direct i_nlink updates with a new set_nlink()\nupdater function.\n\nSigned-off-by: Miklos Szeredi \u003cmszeredi@suse.cz\u003e\nTested-by: Toshiyuki Okajima \u003ctoshi.okajima@jp.fujitsu.com\u003e\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "339573406737461cfb17bebabf7ba536a302d841",
      "tree": "9879390219993f759338b8bbfbf92a4ebb836cd8",
      "parents": [
        "3310f7541f0c991b51324a7712db51fb8f912601"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Oct 24 09:05:47 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 25 16:10:17 2011 -0700"
      },
      "message": "libceph: fix double-free of page vector\n\nceph_release_page_vector() kfrees the vector; we shouldn\u0027t do it here too.\n\nReported-by: Jeff Wu \u003ccpwu@tnsoft.com.cn\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "3310f7541f0c991b51324a7712db51fb8f912601",
      "tree": "d9a003be8ae51c41facdb80125e853b7f143e5e6",
      "parents": [
        "38d6453ca39ecce442628a93e1bb46d70d547512"
      ],
      "author": {
        "name": "Amon Ott",
        "email": "a.ott@m-privacy.de",
        "time": "Thu Oct 20 13:04:07 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 25 16:10:17 2011 -0700"
      },
      "message": "ceph: fix 32-bit ino numbers\n\nFix 32-bit ino generation to not always be 1.\n\nSigned-off-by: Amon Ott \u003ca.ott@m-privacy.de\u003e\n"
    },
    {
      "commit": "a35eca958aa1c7d0b5f993db1a3ded45ae16d59b",
      "tree": "4d496b38cdd39d3363aaf23888f1932422ce5682",
      "parents": [
        "83eaea22bdfc9e1cec88f81be5b64f30f6c37e8b"
      ],
      "author": {
        "name": "Greg Farnum",
        "email": "gregory.farnum@dreamhost.com",
        "time": "Thu Aug 25 12:43:06 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 25 16:10:16 2011 -0700"
      },
      "message": "ceph: let the set_layout ioctl set single traits\n\nPreviously we were validating the passed-in stripe unit, object size,\nand stripe count against each other (and not testing most other stuff).\nInstead, make sure that the composed previous layout and new values are valid,\nand only send the new values to the MDS. This lets users change the\npool without setting the whole layout, for instance.\n\nSigned-off-by: Greg Farnum \u003cgregory.farnum@dreamhost.com\u003e\n"
    },
    {
      "commit": "83eaea22bdfc9e1cec88f81be5b64f30f6c37e8b",
      "tree": "f63f415ce4241c12639ef78f4920ed6b99915760",
      "parents": [
        "80db8bea6a0f4fd047eafd8329a44d5a110f462b"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Aug 24 14:07:01 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 25 16:10:16 2011 -0700"
      },
      "message": "Revert \"ceph: don\u0027t truncate dirty pages in invalidate work thread\"\n\nThis reverts commit c9af9fb68e01eb2c2165e1bc45cfeeed510c64e6.\n\nWe need to block and truncate all pages in order to reliably invalidate\nthem.  Otherwise, we could:\n\n - have some uptodate pages in the cache\n - queue an invalidate\n - write(2) locks some pages\n - invalidate_work skips them\n - write(2) only overwrites part of the page\n - page now dirty and uptodate\n -\u003e partial leakage of invalidated data\n\nIt\u0027s not entirely clear why we started skipping locked pages in the first\nplace.  I just ran this through fsx and didn\u0027t see any problems.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "80db8bea6a0f4fd047eafd8329a44d5a110f462b",
      "tree": "17a119ced3e2a40972195cb67e1f48ea56076a6e",
      "parents": [
        "f0ed1b7cef1e801ef470efc501f9c663fe10cebd"
      ],
      "author": {
        "name": "Noah Watkins",
        "email": "noahwatkins@gmail.com",
        "time": "Mon Aug 22 13:49:23 2011 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 25 16:10:16 2011 -0700"
      },
      "message": "ceph: replace leading spaces with tabs\n\nTrivial formatting fix.\n\nSigned-off-by: Noah Watkins \u003cnoahwatkins@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "b61c27636fffbaf1980e675282777b9467254a40",
      "tree": "bd78cfefda4beb7e3de5fe97dd36fed3dbfa91c1",
      "parents": [
        "f6a2f5be07463ef532b9f4e3cb9e42ab9df85832"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Aug 09 15:03:46 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 25 16:10:15 2011 -0700"
      },
      "message": "libceph: don\u0027t complain on msgpool alloc failures\n\nThe pool allocation failures are masked by the pool; there is no need to\nspam the console about them.  (That\u0027s the whole point of having the pool\nin the first place.)\n\nMark msg allocations whose failure is safely handled as such.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "6ab00d465a1c8c02c2216f8220727282f3aa50b5",
      "tree": "b4cc08e1be5ffe0a60d9090d86f7f0d05b1f6e36",
      "parents": [
        "6a8ea4706adb4b4d8f77a8da5f9778b65fbf6f48"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Aug 09 09:41:59 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 25 16:10:15 2011 -0700"
      },
      "message": "libceph: create messenger with client\n\nThis simplifies the init/shutdown paths, and makes client-\u003emsgr available\nduring the rest of the setup process.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "6a8ea4706adb4b4d8f77a8da5f9778b65fbf6f48",
      "tree": "263456e621ba9130f0f9bfec96f48cd597a75f88",
      "parents": [
        "0d66a487c120012f33fbcd6af5cbf0a0cad71557"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Aug 04 15:41:37 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 25 16:10:15 2011 -0700"
      },
      "message": "ceph: document ioctls\n\n...after some prodding by Christoph.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "0d66a487c120012f33fbcd6af5cbf0a0cad71557",
      "tree": "be876b3a9a76e59e08165a661166be8507c25d9a",
      "parents": [
        "83817e35cbd9b36db955a22418c9e30324353587"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Aug 04 08:21:30 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 25 16:10:15 2011 -0700"
      },
      "message": "ceph: implement (optional) max read size\n\nThe \u0027rsize\u0027 mount option limits the maximum size of an individual\nread(ahead) operation that is sent off to an OSD.  This is distinct from\n\u0027rasize\u0027, which controls the size of the readahead window.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "83817e35cbd9b36db955a22418c9e30324353587",
      "tree": "bd2e52d560e74061310e27ef4028a4f2c75c9801",
      "parents": [
        "7c272194e66e91830b90f6202e61c69f8590f1eb"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Thu Aug 04 08:03:44 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 25 16:10:15 2011 -0700"
      },
      "message": "ceph: rename rsize -\u003e rasize\n\nIt controls readahead.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "7c272194e66e91830b90f6202e61c69f8590f1eb",
      "tree": "9a899f357cbf005235fd80ab3b4a240e42498b54",
      "parents": [
        "c3b92c8787367a8bb53d57d9789b558f1295cc96"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Wed Aug 03 09:58:09 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Oct 25 16:10:14 2011 -0700"
      },
      "message": "ceph: make readpages fully async\n\nWhen we get a -\u003ereadpages() aop, submit async reads for all page ranges\nin the provided page list.  Lock the pages immediately, so that VFS/MM\nwill block until the reads complete.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "0d20fbbe82dadc43f50a4ca5346e962de23cf950",
      "tree": "b3d63936aff013d6baa57c2cd9aaa3bade22d91c",
      "parents": [
        "0ec26fd0698285b31248e34bf1abb022c00f23d6",
        "aca420bc51f48b0701963ba3a6234442a0cabebd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 09 15:48:34 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Sep 09 15:48:34 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://ceph.newdream.net/git/ceph-client\n\n* \u0027for-linus\u0027 of git://ceph.newdream.net/git/ceph-client:\n  libceph: fix leak of osd structs during shutdown\n  ceph: fix memory leak\n  ceph: fix encoding of ino only (not relative) paths\n  libceph: fix msgpool\n"
    },
    {
      "commit": "259a187ade45056fd44856654f78aa9e9f0f7c75",
      "tree": "9e402d904c854dc561526b80ad0f8977f42c5fbd",
      "parents": [
        "795858dbd253462a67e14272edeaae73c6074b17"
      ],
      "author": {
        "name": "Noah Watkins",
        "email": "noahwatkins@gmail.com",
        "time": "Mon Aug 22 13:49:41 2011 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Aug 22 13:06:59 2011 -0700"
      },
      "message": "ceph: fix memory leak\n\nkfree does not clean up indirect allocations in\nceph_fs_client and ceph_options (e.g. snapdir_name).\n\nSigned-off-by: Noah Watkins \u003cnoahwatkins@gmail.com\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "795858dbd253462a67e14272edeaae73c6074b17",
      "tree": "a9fb8a08682e6387d7d6c745633a6b7e2aec2679",
      "parents": [
        "5185352c163a72cf969b2fbbfb89801b398896fd"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Aug 15 13:02:37 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Mon Aug 15 13:03:56 2011 -0700"
      },
      "message": "ceph: fix encoding of ino only (not relative) paths\n\nA \u0027path\u0027 consists of a starting ino and relative component.  Encode even\nwhen there is no relative component.  This is primarily needed by the\nNFS reexport code.\n\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "ba5b56cb3e3d2cab73d4fee9a022bb69462a8cd9",
      "tree": "eda7ea059a41ae5d68e2ad5a36a87069187ef22a",
      "parents": [
        "243dd2809a5edd2e0e3e62781083aa44049af37d",
        "d79698da32b317e96216236f265a9b72b78ae568"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 13:38:50 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 13:38:50 2011 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client: (23 commits)\n  ceph: document unlocked d_parent accesses\n  ceph: explicitly reference rename old_dentry parent dir in request\n  ceph: document locking for ceph_set_dentry_offset\n  ceph: avoid d_parent in ceph_dentry_hash; fix ceph_encode_fh() hashing bug\n  ceph: protect d_parent access in ceph_d_revalidate\n  ceph: protect access to d_parent\n  ceph: handle racing calls to ceph_init_dentry\n  ceph: set dir complete frag after adding capability\n  rbd: set blk_queue request sizes to object size\n  ceph: set up readahead size when rsize is not passed\n  rbd: cancel watch request when releasing the device\n  ceph: ignore lease mask\n  ceph: fix ceph_lookup_open intent usage\n  ceph: only link open operations to directory unsafe list if O_CREAT|O_TRUNC\n  ceph: fix bad parent_inode calc in ceph_lookup_open\n  ceph: avoid carrying Fw cap during write into page cache\n  libceph: don\u0027t time out osd requests that haven\u0027t been received\n  ceph: report f_bfree based on kb_avail rather than diffing.\n  ceph: only queue capsnap if caps are dirty\n  ceph: fix snap writeback when racing with writes\n  ...\n"
    },
    {
      "commit": "d79698da32b317e96216236f265a9b72b78ae568",
      "tree": "97f98e83c699794d6a5d979688587fbfdbba2ba7",
      "parents": [
        "41b02e1f9bb87b07d792b64aaeb7af3d00d69cd2"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:31:26 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:31:26 2011 -0700"
      },
      "message": "ceph: document unlocked d_parent accesses\n\nFor the most part we don\u0027t care about racing with rename when directing\nMDS requests; either the old or new parent is fine.  Document that, and\ndo some minor cleanup.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "41b02e1f9bb87b07d792b64aaeb7af3d00d69cd2",
      "tree": "87c9524ff96cbff2ff29d659cbefd516b553ca1f",
      "parents": [
        "4f1772645296a230e04f5c53e79cfb6f841ce634"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:31:14 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:31:14 2011 -0700"
      },
      "message": "ceph: explicitly reference rename old_dentry parent dir in request\n\nWe carry a pin on the parent directory for the rename source and dest\ndentries.  For the source it\u0027s r_locked_dir; we need to explicitly\nreference the old_dentry parent as well, since the dentry\u0027s d_parent may\nchange between when the request was created and pinned and when it is\nfreed.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "4f1772645296a230e04f5c53e79cfb6f841ce634",
      "tree": "b46dab3e88acef56a074c5d519a851dec5c1ade1",
      "parents": [
        "e5f86dc377e7ff2b4195831153a85a3e76fefff2"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:31:08 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:31:08 2011 -0700"
      },
      "message": "ceph: document locking for ceph_set_dentry_offset\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "e5f86dc377e7ff2b4195831153a85a3e76fefff2",
      "tree": "f15c11fc2c9b08e64555bbb601e582dc8f7325bd",
      "parents": [
        "bf1c6aca96c9d2f117dc7e590c2bc2304e7febe1"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:30:55 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:30:55 2011 -0700"
      },
      "message": "ceph: avoid d_parent in ceph_dentry_hash; fix ceph_encode_fh() hashing bug\n\nHave caller pass in a safely-obtained reference to the parent directory\nfor calculating a dentry\u0027s hash valud.\n\nWhile we\u0027re here, simpify the flow through ceph_encode_fh() so that there\nis a single exit point and cleanup.\n\nAlso fix a bug with the dentry hash calculation: calculate the hash for the\ndentry we were given, not its parent.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "bf1c6aca96c9d2f117dc7e590c2bc2304e7febe1",
      "tree": "1ecb6f35e572ba1e498390d1b09faf3c309bbaee",
      "parents": [
        "5f21c96dd5c615341963036ae8f5e4f5227a818d"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:30:43 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:30:43 2011 -0700"
      },
      "message": "ceph: protect d_parent access in ceph_d_revalidate\n\nProtect d_parent with d_lock.  Carry a reference.  Simplify the flow so\nthat there is a single exit point and cleanup.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "5f21c96dd5c615341963036ae8f5e4f5227a818d",
      "tree": "898c5781623b68527427d201e3f975827d08935c",
      "parents": [
        "48d0cbd1242aac969560ef8b90f26ee3b09a6a5c"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:30:29 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:30:29 2011 -0700"
      },
      "message": "ceph: protect access to d_parent\n\nd_parent is protected by d_lock: use it when looking up a dentry\u0027s parent\ndirectory inode.  Also take a reference and drop it in the caller to avoid\na use-after-free.\n\nReported-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "48d0cbd1242aac969560ef8b90f26ee3b09a6a5c",
      "tree": "228a26f8ee7d555d67c6a00e5346f3b558a2e48c",
      "parents": [
        "dfabbed6fdd509dc2beb89c954bc36014a1bc7cb"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:30:15 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:30:15 2011 -0700"
      },
      "message": "ceph: handle racing calls to ceph_init_dentry\n\nThe -\u003elookup() and prepopulate_readdir() callers are working with unhashed\ndentries, so we don\u0027t have to worry.  The export.c callers, though, need\nto initialize something they got back from d_obtain_alias() and are\npotentially racing with other callers.  Make sure we don\u0027t return unless\nthe dentry is properly initialized (by us or someone else).\n\nReported-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "dfabbed6fdd509dc2beb89c954bc36014a1bc7cb",
      "tree": "34186b6bba311438cccbd572f4f93d8165dce89b",
      "parents": [
        "029bcbd8b076fd19787b8c73e58dd0a6f2c0caf1"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:30:02 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:30:02 2011 -0700"
      },
      "message": "ceph: set dir complete frag after adding capability\n\nCurretly ceph_add_cap clears the complete bit if we are newly issued the\nFILE_SHARED cap, which is normally the case for a newly issue cap on a new\ndirectory.  That means we clear the just-set bit.  Move the check that sets\nthe flag to after the cap is added/updated.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "e9852227431a0ed6ceda064f33e4218757acab6c",
      "tree": "e48c6a6ffb96780d562943dfc45c78a0a7edc0cd",
      "parents": [
        "79e3057c4c9d32b88e6745fd220d91b0a8b2030b"
      ],
      "author": {
        "name": "Yehuda Sadeh",
        "email": "yehuda@hq.newdream.net",
        "time": "Fri Jul 22 11:12:28 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:29:14 2011 -0700"
      },
      "message": "ceph: set up readahead size when rsize is not passed\n\nThis should improve the default read performance, as without it\nreadahead is practically disabled.\n\nSigned-off-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\n"
    },
    {
      "commit": "2f90b852e3ae73889d7f6de6ecf429b9b6a6b103",
      "tree": "584e53ef3a6919e68ee0d8804da8f3d63838a3fc",
      "parents": [
        "468640e32c7f6bfdaaa011095cc388786755d159"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:28:25 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:28:25 2011 -0700"
      },
      "message": "ceph: ignore lease mask\n\nThe lease mask is no longer used (and it changed a while back).  Instead,\nuse a non-zero duration to indicate that there is a lease being issued.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "468640e32c7f6bfdaaa011095cc388786755d159",
      "tree": "beb059d860c2ca39cda9ca3aa45603025655e1a6",
      "parents": [
        "9bae113a085b790de384bf86f09e15b42a65a985"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:28:11 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:28:11 2011 -0700"
      },
      "message": "ceph: fix ceph_lookup_open intent usage\n\nWe weren\u0027t properly calling lookup_instantiate_filp when setting up the\nlookup intent, which could lead to file leakage on errors.  So:\n\n - use separate helper for the hidden snapdir translation, immediately\n   following the mds request\n - use ceph_finish_lookup for the final dentry/return value dance in the\n   exit path\n - lookup_instantiate_filp on success\n\nReported-by: Al Viro \u003cviro@ZenIV.linux.org.uk\u003e\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "9bae113a085b790de384bf86f09e15b42a65a985",
      "tree": "44d42141bf2d61a3098cedb381ec775cded8ac89",
      "parents": [
        "acda76578813ef893004ecad0e5ad2bb6039e5f7"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:27:59 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:27:59 2011 -0700"
      },
      "message": "ceph: only link open operations to directory unsafe list if O_CREAT|O_TRUNC\n\nWe only need to put these on the directory unsafe list if they have\nside effects that fsync(2) should flush out.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "acda76578813ef893004ecad0e5ad2bb6039e5f7",
      "tree": "d77d818eb8e783437e25d7590dd9864001a7e1b3",
      "parents": [
        "d8de9ab63a57326d21154c13c365f949f53ce8e1"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:27:48 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:27:48 2011 -0700"
      },
      "message": "ceph: fix bad parent_inode calc in ceph_lookup_open\n\nWe were always getting NULL here because the intent file f_dentry is always\nNULL at this point, which means we were always passing NULL to\nceph_mdsc_do_request.  In reality, this was fine, since this isn\u0027t\ncurrently ever a write operation that needs to get strung on the dir\u0027s\nunsafe list.\n\nUse the dir explicitly, and only pass it if this open has side-effects that\na dir fsync should flush.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "d8de9ab63a57326d21154c13c365f949f53ce8e1",
      "tree": "283aac6bf2cc91a772d9cc04c97f46f60267e4c5",
      "parents": [
        "4cf9d544631c92809cb94ea680c71df56e9437aa"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:27:34 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:27:34 2011 -0700"
      },
      "message": "ceph: avoid carrying Fw cap during write into page cache\n\nThe generic_file_aio_write call may block on balance_dirty_pages while we\nflush data to the OSDs.  If we hold a reference to the FILE_WR cap during\nthat interval revocation by the MDS (e.g., to do a stat(2)) may be very\nslow.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "8f04d42276048b3baff5a5d8fa769f433c62b63e",
      "tree": "dd9cdb99079d193ceab74f9b2f4b11d4b2fb7508",
      "parents": [
        "e77dc3e9c061e50c67e2e1a604d0a370f40db298"
      ],
      "author": {
        "name": "Greg Farnum",
        "email": "gregory.farnum@dreamhost.com",
        "time": "Tue Jul 26 11:26:54 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:27:06 2011 -0700"
      },
      "message": "ceph: report f_bfree based on kb_avail rather than diffing.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Greg Farnum \u003cgregory.farnum@dreamhost.com\u003e\n"
    },
    {
      "commit": "e77dc3e9c061e50c67e2e1a604d0a370f40db298",
      "tree": "8ed497994e3e1b9949c3d6907ed901ff502b1f5e",
      "parents": [
        "af0ed569d7019f1b49e9e51e77b47092e656b00e"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:26:41 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:26:41 2011 -0700"
      },
      "message": "ceph: only queue capsnap if caps are dirty\n\nWe used to go into this branch if i_wrbuffer_ref_head was non-zero.  This\nwas an ancient check from before we were careful about dealing with all\nkinds of caps (and not just dirty pages).  It is cleaner to only queue a\ncapsnap if there is an actual dirty cap.  If we are racing with...\nsomething...we will end up here with ci-\u003ei_wrbuffer_refs but no dirty\ncaps.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "af0ed569d7019f1b49e9e51e77b47092e656b00e",
      "tree": "a8b0ad426b22548eec9e2d350c131426e13af989",
      "parents": [
        "9cfa1098dcfb34f71c5f3b7bcdbbb435a0cecab2"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:26:31 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:26:31 2011 -0700"
      },
      "message": "ceph: fix snap writeback when racing with writes\n\nThere are two problems that come up when we try to queue a capsnap while a\nwrite is in progress:\n\n - The FILE_WR cap is held, but not yet dirty, so we may queue a capsnap\n   with dirty \u003d\u003d 0.  That will crash later in __ceph_flush_snaps().  Or\n   on the FILE_WR cap if a write is in progress.\n - We may not have i_head_snapc set, which causes problems pretty quickly.\n   Look to the snaprealm in this case.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "9cfa1098dcfb34f71c5f3b7bcdbbb435a0cecab2",
      "tree": "cecff467984dd0d5e8fef2014e296b682c7a0267",
      "parents": [
        "4918b6d140c4822201ebbe2f070875332aff337b"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:26:18 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:26:18 2011 -0700"
      },
      "message": "ceph: use flag bit for at_end readdir flag\n\nThis saves us a word of memory per file.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "4918b6d140c4822201ebbe2f070875332aff337b",
      "tree": "0327a0a68acd2f8209893b4770ba3c9d9264041c",
      "parents": [
        "252c6728de604d6a897d85e212996811d5c8c46c"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:26:07 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:26:07 2011 -0700"
      },
      "message": "ceph: add F_SYNC file flag to force sync (non-O_DIRECT) io\n\nThis allows us to force IO through the sync path which you normally only\nget when multiple clients are reading/writing to the same file or by\nmounting with -o sync.  Among other things, this lets test programs verify\ncorrectness with a single mount.\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "252c6728de604d6a897d85e212996811d5c8c46c",
      "tree": "2b93fa141ca38789e00610dfa641dc7fefc3be72",
      "parents": [
        "02f8c6aee8df3cdc935e9bdd4f2d020306035dbe"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:25:27 2011 -0700"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@newdream.net",
        "time": "Tue Jul 26 11:25:27 2011 -0700"
      },
      "message": "ceph: add flags field to file_info\n\nReviewed-by: Yehuda Sadeh \u003cyehuda@hq.newdream.net\u003e\nSigned-off-by: Sage Weil \u003csage@newdream.net\u003e\n"
    },
    {
      "commit": "02c24a82187d5a628c68edfe71ae60dc135cd178",
      "tree": "c8dbaba4d82e2b20ed4335910a564a1f7d90fcf6",
      "parents": [
        "22735068d53c7115e384bc88dea95b17e76a6839"
      ],
      "author": {
        "name": "Josef Bacik",
        "email": "josef@redhat.com",
        "time": "Sat Jul 16 20:44:56 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jul 20 20:47:59 2011 -0400"
      },
      "message": "fs: push i_mutex and filemap_write_and_wait down into -\u003efsync() handlers\n\nBtrfs needs to be able to control how filemap_write_and_wait_range() is called\nin fsync to make it less of a painful operation, so push down taking i_mutex and\nthe calling of filemap_write_and_wait() down into the -\u003efsync() handlers.  Some\nfile systems can drop taking the i_mutex altogether it seems, like ext3 and\nocfs2.  For correctness sake I just pushed everything down in all cases to make\nsure that we keep the current behavior the same for everybody, and then each\nindividual fs maintainer can make up their mind about what to do from there.\nThanks,\n\nAcked-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Josef Bacik \u003cjosef@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    }
  ],
  "next": "06222e491e663dac939f04b125c9dc52126a75c4"
}
