)]}'
{
  "log": [
    {
      "commit": "1cf0209c431fa7790253c532039d53b0773193aa",
      "tree": "24310eaaf4c9583988d9098f6c85a4a34970b5b9",
      "parents": [
        "de1a2262b006220dae2561a299a6ea128c46f4fe",
        "83ca14fdd35821554058e5fd4fa7b118ee504a33"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 28 17:43:09 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 28 17:43:09 2013 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client\n\nPull Ceph updates from Sage Weil:\n \"A few groups of patches here.  Alex has been hard at work improving\n  the RBD code, layout groundwork for understanding the new formats and\n  doing layering.  Most of the infrastructure is now in place for the\n  final bits that will come with the next window.\n\n  There are a few changes to the data layout.  Jim Schutt\u0027s patch fixes\n  some non-ideal CRUSH behavior, and a set of patches from me updates\n  the client to speak a newer version of the protocol and implement an\n  improved hashing strategy across storage nodes (when the server side\n  supports it too).\n\n  A pair of patches from Sam Lang fix the atomicity of open+create\n  operations.  Several patches from Yan, Zheng fix various mds/client\n  issues that turned up during multi-mds torture tests.\n\n  A final set of patches expose file layouts via virtual xattrs, and\n  allow the policies to be set on directories via xattrs as well\n  (avoiding the awkward ioctl interface and providing a consistent\n  interface for both kernel mount and ceph-fuse users).\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client: (143 commits)\n  libceph: add support for HASHPSPOOL pool flag\n  libceph: update osd request/reply encoding\n  libceph: calculate placement based on the internal data types\n  ceph: update support for PGID64, PGPOOL3, OSDENC protocol features\n  ceph: update \"ceph_features.h\"\n  libceph: decode into cpu-native ceph_pg type\n  libceph: rename ceph_pg -\u003e ceph_pg_v1\n  rbd: pass length, not op for osd completions\n  rbd: move rbd_osd_trivial_callback()\n  libceph: use a do..while loop in con_work()\n  libceph: use a flag to indicate a fault has occurred\n  libceph: separate non-locked fault handling\n  libceph: encapsulate connection backoff\n  libceph: eliminate sparse warnings\n  ceph: eliminate sparse warnings in fs code\n  rbd: eliminate sparse warnings\n  libceph: define connection flag helpers\n  rbd: normalize dout() calls\n  rbd: barriers are hard\n  rbd: ignore zero-length requests\n  ...\n"
    },
    {
      "commit": "f042fea0da78d9dc077a9c736b33b60eb8f35195",
      "tree": "fce1c64a68a8ccd54b36e4d89d3b946a995e9fd2",
      "parents": [
        "ee89f81252179dcbf6cd65bd48299f5e52292d88",
        "b7a1da695f3fb33d093e6de20b1dfc238e3c9587"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 28 13:16:07 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 28 13:16:07 2013 -0800"
      },
      "message": "Merge branch \u0027for-3.9/drivers\u0027 of git://git.kernel.dk/linux-block\n\nPull block driver bits from Jens Axboe:\n \"After the block IO core bits are in, please grab the driver updates\n  from below as well.  It contains:\n\n   - Fix ancient regression in dac960.  Nobody must be using that\n     anymore...\n\n   - Some good fixes from Guo Ghao for loop, fixing both potential\n     oopses and deadlocks.\n\n   - Improve mtip32xx for NUMA systems, by being a bit more clever in\n     distributing work.\n\n   - Add IBM RamSan 70/80 driver.  A second round of fixes for that is\n     pending, that will come in through for-linus during the 3.9 cycle\n     as per usual.\n\n   - A few xen-blk{back,front} fixes from Konrad and Roger.\n\n   - Other minor fixes and improvements.\"\n\n* \u0027for-3.9/drivers\u0027 of git://git.kernel.dk/linux-block:\n  loopdev: ignore negative offset when calculate loop device size\n  loopdev: remove an user triggerable oops\n  loopdev: move common code into loop_figure_size()\n  loopdev: update block device size in loop_set_status()\n  loopdev: fix a deadlock\n  xen-blkback: use balloon pages for persistent grants\n  xen-blkfront: drop the use of llist_for_each_entry_safe\n  xen/blkback: Don\u0027t trust the handle from the frontend.\n  xen-blkback: do not leak mode property\n  block: IBM RamSan 70/80 driver fixes\n  rsxx: add slab.h include to dma.c\n  drivers/block/mtip32xx: add missing GENERIC_HARDIRQS dependency\n  block: remove new __devinit/exit annotations on ramsam driver\n  block: IBM RamSan 70/80 device driver\n  drivers/block/mtip32xx/mtip32xx.c:1726:5: sparse: symbol \u0027mtip_send_trim\u0027 was not declared. Should it be static?\n  drivers/block/mtip32xx/mtip32xx.c:4029:1: sparse: symbol \u0027mtip_workq_sdbf0\u0027 was not declared. Should it be static?\n  dac960: return success instead of -ENOTTY\n  mtip32xx: add trim support\n  mtip32xx: Add workqueue and NUMA support\n  block: delete super ancient PC-XT driver for 1980\u0027s hardware\n"
    },
    {
      "commit": "ee89f81252179dcbf6cd65bd48299f5e52292d88",
      "tree": "805846cd12821f84cfe619d44c9e3e36e0b0f9e6",
      "parents": [
        "21f3b24da9328415792efc780f50b9f434c12465",
        "de33127d8d3f1d570aad8c2223cd81b206636bc1"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 28 12:52:24 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 28 12:52:24 2013 -0800"
      },
      "message": "Merge branch \u0027for-3.9/core\u0027 of git://git.kernel.dk/linux-block\n\nPull block IO core bits from Jens Axboe:\n \"Below are the core block IO bits for 3.9.  It was delayed a few days\n  since my workstation kept crashing every 2-8h after pulling it into\n  current -git, but turns out it is a bug in the new pstate code (divide\n  by zero, will report separately).  In any case, it contains:\n\n   - The big cfq/blkcg update from Tejun and and Vivek.\n\n   - Additional block and writeback tracepoints from Tejun.\n\n   - Improvement of the should sort (based on queues) logic in the plug\n     flushing.\n\n   - _io() variants of the wait_for_completion() interface, using\n     io_schedule() instead of schedule() to contribute to io wait\n     properly.\n\n   - Various little fixes.\n\n  You\u0027ll get two trivial merge conflicts, which should be easy enough to\n  fix up\"\n\nFix up the trivial conflicts due to hlist traversal cleanups (commit\nb67bfe0d42ca: \"hlist: drop the node parameter from iterators\").\n\n* \u0027for-3.9/core\u0027 of git://git.kernel.dk/linux-block: (39 commits)\n  block: remove redundant check to bd_openers()\n  block: use i_size_write() in bd_set_size()\n  cfq: fix lock imbalance with failed allocations\n  drivers/block/swim3.c: fix null pointer dereference\n  block: don\u0027t select PERCPU_RWSEM\n  block: account iowait time when waiting for completion of IO request\n  sched: add wait_for_completion_io[_timeout]\n  writeback: add more tracepoints\n  block: add block_{touch|dirty}_buffer tracepoint\n  buffer: make touch_buffer() an exported function\n  block: add @req to bio_{front|back}_merge tracepoints\n  block: add missing block_bio_complete() tracepoint\n  block: Remove should_sort judgement when flush blk_plug\n  block,elevator: use new hashtable implementation\n  cfq-iosched: add hierarchical cfq_group statistics\n  cfq-iosched: collect stats from dead cfqgs\n  cfq-iosched: separate out cfqg_stats_reset() from cfq_pd_reset_stats()\n  blkcg: make blkcg_print_blkgs() grab q locks instead of blkcg lock\n  block: RCU free request_queue\n  blkcg: implement blkg_[rw]stat_recursive_sum() and blkg_[rw]stat_merge()\n  ...\n"
    },
    {
      "commit": "398eb08555b24049e0362fee92920982b283fd96",
      "tree": "8854f4c74114fd24ae3ea02303521fd02d6ebaf2",
      "parents": [
        "5e4b269bcd178ac9b066a69f17c253d2f3f6388a"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed Feb 27 17:05:28 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:22 2013 -0800"
      },
      "message": "nbd: fix sparse warning\n\nI just fixed this in \"drivers/block/rbd.c\" and I noticed that\n\"drivers/block/nbd.c\" has the same problem.  Fix a warning issued by\nsparse by adding some lockdep annotations to indicate the queue lock gets\ndropped (because it\u0027s held when do_nbd_request() is called) and\nre-acquired within the function.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nCc: Paul Clements \u003cpaul.clements@steeleye.com\u003e\nCc: Paul Clements \u003cpaul.clements@us.sios.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a83e814b5bb948850e903585d18b6298b7093cb2",
      "tree": "3dcb99f6b6c94df5fd32a57a12606416c32f442a",
      "parents": [
        "3a2d63f87989e01437ba994df5f297528c353d7d"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Feb 27 17:05:26 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:22 2013 -0800"
      },
      "message": "nbd: show read-only state in sysfs\n\nPass the read-only flag to set_device_ro, so that it will be visible to\nthe block layer and in sysfs.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\nCc: Paul Clements \u003cPaul.Clements@steeleye.com\u003e\nCc: Alex Bligh \u003calex@alex.org.uk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "3a2d63f87989e01437ba994df5f297528c353d7d",
      "tree": "1630fdaef77fab8baedb15f0318c680654c78068",
      "parents": [
        "75f187aba5e7a3eea259041f85099029774a4c5b"
      ],
      "author": {
        "name": "Paolo Bonzini",
        "email": "pbonzini@redhat.com",
        "time": "Wed Feb 27 17:05:25 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:22 2013 -0800"
      },
      "message": "nbd: fsync and kill block device on shutdown\n\nThere are two problems with shutdown in the NBD driver.\n\n1: Receiving the NBD_DISCONNECT ioctl does not sync the filesystem.\n\n   This patch adds the sync operation into __nbd_ioctl()\u0027s\n   NBD_DISCONNECT handler.  This is useful because BLKFLSBUF is restricted\n   to processes that have CAP_SYS_ADMIN, and the NBD client may not\n   possess it (fsync of the block device does not sync the filesystem,\n   either).\n\n2: Once we clear the socket we have no guarantee that later reads will\n   come from the same backing storage.\n\n   The patch adds calls to kill_bdev() in __nbd_ioctl()\u0027s socket\n   clearing code so the page cache is cleaned, lest reads that hit on the\n   page cache will return stale data from the previously-accessible disk.\n\nExample:\n\n    # qemu-nbd -r -c/dev/nbd0 /dev/sr0\n    # file -s /dev/nbd0\n    /dev/stdin: # UDF filesystem data (version 1.5) etc.\n    # qemu-nbd -d /dev/nbd0\n    # qemu-nbd -r -c/dev/nbd0 /dev/sda\n    # file -s /dev/nbd0\n    /dev/stdin: # UDF filesystem data (version 1.5) etc.\n\nWhile /dev/sda has:\n\n    # file -s /dev/sda\n    /dev/sda: x86 boot sector; etc.\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\nAcked-by: Paul Clements \u003cPaul.Clements@steeleye.com\u003e\nCc: Alex Bligh \u003calex@alex.org.uk\u003e\nCc: \u003cstable@vger.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": "75f187aba5e7a3eea259041f85099029774a4c5b",
      "tree": "34a26995689413e123463300447f2e0fb7b05673",
      "parents": [
        "cd89f46b52cd2354d3d322ea7eab193b86ba03c6"
      ],
      "author": {
        "name": "Alex Bligh",
        "email": "alex@alex.org.uk",
        "time": "Wed Feb 27 17:05:23 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:22 2013 -0800"
      },
      "message": "nbd: support FLUSH requests\n\nCurrently, the NBD device does not accept flush requests from the Linux\nblock layer.  If the NBD server opened the target with neither O_SYNC nor\nO_DSYNC, however, the device will be effectively backed by a writeback\ncache.  Without issuing flushes properly, operation of the NBD device will\nnot be safe against power losses.\n\nThe NBD protocol has support for both a cache flush command and a FUA\ncommand flag; the server will also pass a flag to note its support for\nthese features.  This patch adds support for the cache flush command and\nflag.  In the kernel, we receive the flags via the NBD_SET_FLAGS ioctl,\nand map NBD_FLAG_SEND_FLUSH to the argument of blk_queue_flush.  When the\nflag is active the block layer will send REQ_FLUSH requests, which we\ntranslate to NBD_CMD_FLUSH commands.\n\nFUA support is not included in this patch because all free software\nservers implement it with a full fdatasync; thus it has no advantage over\nsupporting flush only.  Because I [Paolo] cannot really benchmark it in a\nrealistic scenario, I cannot tell if it is a good idea or not.  It is also\nnot clear if it is valid for an NBD server to support FUA but not flush.\nThe Linux block layer gives a warning for this combination, the NBD\nprotocol documentation says nothing about it.\n\nThe patch also fixes a small problem in the handling of flags: nbd-\u003eflags\nmust be cleared at the end of NBD_DO_IT, but the driver was not doing\nthat.  The bug manifests itself as follows.  Suppose you two different\nclient/server pairs to start the NBD device.  Suppose also that the first\nclient supports NBD_SET_FLAGS, and the first server sends\nNBD_FLAG_SEND_FLUSH; the second pair instead does neither of these two\nthings.  Before this patch, the second invocation of NBD_DO_IT will use a\nstale value of nbd-\u003eflags, and the second server will issue an error every\ntime it receives an NBD_CMD_FLUSH command.\n\nThis bug is pre-existing, but it becomes much more important after this\npatch; flush failures make the device pretty much unusable, unlike\n\nSigned-off-by: Paolo Bonzini \u003cpbonzini@redhat.com\u003e\nSigned-off-by: Alex Bligh \u003calex@alex.org.uk\u003e\nAcked-by: Paul Clements \u003cPaul.Clements@steeleye.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "56de210245487ef1f1416c8ec9e581ebdd0d32ec",
      "tree": "61d75301cf6f1440e206a46472e0c73316ee3f52",
      "parents": [
        "b051f6edc29c084a6440e9731bc85d95b6b95e14"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 27 17:04:01 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:15 2013 -0800"
      },
      "message": "drbd: convert to idr_alloc()\n\nConvert to the much saner new idr interface.\n\nSigned-off-by: Tejun Heo \u003ctj@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": "c718aa652d3def382a79c25442c2a830263e52ed",
      "tree": "7adef67f6031938c442494a985c26371adb26d44",
      "parents": [
        "bab998d62f12db12b3ddf1e06b2ecd4ed9e7ae45"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 27 17:03:58 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:15 2013 -0800"
      },
      "message": "block/loop: convert to idr_alloc()\n\nConvert to the much saner new idr interface.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9d60916677603c0bbc6cdc564307744a90586bc9",
      "tree": "cf13f565b4f1d9f7313a1cf6bee90547a37d883d",
      "parents": [
        "c767bf2ed3a3844a9d9341366cc388dab7c7ee05"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Feb 27 17:03:37 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 27 19:10:13 2013 -0800"
      },
      "message": "block/loop: don\u0027t use idr_remove_all()\n\nidr_destroy() can destroy idr by itself and idr_remove_all() is being\ndeprecated.  Drop its usage.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "d895cb1af15c04c522a25c79cc429076987c089b",
      "tree": "895dc9157e28f603d937a58be664e4e440d5530c",
      "parents": [
        "9626357371b519f2b955fef399647181034a77fe",
        "d3d009cb965eae7e002ea5badf603ea8f4c34915"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 26 20:16:07 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Feb 26 20:16:07 2013 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\nPull vfs pile (part one) from Al Viro:\n \"Assorted stuff - cleaning namei.c up a bit, fixing -\u003ed_name/-\u003ed_parent\n  locking violations, etc.\n\n  The most visible changes here are death of FS_REVAL_DOT (replaced with\n  \"has -\u003ed_weak_revalidate()\") and a new helper getting from struct file\n  to inode.  Some bits of preparation to xattr method interface changes.\n\n  Misc patches by various people sent this cycle *and* ocfs2 fixes from\n  several cycles ago that should\u0027ve been upstream right then.\n\n  PS: the next vfs pile will be xattr stuff.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (46 commits)\n  saner proc_get_inode() calling conventions\n  proc: avoid extra pde_put() in proc_fill_super()\n  fs: change return values from -EACCES to -EPERM\n  fs/exec.c: make bprm_mm_init() static\n  ocfs2/dlm: use GFP_ATOMIC inside a spin_lock\n  ocfs2: fix possible use-after-free with AIO\n  ocfs2: Fix oops in ocfs2_fast_symlink_readpage() code path\n  get_empty_filp()/alloc_file() leave both -\u003ef_pos and -\u003ef_version zero\n  target: writev() on single-element vector is pointless\n  export kernel_write(), convert open-coded instances\n  fs: encode_fh: return FILEID_INVALID if invalid fid_type\n  kill f_vfsmnt\n  vfs: kill FS_REVAL_DOT by adding a d_weak_revalidate dentry op\n  nfsd: handle vfs_getattr errors in acl protocol\n  switch vfs_getattr() to struct path\n  default SET_PERSONALITY() in linux/elf.h\n  ceph: prepopulate inodes only when request is aborted\n  d_hash_and_lookup(): export, switch open-coded instances\n  9p: switch v9fs_set_create_acl() to inode+fid, do it before d_instantiate()\n  9p: split dropping the acls from v9fs_set_create_acl()\n  ...\n"
    },
    {
      "commit": "1b83bef24c6746a146d39915a18fb5425f2facb0",
      "tree": "a765aeb136f4c7e354c01314e5fdfb776d503fb7",
      "parents": [
        "2169aea649c08374bec7d220a3b8f64712275356"
      ],
      "author": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Mon Feb 25 16:11:12 2013 -0800"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Tue Feb 26 15:02:50 2013 -0800"
      },
      "message": "libceph: update osd request/reply encoding\n\nUse the new version of the encoding for osd requests and replies.  In the\nprocess, update the way we are tracking request ops and reply lengths and\nresults in the struct ceph_osd_request.  Update the rbd and fs/ceph users\nappropriately.\n\nThe main changes are:\n - we keep pointers into the request memory for fields we need to update\n   each time the request is sent out over the wire\n - we keep information about the result in an array in the request struct\n   where the users can easily get at it.\n\nSigned-off-by: Sage Weil \u003csage@inktank.com\u003e\nReviewed-by: Alex Elder \u003celder@inktank.com\u003e\n"
    },
    {
      "commit": "c47f9371545abe2510ac3b66c3fc180921816f65",
      "tree": "4e27f3f2f7a7102a584b9755f0783fc34d77f9e5",
      "parents": [
        "39bf2c5d096729939cab657fe641044eceaa84a2"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue Feb 26 14:23:07 2013 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Tue Feb 26 15:00:06 2013 -0800"
      },
      "message": "rbd: pass length, not op for osd completions\n\nThe only thing type-specific osd completion functions do with their\nosd op parameter is (in some cases) extract the number of bytes\ntransferred from it.  In the other cases, the xferred bytes field\nis not used, and total message data transfer byte count (which may\nwell be zero) is used.\n\nJust set the object request transfer count in the main osd request\ncallback function and provide that to the other routines.  There is\nthen no longer any need to pass the op pointer to the type-specific\ncompletion routines, so drop those parameters.\n\nStop doing anything with the total message data length.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "39bf2c5d096729939cab657fe641044eceaa84a2",
      "tree": "bb7b926d595af9720017ae3d6f7734d4b59d7284",
      "parents": [
        "49659416ba4fa8308bd29e453f54c3bcf8a0fbf1"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue Feb 26 14:23:07 2013 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Tue Feb 26 14:59:49 2013 -0800"
      },
      "message": "rbd: move rbd_osd_trivial_callback()\n\nThis function is slightly out of place, probably the result\nof an errant automatic merge or something.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Sage Weil \u003csage@inktank.com\u003e\n"
    },
    {
      "commit": "3dadecce20603aa380023c65e6f55f108fd5e952",
      "tree": "9c6b1540787ba3c0c2342447bf1b35836b1e4314",
      "parents": [
        "e72837e3e7bae3f182c4ac63c9424e86f1158dd0"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Thu Jan 24 02:18:08 2013 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Feb 26 02:46:08 2013 -0500"
      },
      "message": "switch vfs_getattr() to struct path\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "cc344fa1b541b116190291d366583585f03d0fe6",
      "tree": "babe0e154582d2542df314fee9c662ba43fe9553",
      "parents": [
        "c9ffc77adebf9dfe3026ede6c8b3c61586b485b7"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue Feb 19 12:25:56 2013 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Mon Feb 25 15:37:08 2013 -0600"
      },
      "message": "rbd: eliminate sparse warnings\n\nFengguang Wu reminded me that there were outstanding sparse reports\nin the ceph and rbd code.  This patch fixes these problems in rbd\nthat lead to those reports:\n    - Convert functions that are never referenced externally to have\n      static scope.\n    - Add a lockdep annotation to rbd_request_fn(), because it\n      releases a lock before acquiring it again.\n\nThis partially resolves:\n    http://tracker.ceph.com/issues/4184\n\nReported-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "37206ee5bede14d59306fea3af4c0105d4712342",
      "tree": "ca7070823a9e633aeca57dbca8d2c277ad58053d",
      "parents": [
        "632b88cadece050ca925d74bda250c4a320c5cc7"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed Feb 20 17:32:08 2013 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Mon Feb 25 15:36:56 2013 -0600"
      },
      "message": "rbd: normalize dout() calls\n\nAdd dout() calls to facilitate tracing of image and object requests.\nChange a few existing calls so they use __func__ rather than the\nhard-coded function name.  Have calls always add \":\" after the name\nof the function, and prefix pointer values with a consistent tag\nindicating what it represents.  (Note that there remain some older\ndout() calls that are left untouched by this patch.)\n\nIssue a warning if rbd_osd_write_callback() ever gets a short write.\n\nThis resolves:\n    http://tracker.ceph.com/issues/4235\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "632b88cadece050ca925d74bda250c4a320c5cc7",
      "tree": "cd99c51628ae8ca73fdc34674f139d516215c61d",
      "parents": [
        "4dda41d3d76747414586a4bad5615b550e0986b1"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Feb 21 10:10:06 2013 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Mon Feb 25 15:36:50 2013 -0600"
      },
      "message": "rbd: barriers are hard\n\nLet\u0027s go shopping!\n\nI\u0027m afraid this may not have gotten it right:\n    07741308  rbd: add barriers near done flag operations\n\nThe smp_wmb() should have been done *before* setting the done flag,\nto ensure all other data was valid before marking the object request\ndone.\n\nSwitch to use atomic_inc_return() here to set the done flag, which\nallows us to verify we don\u0027t mark something done more than once.\nDoing this also implies general barriers before and after the call.\n\nAnd although a read memory barrier might have been sufficient before\nreading the done flag, convert this to a full memory barrier just\nto put this issue to bed.\n\nThis resolves:\n    http://tracker.ceph.com/issues/4238\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "4dda41d3d76747414586a4bad5615b550e0986b1",
      "tree": "9a2f3cc8d6071fa2d242de8e6a36231e1ba6a902",
      "parents": [
        "92a49fb0f79f3300e6e50ddf56238e70678e4202"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed Feb 20 21:59:33 2013 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Mon Feb 25 15:36:36 2013 -0600"
      },
      "message": "rbd: ignore zero-length requests\n\nThe old request code simply ignored zero-length requests.  We should\nstill operate that same way to avoid any changes in behavior.  We\ncan implement handling for special zero-length requests separately\n(see http://tracker.ceph.com/issues/4236).\n\nAdd some assertions based on this new constraint.\n\nThis resolves:\n    http://tracker.ceph.com/issues/4237\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "496ad9aa8ef448058e36ca7a787c61f2e63f0f54",
      "tree": "8f4abde793cd7db5bb8fde6d27ebcacd0e54379a",
      "parents": [
        "57eccb830f1cc93d4b506ba306d8dfa685e0c88f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Wed Jan 23 17:07:38 2013 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Feb 22 23:31:31 2013 -0500"
      },
      "message": "new helper: file_inode(file)\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "b7a1da695f3fb33d093e6de20b1dfc238e3c9587",
      "tree": "396c68e51b16414c20b4ae2c61a421ab7d1739c6",
      "parents": [
        "b1a6650406875b9097a032eed89af50682fe1160"
      ],
      "author": {
        "name": "Guo Chao",
        "email": "yan@linux.vnet.ibm.com",
        "time": "Thu Feb 21 15:16:50 2013 -0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Feb 22 10:43:22 2013 +0100"
      },
      "message": "loopdev: ignore negative offset when calculate loop device size\n\nNegative offset may cause loop device size larger than backing file\nsize.\n\n $ fallocate -l 1M a\n $ losetup --offset 0xffffffffffff0000 /dev/loop0 a\n $ blockdev --getsize64 /dev/loop0\n 1114112\n $ ls -l a\n -rw-r--r-- 1 root root 1048576 Jan 23 12:46 a\n $ cat /dev/loop0\n cat: /dev/loop0: Input/output error\n\nIt makes no sense to do that. Only apply offset when it\u0027s positive.\n\nFix a typo in the comment by the way.\n\nSigned-off-by: Guo Chao \u003cyan@linux.vnet.ibm.com\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Guo Chao \u003cyan@linux.vnet.ibm.com\u003e\nCc: M. Hindess \u003chindessm@uk.ibm.com\u003e\nCc: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "b1a6650406875b9097a032eed89af50682fe1160",
      "tree": "2521139daec844942ca85e30c86c0218cc8f7a52",
      "parents": [
        "7b0576a3d835b4d46ed85d817ce016e90bf293a3"
      ],
      "author": {
        "name": "Guo Chao",
        "email": "yan@linux.vnet.ibm.com",
        "time": "Thu Feb 21 15:16:49 2013 -0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Feb 22 10:43:22 2013 +0100"
      },
      "message": "loopdev: remove an user triggerable oops\n\nWhen loopdev is built as module and we pass an invalid parameter,\nloop_init() will return directly without deregister misc device, which\nwill cause an oops when insert loop module next time because we left some\ngarbage in the misc device list.\n\nTest case:\nsudo modprobe loop max_part\u003d1024\n(failed due to invalid parameter)\nsudo modprobe loop\n(oops)\n\nClean up nicely to avoid such oops.\n\nSigned-off-by: Guo Chao \u003cyan@linux.vnet.ibm.com\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Guo Chao \u003cyan@linux.vnet.ibm.com\u003e\nCc: M. Hindess \u003chindessm@uk.ibm.com\u003e\nCc: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "7b0576a3d835b4d46ed85d817ce016e90bf293a3",
      "tree": "9c9d9780f3ef794e8d20d2057a722bcab843fad5",
      "parents": [
        "541c742a7559eb65f0e36d3e2338c2ca532a3e61"
      ],
      "author": {
        "name": "Guo Chao",
        "email": "yan@linux.vnet.ibm.com",
        "time": "Thu Feb 21 15:16:47 2013 -0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Feb 22 10:43:22 2013 +0100"
      },
      "message": "loopdev: move common code into loop_figure_size()\n\nUpdate block device size in accord with gendisk size and let userspace\nknow the change in loop_figure_size(). This is a clean up to remove\ncommon code of loop_figure_size()\u0027s two callers.\n\nSigned-off-by: Guo Chao \u003cyan@linux.vnet.ibm.com\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Guo Chao \u003cyan@linux.vnet.ibm.com\u003e\nCc: M. Hindess \u003chindessm@uk.ibm.com\u003e\nCc: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "541c742a7559eb65f0e36d3e2338c2ca532a3e61",
      "tree": "73ac23dda59eb39cc026bc3264e21abaa077328a",
      "parents": [
        "5370019dc2d2c2ff90e95d181468071362934f3a"
      ],
      "author": {
        "name": "Guo Chao",
        "email": "yan@linux.vnet.ibm.com",
        "time": "Thu Feb 21 15:16:46 2013 -0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Feb 22 10:43:22 2013 +0100"
      },
      "message": "loopdev: update block device size in loop_set_status()\n\nLoop device driver sometimes fails to impose the size limit on the\ndevice. Keep issuing following two commands:\n\nlosetup --offset 7517244416 --sizelimit 3224971264 /dev/loop0 backed_file\nblockdev --getsize64 /dev/loop0\n\nblockdev reports file size instead of sizelimit several out of 100 times.\n\nThe problems are:\n\n\t- losetup set up the device in two ioctl:\n\t\t  LOOP_SET_FD and LOOP_SET_STATUS64.\n\n\t- LOOP_SET_STATUS64 only update size of gendisk.\n\nBlock device size will be updated lazily when device comes to use. If udev\nrushes in between the two ioctl, it will bring in a block device whose\nsize is backing file size. If the device is not released after\nLOOP_SET_STATUS64 ioctl, blockdev will not see the updated size.\n\nUpdate block size in LOOP_SET_STATUS64 ioctl.\n\nSigned-off-by: Guo Chao \u003cyan@linux.vnet.ibm.com\u003e\nReported-by: M. Hindess \u003chindessm@uk.ibm.com\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Guo Chao \u003cyan@linux.vnet.ibm.com\u003e\nCc: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "5370019dc2d2c2ff90e95d181468071362934f3a",
      "tree": "4e8044b057e43e6b7da9f576cb442cc8df3fabf2",
      "parents": [
        "d4308febf3551d46884561b7c3fdd62ad3ca7ff2"
      ],
      "author": {
        "name": "Guo Chao",
        "email": "yan@linux.vnet.ibm.com",
        "time": "Thu Feb 21 15:16:45 2013 -0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Feb 22 10:43:21 2013 +0100"
      },
      "message": "loopdev: fix a deadlock\n\nbd_mutex and lo_ctl_mutex can be held in different order.\n\nPath #1:\n\nblkdev_open\n blkdev_get\n  __blkdev_get (hold bd_mutex)\n   lo_open (hold lo_ctl_mutex)\n\nPath #2:\n\nblkdev_ioctl\n lo_ioctl (hold lo_ctl_mutex)\n  lo_set_capacity (hold bd_mutex)\n\nLockdep does not report it, because path #2 actually holds a subclass of\nlo_ctl_mutex.  This subclass seems creep into the code by mistake.  The\npatch author actually just mentioned it in the changelog, see commit\nf028f3b2 (\"loop: fix circular locking in loop_clr_fd()\"), also see:\n\n\thttp://marc.info/?l\u003dlinux-kernel\u0026m\u003d123806169129727\u0026w\u003d2\n\nPath #2 hold bd_mutex to call bd_set_size(), I\u0027ve protected it\nwith i_mutex in a previous patch, so drop bd_mutex at this site.\n\nSigned-off-by: Guo Chao \u003cyan@linux.vnet.ibm.com\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Guo Chao \u003cyan@linux.vnet.ibm.com\u003e\nCc: M. Hindess \u003chindessm@uk.ibm.com\u003e\nCc: Nikanth Karthikesan \u003cknikanth@suse.de\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "7414d4f64b73cc30c600b4fe0a9cbc24cedc4285",
      "tree": "c84ba1bbe4809c6271bf0d142fd885d3776f01e9",
      "parents": [
        "79d0b7f0e30e803061aa1660602a94c118c0c293"
      ],
      "author": {
        "name": "Cong Ding",
        "email": "dinggnu@gmail.com",
        "time": "Thu Feb 21 15:16:40 2013 -0800"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Fri Feb 22 10:42:46 2013 +0100"
      },
      "message": "drivers/block/swim3.c: fix null pointer dereference\n\nThe use of pointer fs should be after the null check.\n\nSigned-off-by: Cong Ding \u003cdinggnu@gmail.com\u003e\nCc: Jens Axboe \u003caxboe@kernel.dk\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "06991c28f37ad68e5c03777f5c3b679b56e3dac1",
      "tree": "4be75788e21c3c644fe6d39abf47693a171cf4f8",
      "parents": [
        "460dc1eecf37263c8e3b17685ef236f0d236facb",
        "74fef7a8fd1d2bd94f925d6638bb4c3049e7c381"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 21 12:05:51 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 21 12:05:51 2013 -0800"
      },
      "message": "Merge tag \u0027driver-core-3.9-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core\n\nPull driver core patches from Greg Kroah-Hartman:\n \"Here is the big driver core merge for 3.9-rc1\n\n  There are two major series here, both of which touch lots of drivers\n  all over the kernel, and will cause you some merge conflicts:\n\n   - add a new function called devm_ioremap_resource() to properly be\n     able to check return values.\n\n   - remove CONFIG_EXPERIMENTAL\n\n  Other than those patches, there\u0027s not much here, some minor fixes and\n  updates\"\n\nFix up trivial conflicts\n\n* tag \u0027driver-core-3.9-rc1\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (221 commits)\n  base: memory: fix soft/hard_offline_page permissions\n  drivercore: Fix ordering between deferred_probe and exiting initcalls\n  backlight: fix class_find_device() arguments\n  TTY: mark tty_get_device call with the proper const values\n  driver-core: constify data for class_find_device()\n  firmware: Ignore abort check when no user-helper is used\n  firmware: Reduce ifdef CONFIG_FW_LOADER_USER_HELPER\n  firmware: Make user-mode helper optional\n  firmware: Refactoring for splitting user-mode helper code\n  Driver core: treat unregistered bus_types as having no devices\n  watchdog: Convert to devm_ioremap_resource()\n  thermal: Convert to devm_ioremap_resource()\n  spi: Convert to devm_ioremap_resource()\n  power: Convert to devm_ioremap_resource()\n  mtd: Convert to devm_ioremap_resource()\n  mmc: Convert to devm_ioremap_resource()\n  mfd: Convert to devm_ioremap_resource()\n  media: Convert to devm_ioremap_resource()\n  iommu: Convert to devm_ioremap_resource()\n  drm: Convert to devm_ioremap_resource()\n  ...\n"
    },
    {
      "commit": "e177bb587ea0fade3d9a86f6667da8d89bea3607",
      "tree": "daebf1786d014cc3182137c76e02381d0aceb245",
      "parents": [
        "55529fa5762462beb39f913c5277cb96c7be0858",
        "561839598e61f03c9175183ea066b2b7fa58ce85"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 20 14:27:00 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Feb 20 14:27:00 2013 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k\n\nPull m68k update from Geert Uytterhoeven.\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:\n  m68k: Sort out !CONFIG_MMU_SUN3 vs. CONFIG_HAS_DMA\n  swim: Add missing spinlock init\n"
    },
    {
      "commit": "d4308febf3551d46884561b7c3fdd62ad3ca7ff2",
      "tree": "b8c48122df7c36761c6fb5d70647a09605892b9f",
      "parents": [
        "c206c70924737db6836382c09ad2dacd04bb6204",
        "087ffecdaa1875cc683a7a5bc0695b3ebfce3bad"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Feb 20 08:26:06 2013 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Feb 20 08:26:06 2013 +0100"
      },
      "message": "Merge branch \u0027stable/for-jens-3.9\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen into for-3.9/drivers\n\nKonrad writes:\n\nPlease git pull the following branch:\n\n git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen.git stable/for-jens-3.9\n\nwhich has bug-fixes that did not make it in v3.8. They all are marked as\nmaterial for the stable tree as well. There are two bug-fixes for\nthe code that has been in there for some time (that is the Jan\u0027s fix\nand one of mine). And there are two bug-fixes for the persistent grant\nfeature that debuted in v3.8 for xen blk[back|front]end.\n"
    },
    {
      "commit": "4c7a08c83a7842e88838dde16684d6bafffdfaf0",
      "tree": "c5fe0057b2ff9f98a64ceb6fa076e75da8225cdd",
      "parents": [
        "19f949f52599ba7c3f67a5897ac6be14bfcb1200",
        "903bb32e890237ca43ab847e561e5377cfe0fdb3"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue Feb 19 19:20:56 2013 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue Feb 19 19:21:08 2013 -0600"
      },
      "message": "Merge branch \u0027testing\u0027 of github.com:ceph/ceph-client into into linux-3.8-ceph\n"
    },
    {
      "commit": "903bb32e890237ca43ab847e561e5377cfe0fdb3",
      "tree": "a2327dd33fe66cd73b30e298b91829b28a05ea7c",
      "parents": [
        "23ed6e13b320b33decb516cbe66e71b132df488d"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed Feb 06 13:11:38 2013 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue Feb 19 19:14:05 2013 -0600"
      },
      "message": "libceph: drop return value from page vector copy routines\n\nThe return values provided for ceph_copy_to_page_vector() and\nceph_copy_from_page_vector() serve no purpose, so get rid of them.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "23ed6e13b320b33decb516cbe66e71b132df488d",
      "tree": "0e1cf9b6a06f1c5bd7ef3b2b8d40c566e607ef12",
      "parents": [
        "1ceae7ef0fd00c965a2257c6e9eb497ca91f01c7"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed Feb 06 13:11:38 2013 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue Feb 19 19:14:05 2013 -0600"
      },
      "message": "rbd: ignore result of ceph_copy_from_page_vector()\n\nThe result of ceph_copy_from_page_vector() is simply the length\nargument it is provided.\n\nThis is called by rbd_obj_method_sync(), which returns the result if\nit\u0027s non-negative.  But we always either ignore or overwrite that\nreturn value.  So explicitly ignore what\u0027s returned by the copy\nfunction, and have rbd_obj_method_sync() always return either a\nnegative errno or 0.\n\nWe also return the result of ceph_copy_from_page_vector() in\nrbd_obj_read_sync().  There we still want to return the number of\nbytes transferred, but we can use the value we already have in hand\nrather than what ceph_copy_from_page_vector() provides.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "1ceae7ef0fd00c965a2257c6e9eb497ca91f01c7",
      "tree": "092a10e88f4503fb41495157d8ea0ad70760bdf8",
      "parents": [
        "b324814e8436772cb3367b14149ba003a9954525"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed Feb 06 13:11:38 2013 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue Feb 19 19:14:04 2013 -0600"
      },
      "message": "rbd: prevent bytes transferred overflow\n\nIn rbd_obj_read_sync(), verify the number of bytes transferred won\u0027t\nexceed what can be represented by a size_t before using it to\nindicate the number of bytes to copy to the result buffer.\n\n(The real motivation for this is to prepare for the next patch.)\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "fbfab53966b279f9cdb36b96ffa1e22f042c96ff",
      "tree": "4f3acf06a4dd61eeeee16119b5f65290c4200bde",
      "parents": [
        "ef06f4d32ae5b656f17b53ee3f3c43471a11cc73"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Fri Feb 08 09:55:48 2013 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue Feb 19 19:14:03 2013 -0600"
      },
      "message": "libceph: allow STAT osd operations\n\nAdd support for CEPH_OSD_OP_STAT operations in the osd client\nand in rbd.\n\nThis operation sends no data to the osd; everything required is\nencoded in identity of the target object.\n\nThe result will be ENOENT if the object doesn\u0027t exist.  If it does\nexist and no other error occurs the server returns the size and last\nmodification time of the target object as output data (in little\nendian format).  The size is a 64 bit unsigned and the time is\nceph_timespec structure (two unsigned 32-bit integers, representing\na seconds and nanoseconds value).\n\nThis resolves:\n    http://tracker.ceph.com/issues/4007\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "ef06f4d32ae5b656f17b53ee3f3c43471a11cc73",
      "tree": "06f6e75197bbf775b5d444fe9fb645e400a00cdc",
      "parents": [
        "f44246e394eadf0754bd6716f8ba1fabf362a87d"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Fri Feb 08 09:55:48 2013 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue Feb 19 19:14:02 2013 -0600"
      },
      "message": "rbd: add parentheses to object request iterator macros\n\nThe for_each_obj_request*() macros should parenthesize their uses of\nthe ireq parameter.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "087ffecdaa1875cc683a7a5bc0695b3ebfce3bad",
      "tree": "2a30eb9d4cea0a13587c7e4748d3584e070b35e1",
      "parents": [
        "f84adf4921ae3115502f44ff467b04bf2f88cf04"
      ],
      "author": {
        "name": "Roger Pau Monne",
        "email": "roger.pau@citrix.com",
        "time": "Thu Feb 14 11:12:09 2013 +0100"
      },
      "committer": {
        "name": "Konrad Rzeszutek Wilk",
        "email": "konrad.wilk@oracle.com",
        "time": "Tue Feb 19 15:17:21 2013 -0500"
      },
      "message": "xen-blkback: use balloon pages for persistent grants\n\nWith current persistent grants implementation we are not freeing the\npersistent grants after we disconnect the device. Since grant map\noperations change the mfn of the allocated page, and we can no longer\npass it to __free_page without setting the mfn to a sane value, use\nballoon grant pages instead, as the gntdev device does.\n\nSigned-off-by: Roger Pau Monné \u003croger.pau@citrix.com\u003e\nCc: stable@vger.kernel.org\nCc: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\nSigned-off-by: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\n"
    },
    {
      "commit": "f84adf4921ae3115502f44ff467b04bf2f88cf04",
      "tree": "79a212e3c4fc0c11478370c15340e419ed66789b",
      "parents": [
        "01c681d4c70d64cb72142a2823f27c4146a02e63"
      ],
      "author": {
        "name": "Konrad Rzeszutek Wilk",
        "email": "konrad.wilk@oracle.com",
        "time": "Wed Feb 13 13:01:55 2013 -0500"
      },
      "committer": {
        "name": "Konrad Rzeszutek Wilk",
        "email": "konrad.wilk@oracle.com",
        "time": "Tue Feb 19 15:17:08 2013 -0500"
      },
      "message": "xen-blkfront: drop the use of llist_for_each_entry_safe\n\nReplace llist_for_each_entry_safe with a while loop.\n\nllist_for_each_entry_safe can trigger a bug in GCC 4.1, so it\u0027s best\nto remove it and use a while loop and do the deletion manually.\n\nSpecifically this bug can be triggered by hot-unplugging a disk, either\nby doing xm block-detach or by save/restore cycle.\n\nBUG: unable to handle kernel paging request at fffffffffffffff0\nIP: [\u003cffffffffa0047223\u003e] blkif_free+0x63/0x130 [xen_blkfront]\nThe crash call trace is:\n\t...\nbad_area_nosemaphore+0x13/0x20\ndo_page_fault+0x25e/0x4b0\npage_fault+0x25/0x30\n? blkif_free+0x63/0x130 [xen_blkfront]\nblkfront_resume+0x46/0xa0 [xen_blkfront]\nxenbus_dev_resume+0x6c/0x140\npm_op+0x192/0x1b0\ndevice_resume+0x82/0x1e0\ndpm_resume+0xc9/0x1a0\ndpm_resume_end+0x15/0x30\ndo_suspend+0x117/0x1e0\n\nWhen drilling down to the assembler code, on newer GCC it does\n.L29:\n        cmpq    $-16, %r12      #, persistent_gnt check\n        je      .L30    \t#, out of the loop\n.L25:\n\t... code in the loop\n        testq   %r13, %r13      # n\n        je      .L29    \t#, back to the top of the loop\n        cmpq    $-16, %r12      #, persistent_gnt check\n        movq    16(%r12), %r13  # \u003cvariable\u003e.node.next, n\n        jne     .L25    \t#,\tback to the top of the loop\n.L30:\n\nWhile on GCC 4.1, it is:\nL78:\n\t... code in the loop\n\ttestq   %r13, %r13      # n\n        je      .L78    #,\tback to the top of the loop\n        movq    16(%rbx), %r13  # \u003cvariable\u003e.node.next, n\n        jmp     .L78    #,\tback to the top of the loop\n\nWhich basically means that the exit loop condition instead of\nbeing:\n\n\t\u0026(pos)-\u003emember !\u003d NULL;\n\nis:\n\t;\n\nwhich makes the loop unbound.\n\nSince xen-blkfront is the only user of the llist_for_each_entry_safe\nmacro remove it from llist.h.\n\nOrabug: 16263164\nCC: stable@vger.kernel.org\nSigned-off-by: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\n"
    },
    {
      "commit": "01c681d4c70d64cb72142a2823f27c4146a02e63",
      "tree": "42f55dc2338465760e4199a28ba677d960a09f7c",
      "parents": [
        "9d092603cc306ee6edfe917bf9ab8beb5f32d7bc"
      ],
      "author": {
        "name": "Konrad Rzeszutek Wilk",
        "email": "konrad.wilk@oracle.com",
        "time": "Wed Jan 16 11:36:23 2013 -0500"
      },
      "committer": {
        "name": "Konrad Rzeszutek Wilk",
        "email": "konrad.wilk@oracle.com",
        "time": "Tue Feb 19 15:17:03 2013 -0500"
      },
      "message": "xen/blkback: Don\u0027t trust the handle from the frontend.\n\nThe \u0027handle\u0027 is the device that the request is from. For the life-time\nof the ring we copy it from a request to a response so that the frontend\nis not surprised by it. But we do not need it - when we start processing\nI/Os we have our own \u0027struct phys_req\u0027 which has only most essential\ninformation about the request. In fact the \u0027vbd_translate\u0027 ends up\nover-writing the preq.dev with a value from the backend.\n\nThis assignment of preq.dev with the \u0027handle\u0027 value is superfluous\nso lets not do it.\n\nCc: stable@vger.kernel.org\nAcked-by: Jan Beulich \u003cjbeulich@suse.com\u003e\nAcked-by: Ian Campbell \u003cian.campbell@citrix.com\u003e\nSigned-off-by: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\n"
    },
    {
      "commit": "9d092603cc306ee6edfe917bf9ab8beb5f32d7bc",
      "tree": "b3a2c673762e0c5c9cff298cf34376f887641f66",
      "parents": [
        "836dc9e3fbbab0c30aa6e664417225f5c1fb1c39"
      ],
      "author": {
        "name": "Jan Beulich",
        "email": "JBeulich@suse.com",
        "time": "Thu Dec 20 10:31:11 2012 +0000"
      },
      "committer": {
        "name": "Konrad Rzeszutek Wilk",
        "email": "konrad.wilk@oracle.com",
        "time": "Tue Feb 19 15:16:52 2013 -0500"
      },
      "message": "xen-blkback: do not leak mode property\n\n\"be-\u003emode\" is obtained from xenbus_read(), which does a kmalloc() for\nthe message body. The short string is never released, so do it along\nwith freeing \"be\" itself, and make sure the string isn\u0027t kept when\nbackend_changed() doesn\u0027t complete successfully (which made it\ndesirable to slightly re-structure that function, so that the error\ncleanup can be done in one place).\n\nReported-by: Olaf Hering \u003colaf@aepfle.de\u003e\nCC: stable@vger.kernel.org\nSigned-off-by: Jan Beulich \u003cjbeulich@suse.com\u003e\nSigned-off-by: Konrad Rzeszutek Wilk \u003ckonrad.wilk@oracle.com\u003e\n"
    },
    {
      "commit": "c206c70924737db6836382c09ad2dacd04bb6204",
      "tree": "31a9ebc3e0998f19db1537d45617ad13363dcef5",
      "parents": [
        "ec8edc764efa51e5acf9193a8846a5a99399ceb8"
      ],
      "author": {
        "name": "Philip J Kelleher",
        "email": "pjk1939@linux.vnet.ibm.com",
        "time": "Mon Feb 18 21:35:59 2013 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Mon Feb 18 21:35:59 2013 +0100"
      },
      "message": "block: IBM RamSan 70/80 driver fixes\n\nThis patch includes the following driver fixes for the\nIBM RamSan 70/80 driver:\n\no Changed the creg_ctrl lock from a mutex to a spinlock.\no Added a count check for ioctl calls.\no Removed unnecessary casting of void pointers.\no Made every function static that needed to be.\no Added comments to explain things more thoroughly.\n\nSigned-off-by: Philip J Kelleher \u003cpjk1939@linux.vnet.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "3c663bbdcdf9296e0fe3362acb9e81f49d7b72c6",
      "tree": "6fe7358d5dfce2d39cde3f0b35a78808ab1b674d",
      "parents": [
        "60e56f138180e72fa8487d4b9c1c916013494f46"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Fri Feb 15 11:42:30 2013 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Mon Feb 18 12:20:00 2013 -0600"
      },
      "message": "libceph: kill ceph_osdc_create_event() \"one_shot\" parameter\n\nThere is only one caller of ceph_osdc_create_event(), and it\nprovides 0 as its \"one_shot\" argument.  Get rid of that argument and\njust use 0 in its place.\n\nReplace the code in handle_watch_notify() that executes if one_shot\nis nonzero in the event with a BUG_ON() call.\n\nWhile modifying \"osd_client.c\", give handle_watch_notify() static\nscope.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "11e7651432405eeee833fe9d1307488df7a81cd3",
      "tree": "95e6b990ff145cac9c58f40e12f2e116acb260b3",
      "parents": [
        "5c0857a9afc74ec83e222ea1b9808988d08139d9",
        "f4d9605434c0fd4cc8639bf25cfc043418c52362"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 15 12:05:57 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Feb 15 12:05:57 2013 -0800"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc\n\nPull sparc fixes from David Miller:\n \"A couple small fixes for sparc including some THP brown-paper-bag\n  material:\n\n   1) During the merging of all the THP support for various\n      architectures, sparc missed adding a\n      HAVE_ARCH_TRANSPARENT_HUGEPAGE to it\u0027s Kconfig, oops.\n\n   2) Sparc needs to be mindful of hugepages in get_user_pages_fast().\n\n   3) Fix memory leak in SBUS probe, from Cong Ding.\n\n   4) The sunvdc virtual disk client driver has a test of the bitmask of\n      vdisk server supported operations which was off by one bit\"\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:\n  sunvdc: Fix off-by-one in generic_request().\n  sparc64: Fix get_user_pages_fast() wrt. THP.\n  sparc64: Add missing HAVE_ARCH_TRANSPARENT_HUGEPAGE.\n  sparc: kernel/sbus.c: fix memory leakage\n"
    },
    {
      "commit": "f4d9605434c0fd4cc8639bf25cfc043418c52362",
      "tree": "a6708f603da9d453b7d814c11c8bc6020f7402e0",
      "parents": [
        "89a77915e0f56dc7b9f9082ba787895b6a83f809"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Feb 14 11:49:01 2013 -0800"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Feb 14 11:49:01 2013 -0800"
      },
      "message": "sunvdc: Fix off-by-one in generic_request().\n\nThe \u0027operations\u0027 bitmap corresponds one-for-one with the operation\ncodes, no adjustment is necessary.\n\nReported-by: Mark Kettenis \u003cmark.kettenis@xs4all.nl\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "ec8edc764efa51e5acf9193a8846a5a99399ceb8",
      "tree": "8ce1e0f67fb2e89c4c4224e153b8db2524575211",
      "parents": [
        "e5e9fdaad4443ba45ada91c0aae8b36a38ca9c4d",
        "d1a6f4f19728d6e90480e53601a90fc9f6a348ad"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Feb 14 16:29:34 2013 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Feb 14 16:29:34 2013 +0100"
      },
      "message": "Merge branch \u0027delete-xt-disk\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux into for-3.9/drivers\n\nPaul writes:\n\nPlease pull the following to get the removal of the original IBM PC-XT\nhard disk driver from the block layer (drivers/block/xd.c).\n\nAs near as I can tell, it hasn\u0027t seen a run time fix in over a dozen\nyears, and with drive sizes of 10-20MB, and performance of about 128kB/s\nmaximum, it is no surprise that it has been completely unused for well\nover a decade.\n\nThe removal was originally posted[1] well over a month ago, and since\nthen, there has been nobody objecting to the removal, aside from someone\nwho had mistakenly confused it with a completely different driver (hd.c)\n"
    },
    {
      "commit": "077413082f9ade9ca4d9774dbdc81ee7256d8089",
      "tree": "825678f1ad0b9108bb2beb7e6f1e29415d49d27c",
      "parents": [
        "a14ea269dd6b5e48a2941ba73b202cd7cd5d716d"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue Feb 05 23:41:50 2013 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Feb 13 18:29:11 2013 -0800"
      },
      "message": "rbd: add barriers near done flag operations\n\nSomehow, I missed this little item in Documentation/atomic_ops.txt:\n    *** WARNING: atomic_read() and atomic_set() DO NOT IMPLY BARRIERS! ***\n\nCreate and use some helper functions that include the proper memory\nbarriers for manipulating the done field.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "a14ea269dd6b5e48a2941ba73b202cd7cd5d716d",
      "tree": "c97e4fcb5c80c03f769cf7e2408d2c88e88d6d4b",
      "parents": [
        "9cbb1d7268afa997a7f96d779470cc57d28e1a13"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue Feb 05 13:23:12 2013 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Feb 13 18:29:11 2013 -0800"
      },
      "message": "rbd: turn off interrupts for open/remove locking\n\nThis commit:\n    bc7a62ee5 rbd: prevent open for image being removed\nadded checking for removing rbd before allowing an open, and used\nthe same request spinlock for protecting that and updating the open\ncount as is used for the request queue.\n\nHowever it used the non-irq protected version of the spinlocks.\nFix that.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "9cbb1d7268afa997a7f96d779470cc57d28e1a13",
      "tree": "573dfaa8590be939671c73d3536fe031094d1b2e",
      "parents": [
        "1e32d34cfa6759df58b5f4002664241f2a0fef6a"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Jan 31 16:02:00 2013 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Feb 13 18:29:11 2013 -0800"
      },
      "message": "libceph: don\u0027t require r_num_pages for bio requests\n\nThere is a check in the completion path for osd requests that\nensures the number of pages allocated is enough to hold the amount\nof incoming data expected.\n\nFor bio requests coming from rbd the \"number of pages\" is not really\nmeaningful (although total length would be).  So stop requiring that\nnr_pages be supplied for bio requests.  This is done by checking\nwhether the pages pointer is null before checking the value of\nnr_pages.\n\nNote that this value is passed on to the messenger, but there it\u0027s\nonly used for debugging--it\u0027s never used for validation.\n\nWhile here, change another spot that used r_pages in a debug message\ninappropriately, and also invalidate the r_con_filling_msg pointer\nafter dropping a reference to it.\n\nThis resolves:\n    http://tracker.ceph.com/issues/3875\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "1e32d34cfa6759df58b5f4002664241f2a0fef6a",
      "tree": "adec3c6652116c64ec295b35cac03f3fb255a6eb",
      "parents": [
        "72fe25e3460c8673984370208e0e6261101372d6"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed Jan 30 11:13:33 2013 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Feb 13 18:29:11 2013 -0800"
      },
      "message": "rbd: don\u0027t take extra bio reference for osd client\n\nCurrently, if the OSD client finds an osd request has had a bio list\nattached to it, it drops a reference to it (or rather, to the first\nentry on that list) when the request is released.\n\nThe code that added that reference (i.e., the rbd client) is\ntherefore required to take an extra reference to that first bio\nstructure.\n\nThe osd client doesn\u0027t really do anything with the bio pointer other\nthan transfer it from the osd request structure to outgoing (for\nwrites) and ingoing (for reads) messages.  So it really isn\u0027t the\nright place to be taking or dropping references.\n\nFurthermore, the rbd client already holds references to all bio\nstructures it passes to the osd client, and holds them until the\nrequest is completed.  So there\u0027s no need for this extra reference\nwhatsoever.\n\nSo remove the bio_put() call in ceph_osdc_release_request(), as\nwell as its matching bio_get() call in rbd_osd_req_create().\n\nThis change could lead to a crash if old libceph.ko was used with\nnew rbd.ko.  Add a compatibility check at rbd initialization time to\navoid this possibilty.\n\nThis resolves:\n    http://tracker.ceph.com/issues/3798    and\n    http://tracker.ceph.com/issues/3799\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "b82d167be64b3e88d9434d8a98ce83c83a07aa48",
      "tree": "45f23409f8412ad4c536b1002553a8f8dd7a5081",
      "parents": [
        "6d292906f80170f4647079dd503df18b737750af"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Mon Jan 14 12:43:31 2013 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Feb 13 18:29:10 2013 -0800"
      },
      "message": "rbd: prevent open for image being removed\n\nAn open request for a mapped rbd image can arrive while removal of\nthat mapping is underway.  We need to prevent such an open request\nfrom succeeding.  (It appears that Maciej Galkiewicz ran into this\nproblem.)\n\nDefine and use a \"removing\" flag to indicate a mapping is getting\nremoved.  Set it in the remove path after verifying nothing holds\nthe device open.  And check it in the open path before allowing the\nopen to proceed.  Acquire the rbd device\u0027s lock around each of these\nspots to avoid any races accessing the flags and open_count fields.\n\nThis addresses:\n    http://tracker.newdream.net/issues/3427\n\nReported-by: Maciej Galkiewicz \u003cmaciejgalkiewicz@ragnarson.com\u003e\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "6d292906f80170f4647079dd503df18b737750af",
      "tree": "2fc2b4f1235375cd143ab261540ce19e56d8ab62",
      "parents": [
        "8eb87565306cf40a32f5d0883d008675cd2dd510"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Mon Jan 14 12:43:31 2013 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Feb 13 18:29:10 2013 -0800"
      },
      "message": "rbd: define flags field, use it for exists flag\n\nDefine a new rbd device flags field, manipulated using bit\noperations.  Replace the use of the current \"exists\" flag with a bit\nin this new \"flags\" field.  Add a little commentary about the\n\"exists\" flag, which does not need to be manipulated atomically.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "8eb87565306cf40a32f5d0883d008675cd2dd510",
      "tree": "e999f857dbe1ccf18508590be9c818d7835b7201",
      "parents": [
        "25dcf954c3230946b5f3e18db9f91d7640eff76e"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Fri Jan 25 17:08:55 2013 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Feb 13 18:29:10 2013 -0800"
      },
      "message": "rbd: don\u0027t drop watch requests on completion\n\nWhen we register an osd request to linger, it means that request\nwill stay around (under control of the osd client) until we\u0027ve\nunregistered it.  We do that for an rbd image\u0027s header object, and\nwe keep a pointer to the object request associated with it.\n\nKeep a reference to the watch object request for as long as it is\nregistered to linger.  Drop it again after we\u0027ve removed the linger\nregistration.\n\nThis resolves:\n    http://tracker.ceph.com/issues/3937\n\n(Note: this originally came about because the osd client was\nissuing a callback more than once.  But that behavior will be\nchanging soon, documented in tracker issue 3967.)\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "25dcf954c3230946b5f3e18db9f91d7640eff76e",
      "tree": "cc7e5d7f69c3ab1dd49deea447fb697675bff5a3",
      "parents": [
        "975241afcbba82ab1ddc6ebf8a02246d1e9314fd"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Fri Jan 25 17:08:55 2013 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Feb 13 18:29:10 2013 -0800"
      },
      "message": "rbd: decrement obj request count when deleting\n\nDecrement the obj_request_count value when deleting an object\nrequest from its image request\u0027s list.  Rearrange a few lines\nin the surrounding code.\n\nThis resolves:\n    http://tracker.ceph.com/issues/3940\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "975241afcbba82ab1ddc6ebf8a02246d1e9314fd",
      "tree": "74197e189c9da0ed90104aec82b570026bdedfd6",
      "parents": [
        "6977c3f983b0d2b481a65b1fa3e85683fd1318af"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Fri Jan 25 17:08:55 2013 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Feb 13 18:29:10 2013 -0800"
      },
      "message": "rbd: track object rather than osd request for watch\n\nSwitch to keeping track of the object request pointer rather than\nthe osd request used to watch the rbd image header object.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "6977c3f983b0d2b481a65b1fa3e85683fd1318af",
      "tree": "8eaec1896170c886a488ade9c7a46cbaa415190b",
      "parents": [
        "9f20e02a53b944a54a35b9f0db1243cd64872f7d"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Fri Jan 25 17:08:55 2013 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Feb 13 18:29:09 2013 -0800"
      },
      "message": "rbd: unregister linger in watch sync routine\n\nMove the code that unregisters an rbd device\u0027s lingering header\nobject watch request into rbd_dev_header_watch_sync(), so it\noccurs in the same function that originally sets up that request.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "9f20e02a53b944a54a35b9f0db1243cd64872f7d",
      "tree": "415489668f41d37ffaa0ef99699ee001f4ec140d",
      "parents": [
        "36be9a761844e186f629f463b665945df4f67766"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Sun Jan 20 14:44:42 2013 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Feb 13 18:29:09 2013 -0800"
      },
      "message": "rbd: get rid of rbd_req_sync_exec()\n\nGet rid rbd_req_sync_exec() because it is no longer used.  That\neliminates the last use of rbd_req_sync_op(), so get rid of that\ntoo.  And finally, that leaves rbd_do_request() unreferenced, so get\nrid of that.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "36be9a761844e186f629f463b665945df4f67766",
      "tree": "a7d32f82cc212b2e2c91346087f7c2cc4691b7c2",
      "parents": [
        "cf81b60e4bbd4a1281fe2640f9c0c40fe3a85fdf"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Sat Jan 19 00:30:28 2013 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Feb 13 18:29:09 2013 -0800"
      },
      "message": "rbd: implement sync method with new code\n\nReimplement synchronous object method calls using the new request\ntracking code.  Use the name rbd_obj_method_sync()\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "cf81b60e4bbd4a1281fe2640f9c0c40fe3a85fdf",
      "tree": "093a86f3c3809c4013f8f9d4b8da83acc09cfab2",
      "parents": [
        "5ae9db81b45c2d95554c665043afffd5e9a7d5ac"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Jan 17 12:18:46 2013 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Feb 13 18:29:09 2013 -0800"
      },
      "message": "rbd: send notify ack asynchronously\n\nWhen we receive notification of a change to an rbd image\u0027s header\nobject we need to refresh our information about the image (its\nsize and snapshot context).  Once we have refreshed our rbd image\nwe need to acknowledge the notification.\n\nThis acknowledgement was previously done synchronously, but there\u0027s\nreally no need to wait for it to complete.\n\nChange it so the caller doesn\u0027t wait for the notify acknowledgement\nrequest to complete.  And change the name to reflect it\u0027s no longer\nsynchronous.\n\nThis resolves:\n    http://tracker.newdream.net/issues/3877\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "5ae9db81b45c2d95554c665043afffd5e9a7d5ac",
      "tree": "712ac569bf38f4f60efde64795a9b6e0e8c1bb63",
      "parents": [
        "b8d70035b35dc12135d5835b659b229bcd6d4f94"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Sun Jan 20 14:44:42 2013 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Feb 13 18:29:09 2013 -0800"
      },
      "message": "rbd: get rid of rbd_req_sync_notify_ack()\n\nGet rid rbd_req_sync_notify_ack() because it is no longer used.\nAs a result rbd_simple_req_cb() becomes unreferenced, so get rid\nof that too.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "b8d70035b35dc12135d5835b659b229bcd6d4f94",
      "tree": "95b642bf419eb7bbeb147f19a36fcce19f56128e",
      "parents": [
        "ecf7a0318b1b026fb147623c36324fa8c73447a9"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Fri Nov 30 17:53:04 2012 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Feb 13 18:29:08 2013 -0800"
      },
      "message": "rbd: use new code for notify ack\n\nUse the new object request tracking mechanism for handling a\nnotify_ack request.\n\nMove the callback function below the definition of this so we don\u0027t\nhave to do a pre-declaration.\n\nThis resolves:\n    http://tracker.newdream.net/issues/3754\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "ecf7a0318b1b026fb147623c36324fa8c73447a9",
      "tree": "44c5a5a3f7e642be507ae3c2ab003b9d49721a52",
      "parents": [
        "9969ebc5af93028c21f2614621737f0d6ff6fc06"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Sun Jan 20 14:44:42 2013 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Feb 13 18:29:08 2013 -0800"
      },
      "message": "rbd: get rid of rbd_req_sync_watch()\n\nGet rid of rbd_req_sync_watch(), because it is no longer used.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "9969ebc5af93028c21f2614621737f0d6ff6fc06",
      "tree": "f65f331f36dc9bdc3f6d46b1e3b165f2202e60dc",
      "parents": [
        "86ea43bfcbeae61858b0fee4971e5b1e894d7174"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Fri Jan 18 12:31:10 2013 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Feb 13 18:29:08 2013 -0800"
      },
      "message": "rbd: implement watch/unwatch with new code\n\nImplement a new function to set up or tear down a watch event\nfor an mapped rbd image header using the new request code.\n\nCreate a new object request type \"nodata\" to handle this.  And\ndefine rbd_osd_trivial_callback() which simply marks a request done.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "86ea43bfcbeae61858b0fee4971e5b1e894d7174",
      "tree": "8670fc7df04991ebf4eae1ba91ac484264717e53",
      "parents": [
        "788e2df3b92e30f1fff74139bb53e68ec13fe2a5"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Sun Jan 20 14:44:42 2013 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Feb 13 18:29:08 2013 -0800"
      },
      "message": "rbd: get rid of rbd_req_sync_read()\n\nDelete rbd_req_sync_read() is no longer used, so get rid of it.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "788e2df3b92e30f1fff74139bb53e68ec13fe2a5",
      "tree": "e0386e011b2dd488bb55e1b2baef4677b11ad6b2",
      "parents": [
        "7d250b949a33c8a658a2ad4ab390d8394b842224"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Jan 17 12:25:27 2013 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Feb 13 18:29:08 2013 -0800"
      },
      "message": "rbd: implement sync object read with new code\n\nReimplement the synchronous read operation used for reading a\nversion 1 header using the new request tracking code.  Name the\nresulting function rbd_obj_read_sync() to better reflect that\nit\u0027s a full object operation, not an object request.  To do this,\nimplement a new OBJ_REQUEST_PAGES object request type.\n\nThis implements a new mechanism to allow the caller to wait for\ncompletion for an rbd_obj_request by calling rbd_obj_request_wait().\n\nThis partially resolves:\n    http://tracker.newdream.net/issues/3755\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "7d250b949a33c8a658a2ad4ab390d8394b842224",
      "tree": "d5517f5531aafeb07b607816fe50e0daa1f0ad49",
      "parents": [
        "2250a71b591728092db9adcc51629401deb2f9f8"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Fri Nov 30 17:53:04 2012 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Feb 13 18:29:07 2013 -0800"
      },
      "message": "rbd: kill rbd_req_coll and rbd_request\n\nThe two remaining callers of rbd_do_request() always pass a null\ncollection pointer, so the \"coll\" and \"coll_index\" parameters are\nnot needed.  There is no other use of that data structure, so it\ncan be eliminated.\n\nDeleting them means there is no need to allocate a rbd_request\nstructure for the callback function.  And since that\u0027s the only use\nof *that* structure, it too can be eliminated.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "2250a71b591728092db9adcc51629401deb2f9f8",
      "tree": "dbadb7803168f6399b9f9c473ab34267ba8a0336",
      "parents": [
        "bf0d5f503dc11d6314c0503591d258d60ee9c944"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Fri Nov 30 17:53:04 2012 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Feb 13 18:29:07 2013 -0800"
      },
      "message": "rbd: kill rbd_rq_fn() and all other related code\n\nNow that the request function has been replaced by one using the new\nrequest management data structures the old one can go away.\nDeleting it makes rbd_dev_do_request() no longer needed, and\ndeleting that makes other functions unneeded, and so on.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "bf0d5f503dc11d6314c0503591d258d60ee9c944",
      "tree": "eb76cf8e36f6b23f8d6a4ae3849cb7bca442a584",
      "parents": [
        "3ebc21f7bc2f9c0145bbbf0f12430b766a200f9f"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Nov 22 00:00:08 2012 -0600"
      },
      "committer": {
        "name": "Sage Weil",
        "email": "sage@inktank.com",
        "time": "Wed Feb 13 18:29:07 2013 -0800"
      },
      "message": "rbd: new request tracking code\n\nThis patch fully implements the new request tracking code for rbd\nI/O requests.\n\nEach I/O request to an rbd image will get an rbd_image_request\nstructure allocated to track it.  This provides access to all\ninformation about the original request, as well as access to the\nset of one or more object requests that are initiated as a result\nof the image request.\n\nAn rbd_obj_request structure defines a request sent to a single osd\nobject (possibly) as part of an rbd image request.  An rbd object\nrequest refers to a ceph_osd_request structure built up to represent\nthe request; for now it will contain a single osd operation.  It\nalso provides space to hold the result status and the version of the\nobject when the osd request completes.\n\nAn rbd_obj_request structure can also stand on its own.  This will\nbe used for reading the version 1 header object, for issuing\nacknowledgements to event notifications, and for making object\nmethod calls.\n\nAll rbd object requests now complete asynchronously with respect\nto the osd client--they supply a common callback routine.\n\nThis resolves:\n    http://tracker.newdream.net/issues/3741\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "243eeb78906e17a18faacb492facd3284993f220",
      "tree": "d34c4b4656cb5b8b0088c1ec640706a4377a81a4",
      "parents": [
        "836dc9e3fbbab0c30aa6e664417225f5c1fb1c39"
      ],
      "author": {
        "name": "Jean Delvare",
        "email": "khali@linux-fr.org",
        "time": "Thu Sep 06 13:48:30 2012 +0200"
      },
      "committer": {
        "name": "Geert Uytterhoeven",
        "email": "geert@linux-m68k.org",
        "time": "Sat Feb 09 14:23:33 2013 +0100"
      },
      "message": "swim: Add missing spinlock init\n\nIt doesn\u0027t seem this spinlock was properly initialized.\n\nSigned-off-by: Jean Delvare \u003ckhali@linux-fr.org\u003e\nCc: Finn Thain \u003cfthain@telegraphics.com.au\u003e\nCc: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\nSigned-off-by: Geert Uytterhoeven \u003cgeert@linux-m68k.org\u003e\n"
    },
    {
      "commit": "e5e9fdaad4443ba45ada91c0aae8b36a38ca9c4d",
      "tree": "5838ede917be537c0fb9274f2a73795839a4fdfc",
      "parents": [
        "1262e24a59a052f9a98383e47e7c903712490d5c"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Feb 07 10:04:21 2013 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Feb 07 10:04:21 2013 +0100"
      },
      "message": "rsxx: add slab.h include to dma.c\n\nkbuild test robot says:\n\ntree:   git://git.kernel.dk/linux-block.git for-3.9/drivers\nhead:   1262e24a59a052f9a98383e47e7c903712490d5c\ncommit: 8722ff8cdbfac9c1b20e67bb067b455c48cb8e93 [6/8] block: IBM RamSan 70/80 device driver\nconfig: make ARCH\u003dalpha allyesconfig\n\nAll error/warnings:\n\n   drivers/block/rsxx/dma.c: In function \u0027rsxx_complete_dma\u0027:\n\u003e\u003e drivers/block/rsxx/dma.c:251:2: error: implicit declaration of function \u0027kmem_cache_free\u0027 [-Werror\u003dimplicit-function-declaration]\n   drivers/block/rsxx/dma.c: In function \u0027rsxx_queue_discard\u0027:\n\u003e\u003e drivers/block/rsxx/dma.c:567:2: error: implicit declaration of function \u0027kmem_cache_alloc\u0027 [-Werror\u003dimplicit-function-declaration]\n\u003e\u003e drivers/block/rsxx/dma.c:567:6: warning: assignment makes pointer from integer without a cast [enabled by default]\n   drivers/block/rsxx/dma.c: In function \u0027rsxx_queue_dma\u0027:\n\u003e\u003e drivers/block/rsxx/dma.c:601:6: warning: assignment makes pointer from integer without a cast [enabled by default]\n   drivers/block/rsxx/dma.c: In function \u0027rsxx_dma_init\u0027:\n\u003e\u003e drivers/block/rsxx/dma.c:985:2: error: implicit declaration of function \u0027KMEM_CACHE\u0027 [-Werror\u003dimplicit-function-declaration]\n\u003e\u003e drivers/block/rsxx/dma.c:985:29: error: \u0027rsxx_dma\u0027 undeclared (first use in this function)\n   drivers/block/rsxx/dma.c:985:29: note: each undeclared identifier is reported only once for each function it appears in\n\u003e\u003e drivers/block/rsxx/dma.c:985:39: error: \u0027SLAB_HWCACHE_ALIGN\u0027 undeclared (first use in this function)\n   drivers/block/rsxx/dma.c: In function \u0027rsxx_dma_cleanup\u0027:\n\u003e\u003e drivers/block/rsxx/dma.c:995:2: error: implicit declaration of function \u0027kmem_cache_destroy\u0027 [-Werror\u003dimplicit-function-declaration]\n   cc1: some warnings being treated as errors\n\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "1262e24a59a052f9a98383e47e7c903712490d5c",
      "tree": "2bf205796eeeecd24b6a33931cadaec8a8aeeaa8",
      "parents": [
        "82bed4d5f8189a2f9db5d1bb6489ac2615426d65"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Thu Feb 07 07:37:29 2013 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Thu Feb 07 07:37:29 2013 +0100"
      },
      "message": "drivers/block/mtip32xx: add missing GENERIC_HARDIRQS dependency\n\nThe MTIP32XX driver calls devm_request_irq() and therefore needs a\nGENERIC_HARDIRQS dependency to prevent building it on s390.\n\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "2110cf029a67237db572299bb51e0de9e3e3d4dd",
      "tree": "6837ff139a807037f06952c3eb72c3e350bc05c8",
      "parents": [
        "1589a3e7777631ff56dd58cd7dcdf275185e62b5",
        "1383923d1985cef2bceb8128094fbe5e05de7435"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 07 08:38:33 2013 +1100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Feb 07 08:38:33 2013 +1100"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.dk/linux-block\n\nPull block layer updates from Jens Axboe:\n \"I\u0027ve got a few bits pending for 3.8 final, that I better get sent out.\n  It\u0027s all been sitting for a while, I consider it safe.\n\n  It contains:\n\n   - Two bug fixes for mtip32xx, fixing a driver hang and a crash.\n\n   - A few-liner protocol error fix for drbd.\n\n   - A few fixes for the xen block front/back driver, fixing a potential\n     data corruption issue.\n\n   - A race fix for disk_clear_events(), causing spurious warnings.  Out\n     of the Chrome OS base.\n\n   - A deadlock fix for disk_clear_events(), moving it to the a\n     unfreezable workqueue.  Also from the Chrome OS base.\"\n\n* \u0027for-linus\u0027 of git://git.kernel.dk/linux-block:\n  drbd: fix potential protocol error and resulting disconnect/reconnect\n  mtip32xx: fix for crash when the device surprise removed during rebuild\n  mtip32xx: fix for driver hang after a command timeout\n  block: prevent race/cleanup\n  block: remove deadlock in disk_clear_events\n  xen-blkfront: handle bvecs with partial data\n  llist/xen-blkfront: implement safe version of llist_for_each_entry\n  xen-blkback: implement safe iterator for the list of persistent grants\n"
    },
    {
      "commit": "82bed4d5f8189a2f9db5d1bb6489ac2615426d65",
      "tree": "542894373fc2e22d49cc22c6b70d9ec7111c2676",
      "parents": [
        "8722ff8cdbfac9c1b20e67bb067b455c48cb8e93"
      ],
      "author": {
        "name": "Stephen Rothwell",
        "email": "sfr@canb.auug.org.au",
        "time": "Wed Feb 06 14:03:13 2013 +1100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Wed Feb 06 09:34:20 2013 +0100"
      },
      "message": "block: remove new __devinit/exit annotations on ramsam driver\n\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "8722ff8cdbfac9c1b20e67bb067b455c48cb8e93",
      "tree": "5b85a6366f1337d3d56d67a76755e82e11a8b324",
      "parents": [
        "478c030eecbec927d62561c5f48a4515ea0fa21a"
      ],
      "author": {
        "name": "josh.h.morris@us.ibm.com",
        "email": "josh.h.morris@us.ibm.com",
        "time": "Tue Feb 05 14:15:02 2013 +0100"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Feb 05 14:16:05 2013 +0100"
      },
      "message": "block: IBM RamSan 70/80 device driver\n\nThis patch includes the device driver for the IBM RamSan\nfamily of PCI SSD flash storage cards. This driver will\ninclude support for the RamSan 70 and 80. The driver\npresents a block device for device I/O.\n\nSigned-off-by: Philip J Kelleher \u003cpjk1939@linux.vnet.ibm.com\u003e\nSigned-off-by: Jens Axboe \u003caxboe@kernel.dk\u003e\n"
    },
    {
      "commit": "969e5aa3b0162a02c4f287d48ff58ca2145acf1b",
      "tree": "1af8e8e47e7352c6d3b4abfdb4aea6bd9458666f",
      "parents": [
        "949db153b6466c6f7cad5a427ecea94985927311",
        "1ec3911dbd19076bcdfe5540096ff67f91a6ec02"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed Jan 30 07:54:34 2013 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed Jan 30 07:54:34 2013 -0600"
      },
      "message": "Merge branch \u0027testing\u0027 of github.com:ceph/ceph-client into v3.8-rc5-testing\n"
    },
    {
      "commit": "422d26b6ecd77af8c77f2a40580679459825170f",
      "tree": "632e690e458fb7b27db200cd6fcd5429e143e419",
      "parents": [
        "4c271bb67c04253c1e99006eb48fb773a8fe8c0f",
        "949db153b6466c6f7cad5a427ecea94985927311"
      ],
      "author": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Fri Jan 25 21:06:30 2013 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Fri Jan 25 21:06:30 2013 -0800"
      },
      "message": "Merge 3.8-rc5 into driver-core-next\n\nThis resolves a gpio driver merge issue pointed out in linux-next.\n\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "c04306471ad93f1daf60771a0373316d4c3494ae",
      "tree": "2d5bbe316ab638fb2ca983b981bd15e2776e987f",
      "parents": [
        "38901e0f240b634467fb31743365af80a006be33"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Fri Jan 18 12:31:09 2013 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Fri Jan 25 17:33:37 2013 -0600"
      },
      "message": "rbd: don\u0027t retry setting up header watch\n\nWhen an rbd image is initially mapped a watch event is registered so\nwe can do something if the header object changes.\n\nThe code that does this currently loops if initiating the watch\nrequest results in an ERANGE error.  The osds will never return\nERANGE, so there\u0027s no reason to do this loop, so get rid of it.\n\nThis resolves:\n    http://tracker.newdream.net/issues/3860\n\nNote that the problem this loop was intended to solve is a race\nbetween collecting image header information and setting up the watch\non the header object.  The real fix for that problem is described\nhere:\n    http://tracker.newdream.net/issues/3871\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "38901e0f240b634467fb31743365af80a006be33",
      "tree": "d69c8ed51d926b9bc79b2e7a6c078be3d79cb55f",
      "parents": [
        "98571b5aa776d4a69eadd7d4e5c9d4e69365ab9a"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Jan 10 12:56:58 2013 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Fri Jan 25 17:33:14 2013 -0600"
      },
      "message": "rbd: check for overflow in rbd_get_num_segments()\n\nThe return type of rbd_get_num_segments() is int, but the values it\noperates on are u64.  Although it\u0027s not likely, there\u0027s no guarantee\nthe result won\u0027t exceed what can be respresented in an int.  The\nfunction is already designed to return -ERANGE on error, so just add\nthis possible overflow as another reason to return that.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Dan Mick \u003cdan.mick@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "98571b5aa776d4a69eadd7d4e5c9d4e69365ab9a",
      "tree": "d0efb2437f29835eb4fcdbc35a85d564c5e5bddc",
      "parents": [
        "e0b49868d3629708eda593b6739cb78f33ab238a"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Sun Jan 20 14:44:42 2013 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Fri Jan 25 17:32:46 2013 -0600"
      },
      "message": "rbd: small changes\n\nA few very minor changes to the rbd code:\n    - RBD_MAX_OPT_LEN is unused, so get rid of it\n    - Consolidate rbd options definitions\n    - Make rbd_segment_name() return pointer to const char\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Dan Mick \u003cdan.mick@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "1383923d1985cef2bceb8128094fbe5e05de7435",
      "tree": "f187b275201a3fb30db431f5bb83333377ea08dd",
      "parents": [
        "58c49df378cde4ff64172483d593a1a5689c13a8",
        "2681f7f6ce6c7416eb619d0fb19422bcc68bd9e1"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Jan 22 08:22:11 2013 -0700"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "axboe@kernel.dk",
        "time": "Tue Jan 22 08:22:11 2013 -0700"
      },
      "message": "Merge branch \u0027for-jens\u0027 of git://git.drbd.org/linux-drbd into for-linus\n"
    },
    {
      "commit": "0cb3d9c6ba53e104f6b8e4f6ff368ec510dee575",
      "tree": "e9f48dfece330443b8ab46fe58b5d22026e3ed7b",
      "parents": [
        "48b3de219129b642963a6fc2c9e7612585672abd"
      ],
      "author": {
        "name": "Kees Cook",
        "email": "keescook@chromium.org",
        "time": "Wed Jan 16 18:53:30 2013 -0800"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@linuxfoundation.org",
        "time": "Mon Jan 21 14:52:42 2013 -0800"
      },
      "message": "drivers/block/paride: remove depends on CONFIG_EXPERIMENTAL\n\nThe CONFIG_EXPERIMENTAL config item has not carried much meaning for a\nwhile now and is almost always enabled by default. As agreed during the\nLinux kernel summit, remove it from any \"depends on\" lines in Kconfigs.\n\nCC: Tim Waugh \u003ctim@cyberelk.net\u003e\nSigned-off-by: Kees Cook \u003ckeescook@chromium.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n"
    },
    {
      "commit": "2681f7f6ce6c7416eb619d0fb19422bcc68bd9e1",
      "tree": "31b6a1a1830c4c81d917b545e659c1f46bcc1218",
      "parents": [
        "d2ec180c23a5a1bfe34d8638b0342a47c00cf70f"
      ],
      "author": {
        "name": "Lars Ellenberg",
        "email": "lars.ellenberg@linbit.com",
        "time": "Mon Jan 21 15:43:41 2013 +0100"
      },
      "committer": {
        "name": "Philipp Reisner",
        "email": "philipp.reisner@linbit.com",
        "time": "Mon Jan 21 22:58:36 2013 +0100"
      },
      "message": "drbd: fix potential protocol error and resulting disconnect/reconnect\n\nWhen we notice a disk failure on the receiving side,\nwe stop sending it new incoming writes.\n\nDepending on exact timing of various events, the same transfer log epoch\ncould end up containing both replicated (before we noticed the failure)\nand local-only requests (after we noticed the failure).\n\nThe sanity checks in tl_release(), called when receiving a\nP_BARRIER_ACK, check that the ack\u0027ed transfer log epoch matches\nthe expected epoch, and the number of contained writes matches\nthe number of ack\u0027ed writes.\n\nIn this case, they counted both replicated and local-only writes,\nbut the peer only acknowledges those it has seen.  We get a mismatch,\nresulting in a protocol error and disconnect/reconnect cycle.\n\nMessages logged are\n  \"BAD! BarrierAck #%u received with n_writes\u003d%u, expected n_writes\u003d%u!\\n\"\n\nA similar issue can also be triggered when starting a resync while\nhaving a healthy replication link, by invalidating one side, forcing a\nfull sync, or attaching to a diskless node.\n\nFix this by closing the current epoch if the state changes in a way\nthat would cause the replication intent of the next write.\n\nEpochs now contain either only non-replicated,\nor only replicated writes.\n\nSigned-off-by: Philipp Reisner \u003cphilipp.reisner@linbit.com\u003e\nSigned-off-by: Lars Ellenberg \u003clars.ellenberg@linbit.com\u003e\n"
    },
    {
      "commit": "226364766f936d249e408de03821468c1bf11dda",
      "tree": "3b4feabb40a87f311ae92bb973c18293d05597e8",
      "parents": [
        "3a142ed962958d3063f648738a3384ab90017100",
        "1fb9341ac34825aa40354e74d9a2c69df7d2c304"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 20 16:44:28 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 20 16:44:28 2013 -0800"
      },
      "message": "Merge tag \u0027fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux\n\nPull module fixes and a virtio block fix from Rusty Russell:\n \"Various minor fixes, but a slightly more complex one to fix the\n  per-cpu overload problem introduced recently by kvm id changes.\"\n\n* tag \u0027fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux:\n  module: put modules in list much earlier.\n  module: add new state MODULE_STATE_UNFORMED.\n  module: prevent warning when finit_module a 0 sized file\n  virtio-blk: Don\u0027t free ida when disk is in use\n"
    },
    {
      "commit": "e0b49868d3629708eda593b6739cb78f33ab238a",
      "tree": "f9a5c0683f86bf5a102df3932cc1cc98472cad09",
      "parents": [
        "8b84de7940b69fd7326946ba244621aa5fc412e0"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed Jan 09 14:44:18 2013 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Jan 17 16:35:55 2013 -0600"
      },
      "message": "rbd: fix type of snap_id in rbd_dev_v2_snap_info()\n\nThe type of the snap_id local variable is defined with the\nwrong byte order.  Fix that.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "8b84de7940b69fd7326946ba244621aa5fc412e0",
      "tree": "e485144bdb7078a512c60e3c30dac24203fed047",
      "parents": [
        "5efea49a98d1a3b3a7301d3a17f826ad4c31b290"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue Nov 20 14:17:17 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Jan 17 16:34:59 2013 -0600"
      },
      "message": "rbd: assign watch request more directly\n\nBoth rbd_req_sync_op() and rbd_do_request() have a \"linger\"\nparameter, which is the address of a pointer that should refer to\nthe osd request structure used to issue a request to an osd.\n\nOnly one case ever supplies a non-null \"linger\" argument: an\nCEPH_OSD_OP_WATCH start.  And in that one case it is assigned\n\u0026rbd_dev-\u003ewatch_request.\n\nWithin rbd_do_request() (where the assignment ultimately gets made)\nwe know the rbd_dev and therefore its watch_request field.  We\nalso know whether the op being sent is CEPH_OSD_OP_WATCH start.\n\nStop opaquely passing down the \"linger\" pointer, and instead just\nassign the value directly inside rbd_do_request() when it\u0027s needed.\n\nThis makes it unnecessary for rbd_req_sync_watch() to make\narrangements to hold a value that\u0027s not available until a\nbit later.  This more clearly separates setting up a watch\nrequest from submitting it.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "5efea49a98d1a3b3a7301d3a17f826ad4c31b290",
      "tree": "3c85d7a5e3406b6eb95a7a4c7174acf45a45bf95",
      "parents": [
        "2647ba38100765298fc67ce1ec5d32e80d9fe046"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Mon Nov 19 22:55:21 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Jan 17 16:34:59 2013 -0600"
      },
      "message": "rbd: move remaining osd op setup into rbd_osd_req_op_create()\n\nThe two remaining osd ops used by rbd are CEPH_OSD_OP_WATCH and\nCEPH_OSD_OP_NOTIFY_ACK.  Move the setup of those operations into\nrbd_osd_req_op_create(), and get rid of rbd_create_rw_op() and\nrbd_destroy_op().\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "2647ba38100765298fc67ce1ec5d32e80d9fe046",
      "tree": "574306c5f9e670d94cc73e9b69f6a73d5cffe469",
      "parents": [
        "8d23bf29095e5fab84535035e7a27c4920812c44"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Mon Nov 19 22:55:21 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Jan 17 16:34:59 2013 -0600"
      },
      "message": "rbd: move call osd op setup into rbd_osd_req_op_create()\n\nMove the initialization of the CEPH_OSD_OP_CALL operation into\nrbd_osd_req_op_create().\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "8d23bf29095e5fab84535035e7a27c4920812c44",
      "tree": "c3b9b07fecc29a27798bd4ed5332f0fb2523bcb0",
      "parents": [
        "c561191813e232aa52022532751855ff5c9fa319"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Mon Nov 19 22:55:21 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Jan 17 16:34:58 2013 -0600"
      },
      "message": "rbd: don\u0027t assign extent info in rbd_req_sync_op()\n\nMove the assignment of the extent offset and length and payload\nlength out of rbd_req_sync_op() and into its caller in the one spot\nwhere a read (and note--no write) operation might be initiated.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "c561191813e232aa52022532751855ff5c9fa319",
      "tree": "b91e45b3a6c7d2c39901367bb1d56992247abd8e",
      "parents": [
        "1821665749a3d7e26ad470c63fc2c46990dc6041"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Mon Nov 19 22:55:21 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Jan 17 16:34:58 2013 -0600"
      },
      "message": "rbd: don\u0027t assign extent info in rbd_do_request()\n\nIn rbd_do_request() there\u0027s a sort of last-minute assignment of the\nextent offset and length and payload length for read and write\noperations.  Move those assignments into the caller (in those spots\nthat might initiate read or write operations)\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "1821665749a3d7e26ad470c63fc2c46990dc6041",
      "tree": "5bcb560bcb31abf5af0dc723ccc4485f6062e86f",
      "parents": [
        "2e53c6c379b65372df21f4d6019f6eb63af81384"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Fri Nov 30 09:59:47 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Jan 17 16:34:58 2013 -0600"
      },
      "message": "rbd: don\u0027t leak rbd_req for rbd_req_sync_notify_ack()\n\nWhen rbd_req_sync_notify_ack() calls rbd_do_request() it supplies\nrbd_simple_req_cb() as its callback function.  Because the callback\nis supplied, an rbd_req structure gets allocated and populated so it\ncan be used by the callback.  However rbd_simple_req_cb() is not\nfreeing (or even using) the rbd_req structure, so it\u0027s getting\nleaked.\n\nSince rbd_simple_req_cb() has no need for the rbd_req structure,\njust avoid allocating one for this case.  Of the three calls to\nrbd_do_request(), only the one from rbd_do_op() needs the rbd_req\nstructure, and that call can be distinguished from the other two\nbecause it supplies a non-null rbd_collection pointer.\n\nSo fix this leak by only allocating the rbd_req structure if a\nnon-null \"coll\" value is provided to rbd_do_request().\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "2e53c6c379b65372df21f4d6019f6eb63af81384",
      "tree": "8ce8eff65955717f60c9185b86351333d5fd37e0",
      "parents": [
        "907703d050df92979b3848ee42f88d5c9c6c13fe"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Fri Nov 30 09:59:47 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Jan 17 16:34:58 2013 -0600"
      },
      "message": "rbd: don\u0027t leak rbd_req on synchronous requests\n\nWhen rbd_do_request() is called it allocates and populates an\nrbd_req structure to hold information about the osd request to be\nsent.  This is done for the benefit of the callback function (in\nparticular, rbd_req_cb()), which uses this in processing when\nthe request completes.\n\nSynchronous requests provide no callback function, in which case\nrbd_do_request() waits for the request to complete before returning.\nThis case is not handling the needed free of the rbd_req structure\nlike it should, so it is getting leaked.\n\nNote however that the synchronous case has no need for the rbd_req\nstructure at all.  So rather than simply freeing this structure for\nsynchronous requests, just don\u0027t allocate it to begin with.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "907703d050df92979b3848ee42f88d5c9c6c13fe",
      "tree": "f8afc0441dcbb856b3c9d2df6f0c11e456aecaba",
      "parents": [
        "0903e875caa93e1fb231dd66c69b118dbdad25cb"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue Nov 13 21:11:15 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Jan 17 16:34:58 2013 -0600"
      },
      "message": "rbd: combine rbd sync watch/unwatch functions\n\nThe rbd_req_sync_watch() and rbd_req_sync_unwatch() functions are\nnearly identical.  Combine them into a single function with a flag\nindicating whether a watch is to be initiated or torn down.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "0903e875caa93e1fb231dd66c69b118dbdad25cb",
      "tree": "6af900cda01ebc6acdd5f76672a28973f1b323c7",
      "parents": [
        "47dba7ba2623b088cbbe1ac0aaa1a034f3249b6d"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed Nov 14 12:25:19 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Jan 17 16:34:58 2013 -0600"
      },
      "message": "rbd: use a common layout for each device\n\nEach osd message includes a layout structure, and for rbd it is\nalways the same (at least for osd\u0027s in a given pool).\n\nInitialize a layout structure when an rbd_dev gets created and just\ncopy that into osd requests for the rbd image.\n\nReplace an assertion that was done when initializing the layout\nstructures with code that catches and handles anything that would\ntrigger the assertion as soon as it is identified.  This precludes\nthat (bad) condition from ever occurring.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "47dba7ba2623b088cbbe1ac0aaa1a034f3249b6d",
      "tree": "5b9fb7fc6820dd917c9b6c034d4b35b6c1714204",
      "parents": [
        "e01e79273b251dbb35ff2522a688229b09481923"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed Nov 14 12:25:19 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Jan 17 16:34:58 2013 -0600"
      },
      "message": "rbd: don\u0027t bother calculating file mapping\n\nWhen rbd_do_request() has a request to process it initializes a ceph\nfile layout structure and uses it to compute offsets and limits for\nthe range of the request using ceph_calc_file_object_mapping().\n\nThe layout used is fixed, and is based on RBD_MAX_OBJ_ORDER (30).\nIt sets the layout\u0027s object size and stripe unit to be 1 GB (2^30),\nand sets the stripe count to be 1.\n\nThe job of ceph_calc_file_object_mapping() is to determine which\nof a sequence of objects will contain data covered by range, and\nwithin that object, at what offset the range starts.  It also\ntruncates the length of the range at the end of the selected object\nif necessary.\n\nThis is needed for ceph fs, but for rbd it really serves no purpose.\nIt does its own blocking of images into objects, echo of which is\n(1 \u003c\u003c obj_order) in size, and as a result it ignores the \"bno\"\nvalue returned by ceph_calc_file_object_mapping().  In addition,\nby the point a request has reached this function, it is already\ndestined for a single rbd object, and its length will not exceed\nthat object\u0027s extent.  Because of this, and because the mapping will\nresult in blocking up the range using an integer multiple of the\nimage\u0027s object order, ceph_calc_file_object_mapping() will never\nchange the offset or length values defined by the request.\n\nIn other words, this call is a big no-op for rbd data requests.\n\nThere is one exception.  We read the header object using this\nfunction, and in that case we will not have already limited the\nrequest size.  However, the header is a single object (not a file or\nrbd image), and should not be broken into pieces anyway.  So in fact\nwe should *not* be calling ceph_calc_file_object_mapping() when\noperating on the header object.\n\nSo...\n\nDon\u0027t call ceph_calc_file_object_mapping() in rbd_do_request(),\nbecause useless for image data and incorrect to do sofor the image\nheader.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "e01e79273b251dbb35ff2522a688229b09481923",
      "tree": "17d777bb0e28b151de4cdf41882ee1d7ba75e5b1",
      "parents": [
        "0829661863fb5c8031c1c5c119693ea157517783"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed Nov 14 12:25:18 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Jan 17 16:34:58 2013 -0600"
      },
      "message": "rbd: open code rbd_calc_raw_layout()\n\nThis patch gets rid of rbd_calc_raw_layout() by simply open coding\nit in its one caller.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "0829661863fb5c8031c1c5c119693ea157517783",
      "tree": "716416a4d4798a26e174a50563987796c82e12f1",
      "parents": [
        "2b5fc648af5eec2f4fe984cb6b926214e02c5cf4"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Wed Nov 14 12:25:18 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Jan 17 16:34:58 2013 -0600"
      },
      "message": "rbd: pull in ceph_calc_raw_layout()\n\nThis is the first in a series of patches aimed at eliminating\nthe use of ceph_calc_raw_layout() by rbd.\n\nIt simply pulls in a copy of that function and renames it\nrbd_calc_raw_layout().\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "30573d680355ca0de4db2113b9080cd078ac726f",
      "tree": "278614d752e98974105033537ecea18509b66442",
      "parents": [
        "139b4318ad93ae4370d88882ff89b42dcbfaaab1"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue Nov 13 21:11:15 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Jan 17 16:34:57 2013 -0600"
      },
      "message": "rbd: assume single op in a request\n\nWe now know that every of rbd_req_sync_op() passes an array of\nexactly one operation, as evidenced by all callers passing 1 as its\nnum_op argument.  So get rid of that argument, assuming a single op.\n\nSimilarly, we now know that all callers of rbd_do_request() pass 1\nas the num_op value, so that parameter can be eliminated as well.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "139b4318ad93ae4370d88882ff89b42dcbfaaab1",
      "tree": "e448ee200efdd64b54b6945b1c9ac190289babfd",
      "parents": [
        "ae7ca4a35b1f5df86e2c32b2cfc01a8d528c7b8c"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue Nov 13 21:11:15 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Jan 17 16:34:57 2013 -0600"
      },
      "message": "rbd: there is really only one op\n\nThroughout the rbd code there are spots where it appears we can\nhandle an osd request containing more than one osd request op.\n\nBut that is only the way it appears.  In fact, currently only one\noperation at a time can be supported, and supporting more than\none will require much more than fleshing out the support that\u0027s\nthere now.\n\nThis patch changes names to make it perfectly clear that anywhere\nwe\u0027re dealing with a block of ops, we\u0027re in fact dealing with\nexactly one of them.  We\u0027ll be able to simplify some things as\na result.\n\nWhen multiple op support is implemented, we can update things again\naccordingly.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "ae7ca4a35b1f5df86e2c32b2cfc01a8d528c7b8c",
      "tree": "a6dfed1fd8f50cf59cd72be27408f51ee621607c",
      "parents": [
        "d07c09589f533db9ab500ac38151bc9f3a4d0648"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue Nov 13 21:11:15 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Jan 17 16:34:57 2013 -0600"
      },
      "message": "libceph: pass num_op with ops\n\nBoth ceph_osdc_alloc_request() and ceph_osdc_build_request() are\nprovided an array of ceph osd request operations.  Rather than just\npassing the number of operations in the array, the caller is\nrequired append an additional zeroed operation structure to signal\nthe end of the array.\n\nAll callers know the number of operations at the time these\nfunctions are called, so drop the silly zero entry and supply that\nnumber directly.  As a result, get_num_ops() is no longer needed.\nThis also means that ceph_osdc_alloc_request() never uses its ops\nargument, so that can be dropped.\n\nAlso rbd_create_rw_ops() no longer needs to add one to reserve room\nfor the additional op.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "d07c09589f533db9ab500ac38151bc9f3a4d0648",
      "tree": "c306cebf88a941891d860d1e1648f77c65d88b2f",
      "parents": [
        "54a5400721da7fa5a16cea151aade5bdfee74111"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue Nov 13 21:11:15 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Jan 17 16:34:57 2013 -0600"
      },
      "message": "rbd: pass num_op with ops array\n\nAdd a num_op parameter to rbd_do_request() and rbd_req_sync_op() to\nindicate the number of entries in the array.  The callers of these\nfunctions always know how many entries are in the array, so just\npass that information down.\n\nThis is in anticipation of eliminating the extra zero-filled entry\nin these ops arrays.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "54a5400721da7fa5a16cea151aade5bdfee74111",
      "tree": "285ba131da6c5b700c0fda64858de938f45959c6",
      "parents": [
        "d178a9e74006e80f568d87e29f2a68f14fc7cbb1"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue Nov 13 21:11:15 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Jan 17 16:34:57 2013 -0600"
      },
      "message": "libceph: don\u0027t set pages or bio in ceph_osdc_alloc_request()\n\nOnly one of the two callers of ceph_osdc_alloc_request() provides\npage or bio data for its payload.  And essentially all that function\nwas doing with those arguments was assigning them to fields in the\nosd request structure.\n\nSimplify ceph_osdc_alloc_request() by having the caller take care of\nmaking those assignments\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    },
    {
      "commit": "d178a9e74006e80f568d87e29f2a68f14fc7cbb1",
      "tree": "a7f59f104771c9ad4ed4f2d86d7e3a2299e932a8",
      "parents": [
        "e75b45cf36565fd8ba206a9d80f670a86e61ba2f"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Tue Nov 13 21:11:15 2012 -0600"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "elder@inktank.com",
        "time": "Thu Jan 17 15:52:05 2013 -0600"
      },
      "message": "libceph: don\u0027t set flags in ceph_osdc_alloc_request()\n\nThe only thing ceph_osdc_alloc_request() really does with the\nflags value it is passed is assign it to the newly-created\nosd request structure.  Do that in the caller instead.\n\nBoth callers subsequently call ceph_osdc_build_request(), so have\nthat function (instead of ceph_osdc_alloc_request()) issue a warning\nif a request comes through with neither the read nor write flags set.\n\nSigned-off-by: Alex Elder \u003celder@inktank.com\u003e\nReviewed-by: Josh Durgin \u003cjosh.durgin@inktank.com\u003e\n"
    }
  ],
  "next": "e75b45cf36565fd8ba206a9d80f670a86e61ba2f"
}
