)]}'
{
  "log": [
    {
      "commit": "d7dbf4ffee1c7a17e2e5b5f01efe76fbd1671db6",
      "tree": "2f4eda25c0c9eb6de1e573dba92b4d23fc383db5",
      "parents": [
        "677abe49ad017679627af9d3bbd9a7ecb3d94c42",
        "d240e06713007bba309b074a386b7072b73c31a6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 07:47:00 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 07:47:00 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2: (23 commits)\n  nilfs2: disallow remount of snapshot from/to a regular mount\n  nilfs2: use huge_encode_dev/huge_decode_dev\n  nilfs2: update comment on deactivate_super at nilfs_get_sb\n  nilfs2: replace MS_VERBOSE with MS_SILENT\n  nilfs2: add missing initialization of s_mode\n  nilfs2: fix misuse of open_bdev_exclusive/close_bdev_exclusive\n  nilfs2: enlarge s_volume_name member in nilfs_super_block\n  nilfs2: use checkpoint number instead of timestamp to select super block\n  nilfs2: add missing endian conversion on super block magic number\n  nilfs2: make nilfs_sc_*_ops static\n  nilfs2: add kernel doc comments to persistent object allocator functions\n  nilfs2: change sc_timer from a pointer to an embedded one in struct nilfs_sc_info\n  nilfs2: remove nilfs_segctor_init() in segment.c\n  nilfs2: insert checkpoint number in segment summary header\n  nilfs2: add a print message after loading nilfs2\n  nilfs2: cleanup multi kmem_cache_{create,destroy} code\n  nilfs2: move out checksum routines to segment buffer code\n  nilfs2: move pointer to super root block into logs\n  nilfs2: change default of \u0027errors\u0027 mount option to \u0027remount-ro\u0027 mode\n  nilfs2: Combine nilfs_btree_release_path() and nilfs_btree_free_path()\n  ...\n"
    },
    {
      "commit": "677abe49ad017679627af9d3bbd9a7ecb3d94c42",
      "tree": "7cdb7fbc95b51b288e923a3978e17ed2207a4118",
      "parents": [
        "e90e4d9234c953b29267cc4fc9ad804128773313",
        "6a99be5d7b5973767b1ffa4fa68fed0738589c99"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 07:29:15 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 07:29:15 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw:\n  GFS2: Fix typo\n  GFS2: stuck in inode wait, no glocks stuck\n  GFS2: Eliminate useless err variable\n  GFS2: Fix writing to non-page aligned gfs2_quota structures\n  GFS2: Add some useful messages\n  GFS2: fix quota state reporting\n  GFS2: Various gfs2_logd improvements\n  GFS2: glock livelock\n  GFS2: Clean up stuffed file copying\n  GFS2: docs update\n  GFS2: Remove space from slab cache name\n"
    },
    {
      "commit": "e90e4d9234c953b29267cc4fc9ad804128773313",
      "tree": "cd35351fa453a32ea5bd11089428e35c12049c0b",
      "parents": [
        "05ec7dd8dd5aa42c22a49682e4a51cadd4166b7e",
        "89d799d008710e048ee14df4f4e5441e9f4d5d50"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 07:28:02 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 07:28:02 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm:\n  dlm: fix ast ordering for user locks\n  dlm: cleanup remove unused code\n"
    },
    {
      "commit": "05ec7dd8dd5aa42c22a49682e4a51cadd4166b7e",
      "tree": "6370b43c0d8f324aa7421bbb5a647aa04ab5d747",
      "parents": [
        "c316ba3b518bc35ce5aef5421135220389f4eb98",
        "8046112818b70329e930b1d4557ef0876c1ad2bb"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 07:25:43 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 07:25:43 2010 -0700"
      },
      "message": "Merge git://git.infradead.org/mtd-2.6\n\n* git://git.infradead.org/mtd-2.6: (154 commits)\n  mtd: cfi_cmdset_0002: use AMD standard command-set with Winbond flash chips\n  mtd: cfi_cmdset_0002: Fix MODULE_ALIAS and linkage for new 0701 commandset ID\n  mtd: mxc_nand: Remove duplicate NAND_CMD_RESET case value\n  mtd: update gfp/slab.h includes\n  jffs2: Stop triggering block erases from jffs2_write_super()\n  jffs2: Rename jffs2_erase_pending_trigger() to jffs2_dirty_trigger()\n  jffs2: Use jffs2_garbage_collect_trigger() to trigger pending erases\n  jffs2: Require jffs2_garbage_collect_trigger() to be called with lock held\n  jffs2: Wake GC thread when there are blocks to be erased\n  jffs2: Erase pending blocks in GC pass, avoid invalid -EIO return\n  jffs2: Add \u0027work_done\u0027 return value from jffs2_erase_pending_blocks()\n  mtd: mtdchar: Do not corrupt backing device of device node inode\n  mtd/maps/pcmciamtd: Fix printk format for ssize_t in debug messages\n  drivers/mtd: Use kmemdup\n  mtd: cfi_cmdset_0002: Fix argument order in bootloc warning\n  mtd: nand: add Toshiba TC58NVG0 device ID\n  pcmciamtd: add another ID\n  pcmciamtd: coding style cleanups\n  pcmciamtd: fixing obvious errors\n  mtd: chips: add SST39WF160x NOR-flashes\n  ...\n\nTrivial conflicts due to dev_node removal in drivers/mtd/maps/pcmciamtd.c\n"
    },
    {
      "commit": "777cb1b53dd11dbec6157adc97e9f908f6e8458c",
      "tree": "a7fd28bcbb9196dba327cf56dfceb3b057360a00",
      "parents": [
        "277a4ed1df42134f66503db837e40f0b583ec63d",
        "2fde99cb55fb9d9b88180512a5e8a5d939d27fec"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 07:22:42 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 07:22:42 2010 -0700"
      },
      "message": "Merge branch \u0027linux-next\u0027 of git://git.infradead.org/ubifs-2.6\n\n* \u0027linux-next\u0027 of git://git.infradead.org/ubifs-2.6:\n  UBIFS: mark VFS SB RO too\n"
    },
    {
      "commit": "277a4ed1df42134f66503db837e40f0b583ec63d",
      "tree": "9f3107c51fa9d45ff35f8bc5f68306440b0b2948",
      "parents": [
        "03e62303cf56e87337115f14842321043df2b4bb",
        "e9cee8e6549b669080e9a7d02b8387086a5c911d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 07:22:11 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 07:22:11 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs\n\n* \u0027for-linus\u0027 of git://oss.sgi.com/xfs/xfs: (54 commits)\n  xfs: mark xfs_iomap_write_ helpers static\n  xfs: clean up end index calculation in xfs_page_state_convert\n  xfs: clean up mapping size calculation in __xfs_get_blocks\n  xfs: clean up xfs_iomap_valid\n  xfs: move I/O type flags into xfs_aops.c\n  xfs: kill struct xfs_iomap\n  xfs: report iomap_bn in block base\n  xfs: report iomap_offset and iomap_bsize in block base\n  xfs: remove iomap_delta\n  xfs: remove iomap_target\n  xfs: limit xfs_imap_to_bmap to a single mapping\n  xfs: simplify buffer to transaction matching\n  xfs: Make fiemap work in query mode.\n  xfs: kill off l_sectbb_mask\n  xfs: record log sector size rather than log2(that)\n  xfs: remove dead XFS_LOUD_RECOVERY code\n  xfs: removed unused XFS_QMOPT_ flags\n  xfs: remove a few macro indirections in the quota code\n  xfs: access quotainfo structure directly\n  xfs: wait for direct I/O to complete in fsync and write_inode\n  ...\n"
    },
    {
      "commit": "03e62303cf56e87337115f14842321043df2b4bb",
      "tree": "3024495955beccddbae347d99613bcdd33801ee4",
      "parents": [
        "33cf23b0a535475aead57707cb9f4fe135a93544",
        "18d3a98f3c1b0e27ce026afa4d1ef042f2903726"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 07:20:17 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 07:20:17 2010 -0700"
      },
      "message": "Merge branch \u0027upstream-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2\n\n* \u0027upstream-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2: (47 commits)\n  ocfs2: Silence a gcc warning.\n  ocfs2: Don\u0027t retry xattr set in case value extension fails.\n  ocfs2:dlm: avoid dlm-\u003east_lock lockres-\u003espinlock dependency break\n  ocfs2: Reset xattr value size after xa_cleanup_value_truncate().\n  fs/ocfs2/dlm: Use kstrdup\n  fs/ocfs2/dlm: Drop memory allocation cast\n  Ocfs2: Optimize punching-hole code.\n  Ocfs2: Make ocfs2_find_cpos_for_left_leaf() public.\n  Ocfs2: Fix hole punching to correctly do CoW during cluster zeroing.\n  Ocfs2: Optimize ocfs2 truncate to use ocfs2_remove_btree_range() instead.\n  ocfs2: Block signals for mkdir/link/symlink/O_CREAT.\n  ocfs2: Wrap signal blocking in void functions.\n  ocfs2/dlm: Increase o2dlm lockres hash size\n  ocfs2: Make ocfs2_extend_trans() really extend.\n  ocfs2/trivial: Code cleanup for allocation reservation.\n  ocfs2: make ocfs2_adjust_resv_from_alloc simple.\n  ocfs2: Make nointr a default mount option\n  ocfs2/dlm: Make o2dlm domain join/leave messages KERN_NOTICE\n  o2net: log socket state changes\n  ocfs2: print node # when tcp fails\n  ...\n"
    },
    {
      "commit": "7a9b149212f3716c598afe973b6261fd58453b7a",
      "tree": "477716d84c71da124448b72278e98da28aadbd3d",
      "parents": [
        "3d62e3fdce8ef265a3706c52ae1ca6ab84e30f0e",
        "e26bcf37234c67624f62d9fc95f922b8dbda1363"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 20 21:26:12 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 20 21:26:12 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6: (229 commits)\n  USB: remove unused usb_buffer_alloc and usb_buffer_free macros\n  usb: musb: update gfp/slab.h includes\n  USB: ftdi_sio: fix legacy SIO-device header\n  USB: kl5usb105: reimplement using generic framework\n  USB: kl5usb105: minor clean ups\n  USB: kl5usb105: fix memory leak\n  USB: io_ti: use kfifo to implement write buffering\n  USB: io_ti: remove unsused private counter\n  USB: ti_usb: use kfifo to implement write buffering\n  USB: ir-usb: fix incorrect write-buffer length\n  USB: aircable: fix incorrect write-buffer length\n  USB: safe_serial: straighten out read processing\n  USB: safe_serial: reimplement read using generic framework\n  USB: safe_serial: reimplement write using generic framework\n  usb-storage: always print quirks\n  USB: usb-storage: trivial debug improvements\n  USB: oti6858: use port write fifo\n  USB: oti6858: use kfifo to implement write buffering\n  USB: cypress_m8: use kfifo to implement write buffering\n  USB: cypress_m8: remove unused drain define\n  ...\n\nFix up conflicts (due to usb_buffer_alloc/free renaming) in\n\tdrivers/input/tablet/acecad.c\n\tdrivers/input/tablet/kbtab.c\n\tdrivers/input/tablet/wacom_sys.c\n\tdrivers/media/video/gspca/gspca.c\n\tsound/usb/usbaudio.c\n"
    },
    {
      "commit": "f8965467f366fd18f01feafb5db10512d7b4422c",
      "tree": "3706a9cd779859271ca61b85c63a1bc3f82d626e",
      "parents": [
        "a26272e5200765691e67d6780e52b32498fdb659",
        "2ec8c6bb5d8f3a62a79f463525054bae1e3d4487"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 20 21:04:44 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 20 21:04:44 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1674 commits)\n  qlcnic: adding co maintainer\n  ixgbe: add support for active DA cables\n  ixgbe: dcb, do not tag tc_prio_control frames\n  ixgbe: fix ixgbe_tx_is_paused logic\n  ixgbe: always enable vlan strip/insert when DCB is enabled\n  ixgbe: remove some redundant code in setting FCoE FIP filter\n  ixgbe: fix wrong offset to fc_frame_header in ixgbe_fcoe_ddp\n  ixgbe: fix header len when unsplit packet overflows to data buffer\n  ipv6: Never schedule DAD timer on dead address\n  ipv6: Use POSTDAD state\n  ipv6: Use state_lock to protect ifa state\n  ipv6: Replace inet6_ifaddr-\u003edead with state\n  cxgb4: notify upper drivers if the device is already up when they load\n  cxgb4: keep interrupts available when the ports are brought down\n  cxgb4: fix initial addition of MAC address\n  cnic: Return SPQ credit to bnx2x after ring setup and shutdown.\n  cnic: Convert cnic_local_flags to atomic ops.\n  can: Fix SJA1000 command register writes on SMP systems\n  bridge: fix build for CONFIG_SYSFS disabled\n  ARCNET: Limit com20020 PCI ID matches for SOHARD cards\n  ...\n\nFix up various conflicts with pcmcia tree drivers/net/\n{pcmcia/3c589_cs.c, wireless/orinoco/orinoco_cs.c and\nwireless/orinoco/spectrum_cs.c} and feature removal\n(Documentation/feature-removal-schedule.txt).\n\nAlso fix a non-content conflict due to pm_qos_requirement getting\nrenamed in the PM tree (now pm_qos_request) in net/mac80211/scan.c\n"
    },
    {
      "commit": "8120a8aadb2059e29982561658bc6675126f8105",
      "tree": "1e05b58df0397b76c7ad1543d2af21e746e44369",
      "parents": [
        "22c43c81a51e05f61e90445ceb59d486c12fd921"
      ],
      "author": {
        "name": "Michal Nazarewicz",
        "email": "m.nazarewicz@samsung.com",
        "time": "Wed May 05 12:53:12 2010 +0200"
      },
      "committer": {
        "name": "Greg Kroah-Hartman",
        "email": "gregkh@suse.de",
        "time": "Thu May 20 13:21:42 2010 -0700"
      },
      "message": "fs/timerfd.c: make use of wait_event_interruptible_locked_irq()\n\nThis patch modifies the fs/timerfd.c to use the newly created\nwait_event_interruptible_locked_irq() macro.  This replaces an open\ncode implementation with a single macro call.\n\nSigned-off-by: Michal Nazarewicz \u003cm.nazarewicz@samsung.com\u003e\nCc: Kyungmin Park \u003ckyungmin.park@samsung.com\u003e\nCc: Marek Szyprowski \u003cm.szyprowski@samsung.com\u003e\nCc: Alexander Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Roland Dreier \u003crolandd@cisco.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Davide Libenzi \u003cdavidel@xmailserver.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@suse.de\u003e\n\n"
    },
    {
      "commit": "f39d01be4c59a61a08d0cb53f615e7016b85d339",
      "tree": "6777590e3ff2ddf4df1d38444ba7d692cd463b7b",
      "parents": [
        "54291263519ac2c9bdda68b23b02fef3808deed4",
        "7db82437cfcac4bdfe79a6323eb554fdfa271623"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 20 09:20:59 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 20 09:20:59 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (44 commits)\n  vlynq: make whole Kconfig-menu dependant on architecture\n  add descriptive comment for TIF_MEMDIE task flag declaration.\n  EEPROM: max6875: Header file cleanup\n  EEPROM: 93cx6: Header file cleanup\n  EEPROM: Header file cleanup\n  agp: use NULL instead of 0 when pointer is needed\n  rtc-v3020: make bitfield unsigned\n  PCI: make bitfield unsigned\n  jbd2: use NULL instead of 0 when pointer is needed\n  cciss: fix shadows sparse warning\n  doc: inode uses a mutex instead of a semaphore.\n  uml: i386: Avoid redefinition of NR_syscalls\n  fix \"seperate\" typos in comments\n  cocbalt_lcdfb: correct sections\n  doc: Change urls for sparse\n  Powerpc: wii: Fix typo in comment\n  i2o: cleanup some exit paths\n  Documentation/: it\u0027s -\u003e its where appropriate\n  UML: Fix compiler warning due to missing task_struct declaration\n  UML: add kernel.h include to signal.c\n  ...\n"
    },
    {
      "commit": "46ee9645094ad1eb5b4888882ecaa1fb87dcd2a3",
      "tree": "d0a48e993568b6a2415cfc21fc06eaa2fd886429",
      "parents": [
        "fa5312d9e87e7222c6c384c4e930dc149bc1178d",
        "25f3a5a2854dce8b8413fd24cc9d5b9e3632be54"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 20 09:03:55 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 20 09:03:55 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/suspend-2.6:\n  PM: PM QOS update fix\n  Freezer / cgroup freezer: Update stale locking comments\n  PM / platform_bus: Allow runtime PM by default\n  i2c: Fix bus-level power management callbacks\n  PM QOS update\n  PM / Hibernate: Fix block_io.c printk warning\n  PM / Hibernate: Group swap ops\n  PM / Hibernate: Move the first_sector out of swsusp_write\n  PM / Hibernate: Separate block_io\n  PM / Hibernate: Snapshot cleanup\n  FS / libfs: Implement simple_write_to_buffer\n  PM / Hibernate: document open(/dev/snapshot) side effects\n  PM / Runtime: Add sysfs debug files\n  PM: Improve device power management document\n  PM: Update device power management document\n  PM: Allow runtime_suspend methods to call pm_schedule_suspend()\n  PM: pm_wakeup - switch to using bool\n"
    },
    {
      "commit": "96b5b7f4f2d59b37c1fc2fba1ae25999accd6dcd",
      "tree": "cda421c6cd7533940b35504660a05a366a3ece0c",
      "parents": [
        "f72caf7e496465182eeda842ac66a5e75404ddf1",
        "539c99fd7fc28f8db257c713c10fb4aceadf8887"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 20 08:55:50 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 20 08:55:50 2010 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6: (61 commits)\n  KEYS: Return more accurate error codes\n  LSM: Add __init to fixup function.\n  TOMOYO: Add pathname grouping support.\n  ima: remove ACPI dependency\n  TPM: ACPI/PNP dependency removal\n  security/selinux/ss: Use kstrdup\n  TOMOYO: Use stack memory for pending entry.\n  Revert \"ima: remove ACPI dependency\"\n  Revert \"TPM: ACPI/PNP dependency removal\"\n  KEYS: Do preallocation for __key_link()\n  TOMOYO: Use mutex_lock_interruptible.\n  KEYS: Better handling of errors from construct_alloc_key()\n  KEYS: keyring_serialise_link_sem is only needed for keyring-\u003ekeyring links\n  TOMOYO: Use GFP_NOFS rather than GFP_KERNEL.\n  ima: remove ACPI dependency\n  TPM: ACPI/PNP dependency removal\n  selinux: generalize disabling of execmem for plt-in-heap archs\n  LSM Audit: rename LSM_AUDIT_NO_AUDIT to LSM_AUDIT_DATA_NONE\n  CRED: Holding a spinlock does not imply the holding of RCU read lock\n  SMACK: Don\u0027t #include Ext2 headers\n  ...\n"
    },
    {
      "commit": "f72caf7e496465182eeda842ac66a5e75404ddf1",
      "tree": "682e2e4b34d6240ea5dbc516d368dd14b21de182",
      "parents": [
        "6a6be470c3071559970c5659354484d4f664050e",
        "e4e83ea47babd9d4bf95a13aed87f8ef51e46472"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 19 17:24:54 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 19 17:24:54 2010 -0700"
      },
      "message": "Merge branch \u0027for-2.6.35\u0027 of git://linux-nfs.org/~bfields/linux\n\n* \u0027for-2.6.35\u0027 of git://linux-nfs.org/~bfields/linux: (45 commits)\n  Revert \"nfsd4: distinguish expired from stale stateids\"\n  nfsd: safer initialization order in find_file()\n  nfs4: minor callback code simplification, comment\n  NFSD: don\u0027t report compiled-out versions as present\n  nfsd4: implement reclaim_complete\n  nfsd4: nfsd4_destroy_session must set callback client under the state lock\n  nfsd4: keep a reference count on client while in use\n  nfsd4: mark_client_expired\n  nfsd4: introduce nfs4_client.cl_refcount\n  nfsd4: refactor expire_client\n  nfsd4: extend the client_lock to cover cl_lru\n  nfsd4: use list_move in move_to_confirmed\n  nfsd4: fold release_session into expire_client\n  nfsd4: rename sessionid_lock to client_lock\n  nfsd4: fix bare destroy_session null dereference\n  nfsd4: use local variable in nfs4svc_encode_compoundres\n  nfsd: further comment typos\n  sunrpc: centralise most calls to svc_xprt_received\n  nfsd4: fix unlikely race in session replay case\n  nfsd4: fix filehandle comment\n  ...\n"
    },
    {
      "commit": "6a6be470c3071559970c5659354484d4f664050e",
      "tree": "d4b335e863e426acad96fe5e4bce2e3e064abc32",
      "parents": [
        "98c89cdd3a292af3451e47a2a33132f5183861b0",
        "126e216a8730532dfb685205309275f87e3d133e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 19 17:24:05 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 19 17:24:05 2010 -0700"
      },
      "message": "Merge branch \u0027nfs-for-2.6.35\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6\n\n* \u0027nfs-for-2.6.35\u0027 of git://git.linux-nfs.org/projects/trondmy/nfs-2.6: (78 commits)\n  SUNRPC: Don\u0027t spam gssd with upcall requests when the kerberos key expired\n  SUNRPC: Reorder the struct rpc_task fields\n  SUNRPC: Remove the \u0027tk_magic\u0027 debugging field\n  SUNRPC: Move the task-\u003etk_bytes_sent and tk_rtt to struct rpc_rqst\n  NFS: Don\u0027t call iput() in nfs_access_cache_shrinker\n  NFS: Clean up nfs_access_zap_cache()\n  NFS: Don\u0027t run nfs_access_cache_shrinker() when the mask is GFP_NOFS\n  SUNRPC: Ensure rpcauth_prune_expired() respects the nr_to_scan parameter\n  SUNRPC: Ensure memory shrinker doesn\u0027t waste time in rpcauth_prune_expired()\n  SUNRPC: Dont run rpcauth_cache_shrinker() when gfp_mask is GFP_NOFS\n  NFS: Read requests can use GFP_KERNEL.\n  NFS: Clean up nfs_create_request()\n  NFS: Don\u0027t use GFP_KERNEL in rpcsec_gss downcalls\n  NFSv4: Don\u0027t use GFP_KERNEL allocations in state recovery\n  SUNRPC: Fix xs_setup_bc_tcp()\n  SUNRPC: Replace jiffies-based metrics with ktime-based metrics\n  ktime: introduce ktime_to_ms()\n  SUNRPC: RPC metrics and RTT estimator should use same RTT value\n  NFS: Calldata for nfs4_renew_done()\n  NFS: Squelch compiler warning in nfs_add_server_stats()\n  ...\n"
    },
    {
      "commit": "98c89cdd3a292af3451e47a2a33132f5183861b0",
      "tree": "cfad77bcfd2d04fb0b9326a859803a1ab90b0757",
      "parents": [
        "164d44fd92e79d5bce54d0d62df9f856f7b23925",
        "99df95a22f7cfcf85405d4edc07c2d953542f0dd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 19 17:23:28 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed May 19 17:23:28 2010 -0700"
      },
      "message": "Merge branch \u0027bkl/procfs\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing\n\n* \u0027bkl/procfs\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing:\n  sunrpc: Include missing smp_lock.h\n  procfs: Kill the bkl in ioctl\n  procfs: Push down the bkl from ioctl\n  procfs: Use generic_file_llseek in /proc/vmcore\n  procfs: Use generic_file_llseek in /proc/kmsg\n  procfs: Use generic_file_llseek in /proc/kcore\n  procfs: Kill BKL in llseek on proc base\n"
    },
    {
      "commit": "9723152ad1efb844445e63f052e6d39e85e11649",
      "tree": "9abe25074d3c64f06859f0cba3b33c758a91d090",
      "parents": [
        "64a5c2eb82d2a626116fde8a0ea3bb39a3f4f233"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "joakim.tjernlund@transmode.se",
        "time": "Wed May 19 17:16:11 2010 +0100"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Wed May 19 17:16:11 2010 +0100"
      },
      "message": "jffs2: Stop triggering block erases from jffs2_write_super()\n\nThis is the culmination of this sequence of patches. By moving the block\nerasing from jffs2_write_super() into the GC code, we avoid huge\nlatencies on unmount where it waits for _all_ pending blocks to be\nerased, and we allow better control for time-critical tasks by stopping\nthe GC thread.\n\nSigned-off-by: Joakim Tjernlund \u003cjoakim.tjernlund@transmode.se\u003e\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\n"
    },
    {
      "commit": "64a5c2eb82d2a626116fde8a0ea3bb39a3f4f233",
      "tree": "2c3df4e9dbee07c56b9edd01a700f1d8a4329d0d",
      "parents": [
        "ae3b6ba06c8ed399ef920724ee8136e540878294"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "joakim.tjernlund@transmode.se",
        "time": "Wed May 19 17:13:19 2010 +0100"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Wed May 19 17:15:36 2010 +0100"
      },
      "message": "jffs2: Rename jffs2_erase_pending_trigger() to jffs2_dirty_trigger()\n\nNow that we do erases from GC and trigger the GC thread to do them\ninstead of using kupdated, this function is misnamed. It\u0027s only used\nfor triggering wbuf flush on NAND flash now. Rename it accordingly.\n\nSigned-off-by: Joakim Tjernlund \u003cjoakim.tjernlund@transmode.se\u003e\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\n"
    },
    {
      "commit": "ae3b6ba06c8ed399ef920724ee8136e540878294",
      "tree": "427f89ac31defa7b3114c50ab706c0f6df539136",
      "parents": [
        "acb64a43e4503fbea9faf123f2403da7af8831eb"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Wed May 19 17:05:14 2010 +0100"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Wed May 19 17:10:44 2010 +0100"
      },
      "message": "jffs2: Use jffs2_garbage_collect_trigger() to trigger pending erases\n\nThis is now done in a GC pass; we don\u0027t need to trigger kupdated to do it.\n\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\n"
    },
    {
      "commit": "acb64a43e4503fbea9faf123f2403da7af8831eb",
      "tree": "862d5ad6530b7c8671bda96a1bd1d07179f0b7c9",
      "parents": [
        "d6ce171069635f05737935adc813b4d48d71a583"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Wed May 19 17:00:10 2010 +0100"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Wed May 19 17:10:22 2010 +0100"
      },
      "message": "jffs2: Require jffs2_garbage_collect_trigger() to be called with lock held\n\nWe\u0027re about to call this from a bunch of places which already hold\nc-\u003eerase_completion_lock, so add an assertion and change its existing\ncallers to do the same.\n\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\n"
    },
    {
      "commit": "d6ce171069635f05737935adc813b4d48d71a583",
      "tree": "b0356df55a3d86cf9f5074ea926294fd3a206607",
      "parents": [
        "0717bf8411bb673dd2369aaa096f7396446b38f5"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "joakim.tjernlund@transmode.se",
        "time": "Wed May 19 16:55:40 2010 +0100"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Wed May 19 16:55:40 2010 +0100"
      },
      "message": "jffs2: Wake GC thread when there are blocks to be erased\n\nNow that we trigger block erases from jffs2_garbage_collect_pass(),\nadjust jffs2_thread_should_wake() to return 1 when there are blocks to\nerase.\n\nSigned-off-by: Joakim Tjernlund \u003cjoakim.tjernlund@transmode.se\u003e\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\n"
    },
    {
      "commit": "0717bf8411bb673dd2369aaa096f7396446b38f5",
      "tree": "5106504557aae93a018bf3a5692ce9b0558e857e",
      "parents": [
        "9957abea31aed5783d6ca7175cce553045c0eb19"
      ],
      "author": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Wed May 19 16:37:13 2010 +0100"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Wed May 19 16:49:37 2010 +0100"
      },
      "message": "jffs2: Erase pending blocks in GC pass, avoid invalid -EIO return\n\njffs2_garbage_collect_pass() would previously return -EAGAIN if it\ncouldn\u0027t find anything to garbage collect from, and there were blocks on\nthe erase_pending_list. If the blocks were actually in the process of\nbeing erased, though, then they wouldn\u0027t be on that list. Check for\nnr_erasing_blocks being non-zero instead.\n\nFix jffs2_reserve_space() to wait for the in-progress erases to\ncomplete, when jffs2_garbage_collect_pass() returns -EAGAIN.\n\nAnd fix jffs2_erase_succeeded() to actually wake up the erase_wait wq\nthat jffs2_reserve_space() is now using.\n\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\n"
    },
    {
      "commit": "9957abea31aed5783d6ca7175cce553045c0eb19",
      "tree": "7497a0b8c69426a5344cc2ddd6f211213886bf09",
      "parents": [
        "cd874237d97f24f601f16a140d20803b6a79202e"
      ],
      "author": {
        "name": "Joakim Tjernlund",
        "email": "joakim.tjernlund@transmode.se",
        "time": "Wed May 19 16:32:52 2010 +0100"
      },
      "committer": {
        "name": "David Woodhouse",
        "email": "David.Woodhouse@intel.com",
        "time": "Wed May 19 16:32:52 2010 +0100"
      },
      "message": "jffs2: Add \u0027work_done\u0027 return value from jffs2_erase_pending_blocks()\n\nWe\u0027re about to start calling this from the jffs2_garbage_collect_pass(), and\nwe\u0027ll want to know whether it actually did anything or not.\n\nSigned-off-by: Joakim Tjernlund \u003cjoakim.tjernlund@transmode.se\u003e\nSigned-off-by: David Woodhouse \u003cDavid.Woodhouse@intel.com\u003e\n"
    },
    {
      "commit": "e9cee8e6549b669080e9a7d02b8387086a5c911d",
      "tree": "292ee423003343833a9f0f6dbf7f870b977b8b1e",
      "parents": [
        "537b60d17894b7c19a6060feae40299d7109d6e7",
        "b4ed4626a9775cd8cb77209280d24839526f94f2"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:59:23 2010 -0500"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:59:23 2010 -0500"
      },
      "message": "Merge branch \u0027master\u0027 into for-linus\n"
    },
    {
      "commit": "b4ed4626a9775cd8cb77209280d24839526f94f2",
      "tree": "4269213c71d0e20d5c383c8a0947ce897cea8ac5",
      "parents": [
        "bd1556a146d46070049428dded306829cb65161d"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:29:01 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:20 2010 -0500"
      },
      "message": "xfs: mark xfs_iomap_write_ helpers static\n\nAnd also drop a useless argument to xfs_iomap_write_direct.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "bd1556a146d46070049428dded306829cb65161d",
      "tree": "3ce3c35fb3359a83766a0442156cee692479037b",
      "parents": [
        "2b8f12b7e438fa6ba4a0f8f861871be0beb3a3e6"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:29:00 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:20 2010 -0500"
      },
      "message": "xfs: clean up end index calculation in xfs_page_state_convert\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "2b8f12b7e438fa6ba4a0f8f861871be0beb3a3e6",
      "tree": "8528d14896aef2e8718fd9edc4fc716d7815ae3f",
      "parents": [
        "558e6891693f4c383c51c7343a88dea174eadacf"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:59 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:19 2010 -0500"
      },
      "message": "xfs: clean up mapping size calculation in __xfs_get_blocks\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "558e6891693f4c383c51c7343a88dea174eadacf",
      "tree": "df7512d1f97fb4557d920d3ceb566dee256c1a7c",
      "parents": [
        "34a52c6c064fb9f1fd1310407ce076a4bb049734"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:58 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:19 2010 -0500"
      },
      "message": "xfs: clean up xfs_iomap_valid\n\nRename all iomap_valid identifiers to imap_valid to fit the new\nworld order, and clean up xfs_iomap_valid to convert the passed in\noffset to blocks instead of the imap values to bytes.  Use the\nsimpler inode-\u003ei_blkbits instead of the XFS macros for this.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "34a52c6c064fb9f1fd1310407ce076a4bb049734",
      "tree": "2b05a8d21f644ab733f7e242971bd0314c46b355",
      "parents": [
        "207d041602cead1c1a16288f6225aea9da1f5bc4"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:57 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:17 2010 -0500"
      },
      "message": "xfs: move I/O type flags into xfs_aops.c\n\nThe IOMAP_ flags are now only used inside xfs_aops.c for extent\nprobing and I/O completion tracking, so more them here, and rename\nthem to IO_* as there\u0027s no mapping involved at all.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "207d041602cead1c1a16288f6225aea9da1f5bc4",
      "tree": "ad6149735c8bc0c5d112e301e6e17dac6280dcb6",
      "parents": [
        "e513182d4d7ec8f1870ae368c549ef2838e2c105"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:56 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:17 2010 -0500"
      },
      "message": "xfs: kill struct xfs_iomap\n\nNow that struct xfs_iomap contains exactly the same units as struct\nxfs_bmbt_irec we can just use the latter directly in the aops code.\nReplace the missing IOMAP_NEW flag with a new boolean output\nparameter to xfs_iomap.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "e513182d4d7ec8f1870ae368c549ef2838e2c105",
      "tree": "1dc543b7f798c4826684bf2a0a5d83bd363f246f",
      "parents": [
        "8699bb0a480193e62d5ccb9c86e2c26b407090a8"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:55 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:17 2010 -0500"
      },
      "message": "xfs: report iomap_bn in block base\n\nReport the iomap_bn field of struct xfs_iomap in terms of filesystem\nblocks instead of in terms of bytes.  Shift the byte conversions\ninto the caller, and replace the IOMAP_DELAY and IOMAP_HOLE flag\nchecks with checks for HOLESTARTBLOCK and DELAYSTARTBLOCK.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "8699bb0a480193e62d5ccb9c86e2c26b407090a8",
      "tree": "aabcc9cd0800cf5c0d0605d46a104ed825f90db6",
      "parents": [
        "9563b3d8998c78d5b7e718b546d5f68037c494fe"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:54 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:17 2010 -0500"
      },
      "message": "xfs: report iomap_offset and iomap_bsize in block base\n\nReport the iomap_offset and iomap_bsize fields of struct xfs_iomap\nin terms of fsblocks instead of in terms of disk blocks.  Shift the\nbyte conversions into the callers temporarily, but they will\ndisappear or get cleaned up later.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "9563b3d8998c78d5b7e718b546d5f68037c494fe",
      "tree": "f614d05139491b129515443855e80eb0c562157b",
      "parents": [
        "046f1685bb5211c3dea74fda0198c19171e9abc9"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:53 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:17 2010 -0500"
      },
      "message": "xfs: remove iomap_delta\n\nThe iomap_delta field in struct xfs_iomap just contains the\ndifference between the offset passed to xfs_iomap and the\niomap_offset.  Just calculate it in the only caller that cares.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "046f1685bb5211c3dea74fda0198c19171e9abc9",
      "tree": "3d01a53802173f26cd0475c74344b598f855e8f2",
      "parents": [
        "826bf0adce0cddd9c94c2706b63d181dfc5cdaaa"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:52 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:16 2010 -0500"
      },
      "message": "xfs: remove iomap_target\n\nInstead of using the iomap_target field in struct xfs_iomap\nand the IOMAP_REALTIME flag just use the already existing\nxfs_find_bdev_for_inode helper.  There\u0027s some fallout as we\nneed to pass the inode in a few more places, which we also\nuse to sanitize some calling conventions.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "826bf0adce0cddd9c94c2706b63d181dfc5cdaaa",
      "tree": "7176db312e0090040e9798f2c7e6371bb78eedd7",
      "parents": [
        "4a5224d7b167e5470ad34e5b1b6965a16f87854f"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Wed Apr 28 12:28:51 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:16 2010 -0500"
      },
      "message": "xfs: limit xfs_imap_to_bmap to a single mapping\n\nWe only call xfs_iomap for single mappings anyway, so remove all\ncode dealing with multiple mappings from xfs_imap_to_bmap and add\nasserts that we never get results that we do not expect.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "4a5224d7b167e5470ad34e5b1b6965a16f87854f",
      "tree": "e8bf743db2f294389e8bc1f36cd54179cbd63f1c",
      "parents": [
        "2d1ff3c75a4642062d314634290be6d8da4ffb03"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Sun Apr 18 00:10:45 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:16 2010 -0500"
      },
      "message": "xfs: simplify buffer to transaction matching\n\nWe currenly have a routine xfs_trans_buf_item_match_all which checks\nif any log item in a transaction contains a given buffer, and a\nsecond one that only does this check for the first, embedded chunk\nof log items.  We only use the second routine if we know we only\nhave that log item chunk, so get rid of the limited routine and\nalways use the more complete one.\n\nAlso rename the old xfs_trans_buf_item_match_all to\nxfs_trans_buf_item_match and update various surrounding comments,\nand move the remaining xfs_trans_buf_item_match on top of the file\nto avoid a forward prototype.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "2d1ff3c75a4642062d314634290be6d8da4ffb03",
      "tree": "1112feee61ad0c7653c6877d04397b4949c46471",
      "parents": [
        "48389ef17583f2214bbd2c119b3015677419c16b"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu Apr 29 15:13:56 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:16 2010 -0500"
      },
      "message": "xfs: Make fiemap work in query mode.\n\nAccording to Documentation/filesystems/fiemap.txt, If fm_extent_count\nis zero, then the fm_extents[] array is ignored (no extents will be\nreturned), and the fm_mapped_extents count will hold the number of\nextents needed.\n\nBut as the commit 97db39a1f6f69e906e98118392400de5217aa33a has changed\nbmv_count to the caller\u0027s input buffer, this number query function can\u0027t\nwork any more. As this commit is written to change bmv_count from\nMAXEXTNUM because of ENOMEM.\n\nThis patch just try to  set bm.bmv_count to something sane.\nThanks to Dave Chinner \u003cdavid@fromorbit.com\u003e for the suggestion.\n\nCc: Eric Sandeen \u003csandeen@redhat.com\u003e\nCc: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\n"
    },
    {
      "commit": "48389ef17583f2214bbd2c119b3015677419c16b",
      "tree": "ff6b8e0cf45cb4e32e77a6ae0a9fa18c845a5ca3",
      "parents": [
        "69ce58f08a3c455ff74cfcde90e9ab267d67f636"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Apr 20 17:10:21 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:16 2010 -0500"
      },
      "message": "xfs: kill off l_sectbb_mask\n\nThere remains only one user of the l_sectbb_mask field in the log\nstructure.  Just kill it off and compute the mask where needed from\nthe power-of-2 sector size.\n\n(Only update from last post is to accomodate the changes in the\nprevious patch in the series.)\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n\n"
    },
    {
      "commit": "69ce58f08a3c455ff74cfcde90e9ab267d67f636",
      "tree": "0a5a8be3222d8138f382b492b96888c61041dd76",
      "parents": [
        "1414a6046ab402ac21545522270c32c576327eb9"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Apr 20 17:09:59 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:15 2010 -0500"
      },
      "message": "xfs: record log sector size rather than log2(that)\n\nChange struct log so it keeps track of the size (in basic blocks) of\na log sector in l_sectBBsize rather than the log-base-2 of that\nvalue (previously, l_sectbb_log).  The name was chosen for\nconsistency with the other fields in the structure that represent\na number of basic blocks.\n\n(Updated so that a variable used in computing and verifying a log\u0027s\nsector size is named \"log2_size\".  Also added the \"BB\" to the\nstructure field name, based on feedback from Eric Sandeen.  Also\ndropped some superfluous parentheses.)\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Eric Sandeen \u003csandeen@sandeen.net\u003e\n\n"
    },
    {
      "commit": "1414a6046ab402ac21545522270c32c576327eb9",
      "tree": "2e1364e818bef8a05cb442503e4224b7c7a9d6a4",
      "parents": [
        "8112e9dc6d1494078122146647981bc02a452d6a"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Apr 20 17:02:50 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:15 2010 -0500"
      },
      "message": "xfs: remove dead XFS_LOUD_RECOVERY code\n\nThis can\u0027t be enabled through the build system and has been dead for\nages.  Note that the CRC patches add back log checksumming, but the\ncode is quite different from the version removed here anyway.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n\n"
    },
    {
      "commit": "8112e9dc6d1494078122146647981bc02a452d6a",
      "tree": "7b1822bcb4ab62b6b7f12b2447a550dae2366c5f",
      "parents": [
        "191f8488f9f7600a96e1500ee2ee74a407e2eb1c"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Apr 20 17:02:29 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:15 2010 -0500"
      },
      "message": "xfs: removed unused XFS_QMOPT_ flags\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n\n"
    },
    {
      "commit": "191f8488f9f7600a96e1500ee2ee74a407e2eb1c",
      "tree": "23dbc84d31563e64ff60d99a2974727ca3bf8e42",
      "parents": [
        "8a7b8a89a3ae5b510396cdcc821698d4aa20afcf"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Apr 20 17:01:53 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:15 2010 -0500"
      },
      "message": "xfs: remove a few macro indirections in the quota code\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n\n"
    },
    {
      "commit": "8a7b8a89a3ae5b510396cdcc821698d4aa20afcf",
      "tree": "c64b285dfc53091a258319c82571431c25b85921",
      "parents": [
        "37bc5743fdc29f60fb104cd9031babbabddff25a"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Apr 20 17:01:30 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:14 2010 -0500"
      },
      "message": "xfs: access quotainfo structure directly\n\nAccess fields in m_quotainfo directly instead of hiding them behind the\nXFS_QI_* macros.  Add local variables for the quotainfo pointer in places\nwhere we have lots of them.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n\n"
    },
    {
      "commit": "37bc5743fdc29f60fb104cd9031babbabddff25a",
      "tree": "abbcde46a9741a40a0ced8d1f289f6af65725d15",
      "parents": [
        "fce1cad651e3cf2779ed8f9e6608daf50d29daaf"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Apr 20 17:00:59 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:14 2010 -0500"
      },
      "message": "xfs: wait for direct I/O to complete in fsync and write_inode\n\nWe need to wait for all pending direct I/O requests before taking care of\nmetadata in fsync and write_inode.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n\n"
    },
    {
      "commit": "fce1cad651e3cf2779ed8f9e6608daf50d29daaf",
      "tree": "cbd2eba102e09c48a1f7795ba95f2fbd287d9b2e",
      "parents": [
        "3f943d853d6ce6d808e7362e4444c7ed5f692357"
      ],
      "author": {
        "name": "Andrea Gelmini",
        "email": "andrea.gelmini@gelma.net",
        "time": "Thu Mar 25 17:22:41 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:14 2010 -0500"
      },
      "message": "xfs: xfs_trace.c: duplicated include\n\nfs/xfs/linux-2.6/xfs_trace.c: xfs_attr_sf.h is included more than once.\n\nSigned-off-by: Andrea Gelmini \u003candrea.gelmini@gelma.net\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "3f943d853d6ce6d808e7362e4444c7ed5f692357",
      "tree": "78ade96089353117fbcacd2a2e7297af9e652115",
      "parents": [
        "e3bb2e30d532b00a9bdda997e174a9f9916cb1c0"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu Apr 15 18:17:34 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:14 2010 -0500"
      },
      "message": "xfs: minor odds and ends in xfs_log_recover.c\n\nOdds and ends in \"xfs_log_recover.c\".  This patch just contains some\nminor things that didn\u0027t seem to warrant their own individual\npatches:\n- In xlog_bread_noalign(), drop an assertion that a pointer is\n  non-null (the crash will tell us it was a bad pointer).\n- Add a more descriptive header comment for xlog_find_verify_cycle().\n- Make a few additions to the comments in xlog_find_head().  Also\n  rearrange some expressions in a few spots to produce the same\n  result, but in a way that seems more clear what\u0027s being computed.\n\n(Updated in response to Dave\u0027s review comments.  Note I did not\nsplit this patch like I said I would.)\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "e3bb2e30d532b00a9bdda997e174a9f9916cb1c0",
      "tree": "33d82124eb213877450072f6fa1df6dbf05be7bf",
      "parents": [
        "9db127edb54048707eb84517eb0573e597a2370a"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu Apr 15 18:17:30 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:14 2010 -0500"
      },
      "message": "xfs: avoid repeated pointer dereferences\n\nIn xlog_find_cycle_start() use a local variable for some repeated\noperations rather than constantly accessing the memory location\nwhose address is passed in.\n\n(This version drops an assertion that a pointer is non-null.)\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "9db127edb54048707eb84517eb0573e597a2370a",
      "tree": "b8c9a1a0646305cd87fe41001460fbc7bbdf7706",
      "parents": [
        "8c38366f99f83a7fa441e0c0669fefc18615e005"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Thu Apr 15 18:17:26 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:13 2010 -0500"
      },
      "message": "xfs: change a few labels in xfs_log_recover.c\n\nRename a label used in xlog_find_head() that I thought was poorly\nchosen.  Also combine two adjacent labels xlog_find_tail() into a\nsingle label, and give it a more generic name.\n\n(Now using Dave\u0027s suggested \"validate_head\" name for first label.)\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "8c38366f99f83a7fa441e0c0669fefc18615e005",
      "tree": "05789fdea7c34b1b6f29151b6a13bd49f3c6fec9",
      "parents": [
        "df308bcfec27e0c6bc83715dfd417caff5c33f19"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Mar 12 10:59:40 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:13 2010 -0500"
      },
      "message": "xfs: enforce synchronous writes in xfs_bwrite\n\nxfs_bwrite is used with the intention of synchronously writing out\nbuffers, but currently it does not actually clear the async flag if\nthat\u0027s left from previous writes but instead implements async\nbehaviour if it finds it.  Remove the code handling asynchronous\nwrites as we\u0027ve got rid of those entirely outside of the log and\ndelwri buffers, and make sure that we clear the async and read flags\nbefore writing the buffer.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "df308bcfec27e0c6bc83715dfd417caff5c33f19",
      "tree": "558d5b910a4de3cbb36b44eeca1e1f619f2cddf3",
      "parents": [
        "f983710758218c7aad4aae3e40a7312a21d6f55a"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Fri Mar 12 10:59:16 2010 +0000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:13 2010 -0500"
      },
      "message": "xfs: remove periodic superblock writeback\n\nAll modifications to the superblock are done transactional through\nxfs_trans_log_buf, so there is no reason to initiate periodic\nasynchronous writeback.  This only removes the superblock from the\ndelwri list and will lead to sub-optimal I/O scheduling.\n\nCut down xfs_sync_fsdata now that it\u0027s only used for synchronous\nsuperblock writes and move the log coverage checks into the two\ncallers.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\n"
    },
    {
      "commit": "f983710758218c7aad4aae3e40a7312a21d6f55a",
      "tree": "c4647b60e06338c730ebaf0d65ed696cce5e1e68",
      "parents": [
        "36adecff50b69df0369cc2022650c6087aeb255f"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Wed Apr 14 15:47:55 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:13 2010 -0500"
      },
      "message": "xfs: make the log ticket transaction id random\n\nThe transaction ID that is written to the log for a transaction is\ncurrently set by taking the lower 32 bits of the memory address of\nthe ticket structure.  This is not guaranteed to be unique as\ntickets comes from a slab and slots can be reallocated immediately\nafter being freed. As a result, there is no guarantee of uniqueness\nin the ticket ID value.\n\nFix this by assigning a random number to the ticket ID field so that\nit is extremely unlikely that duplicates will occur and remove the\npossibility of transactions being mixed up during recovery due to\nduplicate IDs.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n\n"
    },
    {
      "commit": "36adecff50b69df0369cc2022650c6087aeb255f",
      "tree": "88341430b367a7b106c8eddcaaa90f1ffd2812db",
      "parents": [
        "ff30a6221d95b609a37410a425937b11a55d465e"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Apr 13 15:21:13 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:12 2010 -0500"
      },
      "message": "xfs: nothing special about 1-block log sector\n\nThere are a number of places where a log sector size of 1 uses\nspecial case code.  The round_up() and round_down() macros\nproduce the correct result even when the log sector size is 1, and\nthis eliminates the need for treating this as a special case.\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n\n"
    },
    {
      "commit": "ff30a6221d95b609a37410a425937b11a55d465e",
      "tree": "548b8949adc08b8d96c73953f28b3ba7fc2afe31",
      "parents": [
        "5c17f5339f9dfdee8ad9661e97f8030d75b6bff7"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Apr 13 15:22:58 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:12 2010 -0500"
      },
      "message": "xfs: encapsulate bbcount validity checking\n\nDefine a function that encapsulates checking the validity of a log\nblock count.\n\n(Updated from previous version--no longer includes error reporting in the\nencapsulated validation function.)\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n"
    },
    {
      "commit": "5c17f5339f9dfdee8ad9661e97f8030d75b6bff7",
      "tree": "27a32181d8c185a12c81af30f2a1bb1b93efbabc",
      "parents": [
        "8511998baaf541710f457315958cef0d0a7864a1"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Apr 13 15:22:48 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:12 2010 -0500"
      },
      "message": "xfs: kill XLOG_SECTOR_ROUND*()\n\nXLOG_SECTOR_ROUNDUP_BBCOUNT() and XLOG_SECTOR_ROUNDDOWN_BLKNO()\nare now fairly simple macro translations.  Just get rid of them in\nfavor of the round_up() and round_down() macro calls they represent.\n\nAlso, in spots in xlog_get_bp() and xlog_write_log_records(),\nround_up() was being called with value 1, which just evaluates\nto the macro\u0027s second argument; so just use that instead.\nIn the latter case, make use of that value, as long as it\u0027s\nalready been computed.\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "8511998baaf541710f457315958cef0d0a7864a1",
      "tree": "b7ac320a8e0d7b150bb1a72055f1e08d9a7aef39",
      "parents": [
        "6881a229f66f74e4e0a73504389695213987955b"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Apr 13 15:22:40 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:12 2010 -0500"
      },
      "message": "xfs: simplify XLOG_SECTOR_ROUND*()\n\nXLOG_SECTOR_ROUNDUP_BBCOUNT() is defined in \"fs/xfs/xfs_log_recover.c\"\nin an overly-complicated way.  It is basically roundup(), but that\nis not at all clear from its definition.  (Actually, there is\nanother macro round_up() that applies for power-of-two-based masks\nwhich I\u0027ll be using here.)\n\nThe operands in XLOG_SECTOR_ROUNDUP_BBCOUNT() are basically the\nblock number (bbs) and the log sector basic block mask\n(log-\u003el_sectbb_mask).  I\u0027ll call them B and M for this discussion.\n\nThe macro computes is value this way:\n\tM \u0026\u0026 (B \u0026 M) ? (B + M + 1) \u0026 ~M : B\n\nPut another way, we can break it into 3 cases:\n\t1)  ! M          -\u003e B\t\t\t# 0 mask, no effect\n\t2)  ! (B \u0026 M)    -\u003e B\t\t\t# sector aligned\n\t3)  M \u0026\u0026 (B \u0026 M) -\u003e (B + M + 1) \u0026 ~M\t# round up otherwise\n\nThe round_up() macro is cleverly defined using a value, v, and a\npower-of-2, p, and the result is the nearest multiple of p greater\nthan or equal to v.  Its value is computed something like this:\n\t((v - 1) | (p - 1)) + 1\nLet\u0027s consider using this in the context of the 3 cases above.\n\nWhen p \u003d 2^0 \u003d 1, the result boils down to ((v - 1) | 0) + 1, so it\njust translates any value v to itself.  That handles case (1) above.\n\nWhen p \u003d 2^n, n \u003e 0, we know that (p - 1) will be a mask with all n\nbits 0..n-1 set.  The condition in this case occurs when none of\nthose mask bits is set in the value v provided.  If that is the\ncase, subtracting 1 from v will have 1\u0027s in all those lower bits (at\nleast).  Therefore, OR-ing the mask with that decremented value has\nno effect, so adding the 1 back again will just translate the v to\nitself.  This handles case (2).\n\nOtherwise, the value v is greater than some multiple of p, and\ndecrementing it will produce a result greater than or equal to that\nmultiple.  OR-ing in the mask will produce a value 1 less than the\nnext multiple of p, so finally adding 1 back will result in the\ndesired rounded-up value.  This handles case (3).\n\nHopefully this is convincing.\n\nWhile I was at it, I converted XLOG_SECTOR_ROUNDDOWN_BLKNO() to use\nthe round_down() macro.\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "6881a229f66f74e4e0a73504389695213987955b",
      "tree": "8faf52f576ab7bfc49712cfd98c49d23a596a98b",
      "parents": [
        "a0e856b0b4d182c4c52b568bd04bd96a172247a7"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Apr 13 15:22:29 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:12 2010 -0500"
      },
      "message": "xfs: fix min bufsize bugs in two places\n\nThis fixes a bug in two places that I found by inspection.  In\nxlog_find_verify_cycle() and xlog_write_log_records(), the code\nattempts to allocate a buffer to hold as many blocks as possible.\nIt gives up if the number of blocks to be allocated gets too small.\nRight now it uses log-\u003el_sectbb_log as that lower bound, but I\u0027m\nsure it\u0027s supposed to be the actual log sector size instead.  That\nis, the lower bound should be (1 \u003c\u003c log-\u003el_sectbb_log).\n\nAlso define a simple macro xlog_sectbb(log) to represent the number\nof basic blocks in a sector for the given log.\n\n(No change from original submission; I have implemented Christoph\u0027s\nsuggestion about storing l_sectsize rather than l_sectbb_log in\na new, separate patch in this series.)\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "a0e856b0b4d182c4c52b568bd04bd96a172247a7",
      "tree": "ae8c3d988dc84d42dc69a045bc16566a25377c82",
      "parents": [
        "74457cf4a3e0f0634679aa6c22d967e9e8b26479"
      ],
      "author": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Tue Apr 13 15:22:08 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:11 2010 -0500"
      },
      "message": "xfs: add const qualifiers to xfs error function args\n\nChange the tag and file name arguments to xfs_error_report() and\nxfs_corruption_error() to use a const qualifier.\n\nSigned-off-by: Alex Elder \u003caelder@sgi.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "74457cf4a3e0f0634679aa6c22d967e9e8b26479",
      "tree": "3603ed6ff918ce43087ce76d60604698e1b08d51",
      "parents": [
        "3a8406f6d6916e8211936edb9e1193123df2daab"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Apr 13 15:06:53 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:11 2010 -0500"
      },
      "message": "xfs: remove xfs_dqmarker\n\nThe xfs_dqmarker structure does not need to exist anymore. Move the\nremaining flags field out of it and remove the structure altogether.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n"
    },
    {
      "commit": "3a8406f6d6916e8211936edb9e1193123df2daab",
      "tree": "53f490a433ef3bd2f430ef19cdfbbe5dc514e89d",
      "parents": [
        "e6a81f13aa9aa20ef03174210aed24791865b05e"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Apr 13 15:06:52 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:11 2010 -0500"
      },
      "message": "xfs: convert the dquot free list to use list heads\n\nConvert the dquot free list on the filesystem to use listhead\ninfrastructure rather than the roll-your-own in the quota code.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n\n"
    },
    {
      "commit": "e6a81f13aa9aa20ef03174210aed24791865b05e",
      "tree": "727202721a225004e2522f32278de294c3748e70",
      "parents": [
        "368e136174344c417bad6ff0380b7b3f574bf120"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Apr 13 15:06:51 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:11 2010 -0500"
      },
      "message": "xfs: convert the dquot hash list to use list heads\n\nConvert the dquot hash list on the filesystem to use listhead\ninfrastructure rather than the roll-your-own in the quota code.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "368e136174344c417bad6ff0380b7b3f574bf120",
      "tree": "1718f3e35b42adbaabf5a65062f2d3f5ecf1ac43",
      "parents": [
        "3a25404b3fccd41d36b2fda18d86011201608c38"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Apr 13 15:06:50 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:11 2010 -0500"
      },
      "message": "xfs: remove duplicate code from dquot reclaim\n\nThe dquot shaker and the free-list reclaim code use exactly the same\nalgorithm but the code is duplicated and slightly different in each\ncase. Make the shaker code use the single dquot reclaim code to\nremove the code duplication.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "3a25404b3fccd41d36b2fda18d86011201608c38",
      "tree": "28979d8581760327c16a3389a2eb8752ed3f0665",
      "parents": [
        "9abbc539bf7f299819ad0a235064a1b643ab6407"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Apr 13 15:06:48 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:10 2010 -0500"
      },
      "message": "xfs: convert the per-mount dquot list to use list heads\n\nConvert the dquot list on the filesytesm to use listhead\ninfrastructure rather than the roll-your-own in the quota code.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "9abbc539bf7f299819ad0a235064a1b643ab6407",
      "tree": "0c15d4f4933bce3a1a1db19509f4993ce2e46286",
      "parents": [
        "e6b1f27370fc67ac9868b2dbe2c22bc26952900e"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Apr 13 15:06:46 2010 +1000"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:10 2010 -0500"
      },
      "message": "xfs: add log item recovery tracing\n\nCurrently there is no tracing in log recovery, so it is difficult to\ndetermine what is going on when something goes wrong.\n\nAdd tracing for log item recovery to provide visibility into the log\nrecovery process. The tracing added shows regions being extracted\nfrom the log transactions and added to the transaction hash forming\nrecovery items, followed by the reordering, cancelling and finally\nrecovery of the items.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "e6b1f27370fc67ac9868b2dbe2c22bc26952900e",
      "tree": "69485365ff6b9f22a56bcfc4814b27b45622d6e9",
      "parents": [
        "55b66332d0921146a914d5d75a7b870a65dc4938"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Mar 23 11:47:38 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:10 2010 -0500"
      },
      "message": "xfs: clean up xlog_write_adv_cnt\n\nReplace the awkward xlog_write_adv_cnt with an inline helper that makes\nit more obvious that it\u0027s modifying it\u0027s paramters, and replace the use\nof an integer type for \"ptr\" with a real void pointer.  Also move\nxlog_write_adv_cnt to xfs_log_priv.h as it will be used outside of\nxfs_log.c in the delayed logging series.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "55b66332d0921146a914d5d75a7b870a65dc4938",
      "tree": "254f130969b118cc777371691e892db20e96b5a6",
      "parents": [
        "99428ad0f665a5d5b245ab36cefb6b231d977e73"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 23 11:43:17 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:10 2010 -0500"
      },
      "message": "xfs: introduce new internal log vector structure\n\nThe current log IO vector structure is a flat array and not\nextensible. To make it possible to keep separate log IO vectors for\nindividual log items, we need a method of chaining log IO vectors\ntogether.\n\nIntroduce a new log vector type that can be used to wrap the\nexisting log IO vectors on use that internally to the log. This\nmeans that the existing external interface (xfs_log_write) does not\nchange and hence no changes to the transaction commit code are\nrequired.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "99428ad0f665a5d5b245ab36cefb6b231d977e73",
      "tree": "3a6f9f59428f3134f7127b6543970c45baa5faab",
      "parents": [
        "b5203cd0a43c17dfb9d498bc9e3146624e8c9622"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Tue Mar 23 11:35:45 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:10 2010 -0500"
      },
      "message": "xfs: reindent xlog_write\n\nReindent xlog_write to normal one tab indents and move all variable\ndeclarations into the closest enclosing block.\n\nSplit from a bigger patch by Dave Chinner.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "b5203cd0a43c17dfb9d498bc9e3146624e8c9622",
      "tree": "ce779712f4419aa238e0bf3a919ecc4010953fea",
      "parents": [
        "9b9fc2b7602ed671d1a8524d4c31302b89554947"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 23 11:29:44 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:09 2010 -0500"
      },
      "message": "xfs: factor xlog_write\n\nxlog_write is a mess that takes a lot of effort to understand. It is\na mass of nested loops with 4 space indents to get it to fit in 80 columns\nand lots of funky variables that aren\u0027t obvious what they mean or do.\n\nBreak it down into understandable chunks.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Dave Chinner \u003cdchinner@redhat.com\u003e\n\n"
    },
    {
      "commit": "9b9fc2b7602ed671d1a8524d4c31302b89554947",
      "tree": "866a68bb120cf08a09e573fe013ba0e121a2224b",
      "parents": [
        "b1c1b5b6108ad8e5991a614514f41da436c659d6"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 23 11:21:11 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:09 2010 -0500"
      },
      "message": "xfs: log ticket reservation underestimates the number of iclogs\n\nWhen allocation a ticket for a transaction, the ticket is initialised with the\nworst case log space usage based on the number of bytes the transaction may\nconsume. Part of this calculation is the number of log headers required for the\niclog space used up by the transaction.\n\nThis calculation makes an undocumented assumption that if the transaction uses\nthe log header space reservation on an iclog, then it consumes either the\nentire iclog or it completes. That is - the transaction that is first in an\niclog is the transaction that the log header reservation is accounted to. If\nthe transaction is larger than the iclog, then it will use the entire iclog\nitself. Document this assumption.\n\nFurther, the current calculation uses the rule that we can fit iclog_size bytes\nof transaction data into an iclog. This is in correct - the amount of space\navailable in an iclog for transaction data is the size of the iclog minus the\nspace used for log record headers. This means that the calculation is out by\n512 bytes per 32k of log space the transaction can consume. This is rarely an\nissue because maximally sized transactions are extremely uncommon, and for 4k\nblock size filesystems maximal transaction reservations are about 400kb. Hence\nthe error in this case is less than the size of an iclog, so that makes it even\nharder to hit.\n\nHowever, anyone using larger directory blocks (16k directory blocks push the\nmaximum transaction size to approx. 900k on a 4k block size filesystem) or\nlarger block size (e.g. 64k blocks push transactions to the 3-4MB size) could\nsee the error grow to more than an iclog and at this point the transaction is\nguaranteed to get a reservation underrun and shutdown the filesystem.\n\nFix this by adjusting the calculation to calculate the correct number of iclogs\nrequired and account for them all up front.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "b1c1b5b6108ad8e5991a614514f41da436c659d6",
      "tree": "fea56bd29b112eb18985c22745d99063ed19cd0e",
      "parents": [
        "8e646a55ac69fe620b9e84034c03dd1e8e16a36b"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 23 10:11:05 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:09 2010 -0500"
      },
      "message": "xfs: Clean up xfs_trans_committed code after factoring\n\nNow that the code has been factored, clean up all the remaining\nstyle cruft, simplify the code and re-order functions so that it\ndoesn\u0027t need forward declarations.\n\nAlso move the remaining functions that require forward declarations\n(xfs_trans_uncommit, xfs_trans_free) so that all the forward\ndeclarations can be removed from the file.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "8e646a55ac69fe620b9e84034c03dd1e8e16a36b",
      "tree": "b1bd02109c34888cf8e75f2569fc574858d03169",
      "parents": [
        "a3ccd2ca43d5cdfe0b256be02957dc5f47ec4c39"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 08 15:06:22 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:09 2010 -0500"
      },
      "message": "xfs: update and factor xfs_trans_committed()\n\nThe function header to xfs-trans_committed has long had this\ncomment:\n\n * THIS SHOULD BE REWRITTEN TO USE xfs_trans_next_item()\n\nTo prepare for different methods of committing items, convert the\ncode to use xfs_trans_next_item() and factor the code into smaller,\nmore digestible chunks.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "a3ccd2ca43d5cdfe0b256be02957dc5f47ec4c39",
      "tree": "08b6a0b911c5f1ba45ce9e61754f1db8331a0f72",
      "parents": [
        "0924378a689ccb05f6d60875742dc28f69bf0129"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@infradead.org",
        "time": "Mon Mar 15 12:52:49 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:08 2010 -0500"
      },
      "message": "xfs: clean up xfs_trans_commit logic even more\n\n\u003e +shut_us_down:\n\u003e +\tshutdown \u003d XFS_FORCED_SHUTDOWN(mp) ? EIO : 0;\n\u003e +\tif (!(tp-\u003et_flags \u0026 XFS_TRANS_DIRTY) || shutdown) {\n\u003e +\t\txfs_trans_unreserve_and_mod_sb(tp);\n\u003e +\t\t/*\n\nThis whole area in _xfs_trans_commit is still a complete mess.\n\nSo while touching this code, unravel this mess as well to make the\nwhole flow of the function simpler and clearer.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n"
    },
    {
      "commit": "0924378a689ccb05f6d60875742dc28f69bf0129",
      "tree": "8d6933bff18ac9f4670395673e38dad94fedd998",
      "parents": [
        "713bf88bba55b8dd91a18e8a59b0f97bf9b0f5de"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 08 11:28:28 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:08 2010 -0500"
      },
      "message": "xfs: split out iclog writing from xfs_trans_commit()\n\nSplit the the part of xfs_trans_commit() that deals with writing the\ntransaction into the iclog into a separate function. This isolates the\nphysical commit process from the logical commit operation and makes\nit easier to insert different transaction commit paths without affecting\nthe existing algorithm adversely.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "713bf88bba55b8dd91a18e8a59b0f97bf9b0f5de",
      "tree": "8f309ced7d77f10408bc4224e490cca475c4f948",
      "parents": [
        "8e123850863366b738d6dfb9a84045018ff038fc"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 08 11:26:23 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:08 2010 -0500"
      },
      "message": "xfs: fix reservation release commit flag in xfs_bmap_add_attrfork()\n\nxfs_bmap_add_attrfork() passes XFS_TRANS_PERM_LOG_RES to xfs_trans_commit()\nto indicate that the commit should release the permanent log reservation\nas part of the commit. This is wrong - the correct flag is\nXFS_TRANS_RELEASE_LOG_RES - and it is only by the chance that both these\nflags have the value of 0x4 that the code is doing the right thing.\n\nFix it by changing to use the correct flag.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "8e123850863366b738d6dfb9a84045018ff038fc",
      "tree": "ffa0185553c55d235b920e5ff384310be33034c6",
      "parents": [
        "4aaf15d1aa9673dd2cc45c48957c946cb4aa2694"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 08 11:26:03 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:08 2010 -0500"
      },
      "message": "xfs: remove stale parameter from -\u003eiop_unpin method\n\nThe staleness of a object being unpinned can be directly derived\nfrom the object itself - there is no need to extract it from the\nobject then pass it as a parameter into IOP_UNPIN().\n\nThis means we can kill the XFS_LID_BUF_STALE flag - it is set,\nchecked and cleared in the same places XFS_BLI_STALE flag in the\nxfs_buf_log_item so it is now redundant and hence safe to remove.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "4aaf15d1aa9673dd2cc45c48957c946cb4aa2694",
      "tree": "aec24df27ca9cde2d359b77f9ac97f8ad44a1baa",
      "parents": [
        "43f5efc5b59db1b66e39fe9fdfc4ba6a27152afa"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Mon Mar 08 11:24:07 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:08 2010 -0500"
      },
      "message": "xfs: Add inode pin counts to traces\n\nWe don\u0027t record pin counts in inode events right now, and this makes\nit difficult to track down problems related to pinning inodes. Add\nthe pin count to the inode trace class and add trace events for\npinning and unpinning inodes.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "43f5efc5b59db1b66e39fe9fdfc4ba6a27152afa",
      "tree": "100e2b49e622e6933d8f88e052076e23bd943ae1",
      "parents": [
        "e2a07812e93d4a51b1b1a6f15145a1634948db47"
      ],
      "author": {
        "name": "Dave Chinner",
        "email": "dchinner@redhat.com",
        "time": "Tue Mar 23 10:10:00 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:07 2010 -0500"
      },
      "message": "xfs: factor log item initialisation\n\nEach log item type does manual initialisation of the log item.\nDelayed logging introduces new fields that need initialisation, so\nfactor all the open coded initialisation into a common function\nfirst.\n\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nReviewed-by: Christoph Hellwig \u003chch@lst.de\u003e\n"
    },
    {
      "commit": "e2a07812e93d4a51b1b1a6f15145a1634948db47",
      "tree": "2d13997492891384df9cbbd472296f2cb17f18d7",
      "parents": [
        "fda168c24586ab8e01b0eb68028d78fe3e4fb71a"
      ],
      "author": {
        "name": "Jan Engelhardt",
        "email": "jengelh@medozas.de",
        "time": "Tue Mar 23 09:52:55 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:07 2010 -0500"
      },
      "message": "xfs: add blockdev name to kthreads\n\nThis allows to see in `ps` and similar tools which kthreads are\nallotted to which block device/filesystem, similar to what jbd2\ndoes. As the process name is a fixed 16-char array, no extra\nspace is needed in tasks.\n\n  PID TTY      STAT   TIME COMMAND\n    2 ?        S      0:00 [kthreadd]\n  197 ?        S      0:00  \\_ [jbd2/sda2-8]\n  198 ?        S      0:00  \\_ [ext4-dio-unwrit]\n  204 ?        S      0:00  \\_ [flush-8:0]\n 2647 ?        S      0:00  \\_ [xfs_mru_cache]\n 2648 ?        S      0:00  \\_ [xfslogd/0]\n 2649 ?        S      0:00  \\_ [xfsdatad/0]\n 2650 ?        S      0:00  \\_ [xfsconvertd/0]\n 2651 ?        S      0:00  \\_ [xfsbufd/ram0]\n 2652 ?        S      0:00  \\_ [xfsaild/ram0]\n 2653 ?        S      0:00  \\_ [xfssyncd/ram0]\n\nSigned-off-by: Jan Engelhardt \u003cjengelh@medozas.de\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n"
    },
    {
      "commit": "fda168c24586ab8e01b0eb68028d78fe3e4fb71a",
      "tree": "015ac765550296cac1bc9b3eee833d99630a83fa",
      "parents": [
        "e40152ee1e1c7a63f4777791863215e3faa37a86"
      ],
      "author": {
        "name": "Zhitong Wang",
        "email": "zhitong.wangzt@alibaba-inc.com",
        "time": "Tue Mar 23 09:51:22 2010 +1100"
      },
      "committer": {
        "name": "Alex Elder",
        "email": "aelder@sgi.com",
        "time": "Wed May 19 09:58:07 2010 -0500"
      },
      "message": "xfs: Fix integer overflow in fs/xfs/linux-2.6/xfs_ioctl*.c\n\nThe am_hreq.opcount field in the xfs_attrmulti_by_handle() interface\nis not bounded correctly. The opcount is used to determine the size\nof the buffer required. The size is bounded, but can overflow and so\nthe size checks may not be sufficient to catch invalid opcounts.\nFix it by catching opcount values that would cause overflows before\ncalculating the size.\n\nSigned-off-by: Zhitong Wang \u003czhitong.wangzt@alibaba-inc.com\u003e\nReviewed-by: Dave Chinner \u003cdavid@fromorbit.com\u003e\n"
    },
    {
      "commit": "2ec8c6bb5d8f3a62a79f463525054bae1e3d4487",
      "tree": "fa7f8400ac685fb52e96f64997c7c682fc2aa021",
      "parents": [
        "7b39f90fabcf9e2af0cd79d0a60440d821e22b56",
        "537b60d17894b7c19a6060feae40299d7109d6e7"
      ],
      "author": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue May 18 23:01:55 2010 -0700"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Tue May 18 23:01:55 2010 -0700"
      },
      "message": "Merge branch \u0027master\u0027 of /home/davem/src/GIT/linux-2.6/\n\nConflicts:\n\tinclude/linux/mod_devicetable.h\n\tscripts/mod/file2alias.c\n"
    },
    {
      "commit": "18d3a98f3c1b0e27ce026afa4d1ef042f2903726",
      "tree": "66316c0fc51882b3110d548e715e7b0ae4ab4b6b",
      "parents": [
        "5f5261acb059f43c7fb9a2fac9d32c6ef4df2ed5"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 16:47:55 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 16:48:41 2010 -0700"
      },
      "message": "ocfs2: Silence a gcc warning.\n\nocfs2_block_group_claim_bits() is never called with min_bits\u003d0, but we\nshouldn\u0027t leave status undefined if it ever is.\n\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "5f5261acb059f43c7fb9a2fac9d32c6ef4df2ed5",
      "tree": "c4f7e8f4b774ff3bb7b0e60f4bb956729e51d5b6",
      "parents": [
        "d9ef75221a6247b758e1d7e18edb661996e4b7cf"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Thu May 13 22:49:05 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 16:41:39 2010 -0700"
      },
      "message": "ocfs2: Don\u0027t retry xattr set in case value extension fails.\n\nIn normal xattr set, the set sequence is inode, xattr block\nand finally xattr bucket if we meet with a ENOSPC. But there\nis a corner case.\nSo consider we will set a xattr whose value will be stored in\na cluster, and there is no xattr block by now. So we will\nreserve 1 xattr block and 1 cluster for setting it. Now if we\nfail in value extension(in case the volume is almost full and\nwe can\u0027t allocate the cluster because the check in\nocfs2_test_bg_bit_allocatable), ENOSPC will be returned. So\nwe will try to create a bucket(this time there is a chance that\nthe reserved cluster will be used), and when we try value extension\nagain, kernel bug happens. We did meet with it. Check the bug below.\nhttp://oss.oracle.com/bugzilla/show_bug.cgi?id\u003d1251\n\nThis patch just try to avoid this by adding a set_abort in\nocfs2_xattr_set_ctxt, so in case ENOSPC happens in value extension,\nwe will check whether it is caused by the real ENOSPC or just the\nfull of inode or xattr block. If it is the first case, we set set_abort\nso that we don\u0027t try any further. we are safe to exit directly here\nince it is really ENOSPC.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "d9ef75221a6247b758e1d7e18edb661996e4b7cf",
      "tree": "a1a1355da23b7448afdc851f7a211f2b3492d6e5",
      "parents": [
        "d5a7df0649fa6a1e7800785d760e2c7d7a3204de"
      ],
      "author": {
        "name": "Wengang Wang",
        "email": "wen.gang.wang@oracle.com",
        "time": "Mon May 17 20:20:44 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 16:41:34 2010 -0700"
      },
      "message": "ocfs2:dlm: avoid dlm-\u003east_lock lockres-\u003espinlock dependency break\n\nCurrently we process a dirty lockres with the lockres-\u003espinlock taken. While\nduring the process, we may need to lock on dlm-\u003east_lock. This breaks the\ndependency of dlm-\u003east_lock(lock first) and lockres-\u003espinlock(lock second).\n\nThis patch fixes the problem.\nSince we can\u0027t release lockres-\u003espinlock, we have to take dlm-\u003east_lock\njust before taking the lockres-\u003espinlock and release it after lockres-\u003espinlock\nis released. And use __dlm_queue_bast()/__dlm_queue_ast(), the nolock version,\nin dlm_shuffle_lists(). There are no too many locks on a lockres, so there is no\nperformance harm.\n\nSigned-off-by: Wengang Wang \u003cwen.gang.wang@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "d5a7df0649fa6a1e7800785d760e2c7d7a3204de",
      "tree": "35df1668e3d68dd71789e88bd9c01f914a811607",
      "parents": [
        "41841b0bcea8af7f3bff8b2a23d542b94d9c1bb1"
      ],
      "author": {
        "name": "Tao Ma",
        "email": "tao.ma@oracle.com",
        "time": "Mon May 10 18:09:47 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 16:41:21 2010 -0700"
      },
      "message": "ocfs2: Reset xattr value size after xa_cleanup_value_truncate().\n\nIn ocfs2_prepare_xattr_entry, if we fail to grow an existing value,\nxa_cleanup_value_truncate() will leave the old entry in place.  Thus, we\nreset its value size.  However, if we were allocating a new value, we\nmust not reset the value size or we will BUG().  This resolves\noss.oracle.com bug 1247.\n\nSigned-off-by: Tao Ma \u003ctao.ma@oracle.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "41841b0bcea8af7f3bff8b2a23d542b94d9c1bb1",
      "tree": "89eddf2dffadbbd13939f94eb8cd904a26279390",
      "parents": [
        "316ce2ba8e74a7bb9153b9f93adc883cb1ceb9fd",
        "1a934c3e57594588c373aea858e4593cdfcba4f4"
      ],
      "author": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 16:40:42 2010 -0700"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 16:40:42 2010 -0700"
      },
      "message": "Merge branch \u0027discontig-bg\u0027 of git://oss.oracle.com/git/tma/linux-2.6 into ocfs2-merge-window\n"
    },
    {
      "commit": "e4e83ea47babd9d4bf95a13aed87f8ef51e46472",
      "tree": "3949e01791c172f21f0d408d3352a857fcda9258",
      "parents": [
        "47cee541a46a73b20dc279bf4c4690f776f6c81b"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Thu Apr 22 16:21:39 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue May 18 19:03:50 2010 -0400"
      },
      "message": "Revert \"nfsd4: distinguish expired from stale stateids\"\n\nThis reverts commit 78155ed75f470710f2aecb3e75e3d97107ba8374.\n\nWe\u0027re depending here on the boot time that we use to generate the\nstateid being monotonic, but get_seconds() is not necessarily.\n\nWe still depend at least on boot_time being different every time, but\nthat is a safer bet.\n\nWe have a few reports of errors that might be explained by this problem,\nthough we haven\u0027t been able to confirm any of them.\n\nBut the minor gain of distinguishing expired from stale errors seems not\nworth the risk.\n\nConflicts:\n\n\tfs/nfsd/nfs4state.c\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "316ce2ba8e74a7bb9153b9f93adc883cb1ceb9fd",
      "tree": "642a2394a1e12e6c850243c3b1aac8b91c56c0b9",
      "parents": [
        "3914ed0cec6532ab4feb202424fc95ad05024497"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Fri May 14 21:30:48 2010 +0200"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 12:31:11 2010 -0700"
      },
      "message": "fs/ocfs2/dlm: Use kstrdup\n\nUse kstrdup when the goal of an allocation is copy a string into the\nallocated region.\n\nThe semantic patch that makes this change is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@\nexpression from,to;\nexpression flag,E1,E2;\nstatement S;\n@@\n\n-  to \u003d kmalloc(strlen(from) + 1,flag);\n+  to \u003d kstrdup(from, flag);\n   ... when !\u003d \\(from \u003d E1 \\| to \u003d E1 \\)\n   if (to\u003d\u003dNULL || ...) S\n   ... when !\u003d \\(from \u003d E2 \\| to \u003d E2 \\)\n-  strcpy(to, from);\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "3914ed0cec6532ab4feb202424fc95ad05024497",
      "tree": "034377b0e2cf83e3a6fca5883ea8e4e5191a469a",
      "parents": [
        "c1631d4a484fbb498e35d661f1aebd64c86b66bf"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Tue May 11 20:28:14 2010 +0200"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 12:31:10 2010 -0700"
      },
      "message": "fs/ocfs2/dlm: Drop memory allocation cast\n\nDrop cast on the result of kmalloc and similar functions.\n\nThe semantic patch that makes this change is as follows:\n(http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@@\ntype T;\n@@\n\n- (T *)\n  (\\(kmalloc\\|kzalloc\\|kcalloc\\|kmem_cache_alloc\\|kmem_cache_zalloc\\|\n   kmem_cache_alloc_node\\|kmalloc_node\\|kzalloc_node\\)(...))\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "c1631d4a484fbb498e35d661f1aebd64c86b66bf",
      "tree": "06e951cfebbd616dbaa0017d1c030a3f6e0d8d88",
      "parents": [
        "ee149a7c6cbaee0e3a1a7d9e9f92711228ef5236"
      ],
      "author": {
        "name": "Tristan Ye",
        "email": "tristan.ye@oracle.com",
        "time": "Tue May 11 17:54:45 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 12:31:05 2010 -0700"
      },
      "message": "Ocfs2: Optimize punching-hole code.\n\nThis patch simplifies the logic of handling existing holes and\nskipping extent blocks and removes some confusing comments.\n\nThe patch survived the fill_verify_holes testcase in ocfs2-test.\nIt also passed my manual sanity check and stress tests with enormous\nextent records.\n\nCurrently punching a hole on a file with 3+ extent tree depth was\nreally a performance disaster.  It can even take several hours,\nthough we may not hit this in real life with such a huge extent\nnumber.\n\nOne simple way to improve the performance is quite straightforward.\nFrom the logic of truncate, we can punch the hole from hole_end to\nhole_start, which reduces the overhead of btree operations in a\nsignificant way, such as tree rotation and moving.\n\nFollowing is the testing result when punching hole from 0 to file end\nin bytes, on a 1G file, 1G file consists of 256k extent records, each record\ncover 4k data(just one cluster, clustersize is 4k):\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Original punching-hole mechanism:\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n   I waited 1 hour for its completion, unfortunately it\u0027s still ongoing.\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n * Patched punching-hode mechanism:\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n   real 0m2.518s\n   user 0m0.000s\n   sys  0m2.445s\n\nThat means we\u0027ve gained up to 1000 times improvement on performance in this\ncase, whee! It\u0027s fairly cool. and it looks like that performance gain will\nbe raising when extent records grow.\n\nThe patch was based on my former 2 patches, which were about truncating\ncodes optimization and fixup to handle CoW on punching hole.\n\nSigned-off-by: Tristan Ye \u003ctristan.ye@oracle.com\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "ee149a7c6cbaee0e3a1a7d9e9f92711228ef5236",
      "tree": "eb91fa9c12d9d44a3a314f75c5acd4ce1b7328a5",
      "parents": [
        "e8aec068ecb1957630816cfa2c150c6b3ddd1790"
      ],
      "author": {
        "name": "Tristan Ye",
        "email": "tristan.ye@oracle.com",
        "time": "Tue May 11 17:54:44 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 12:28:13 2010 -0700"
      },
      "message": "Ocfs2: Make ocfs2_find_cpos_for_left_leaf() public.\n\nThe original idea to pull ocfs2_find_cpos_for_left_leaf() out of\nalloc.c is to benefit punching-holes optimization patch, it however,\ncan also be referred by other funcs in the future who want to do the\nsame job.\n\nSigned-off-by: Tristan Ye \u003ctristan.ye@oracle.com\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "e8aec068ecb1957630816cfa2c150c6b3ddd1790",
      "tree": "b6140b82846cd2f5ab264d01be2a4473e56faf97",
      "parents": [
        "78f94673d7faf01677f374f4ebbf324ff1a0aa6e"
      ],
      "author": {
        "name": "Tristan Ye",
        "email": "tristan.ye@oracle.com",
        "time": "Tue May 11 17:54:43 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 12:27:46 2010 -0700"
      },
      "message": "Ocfs2: Fix hole punching to correctly do CoW during cluster zeroing.\n\nBased on the previous patch of optimizing truncate, the bugfix for\nrefcount trees when punching holes can be fairly easy\nand straightforward since most of work we should take into account for\nrefcounting have been completed already in ocfs2_remove_btree_range().\n\nThis patch performs CoW for refcounted extents when a hole being punched\nwhose start or end offset were in the middle of a cluster, which means\npartial zeroing of the cluster will be performed soon.\n\nThe patch has been tested fixing the following bug:\n\nhttp://oss.oracle.com/bugzilla/show_bug.cgi?id\u003d1216\n\nSigned-off-by: Tristan Ye \u003ctristan.ye@oracle.com\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "78f94673d7faf01677f374f4ebbf324ff1a0aa6e",
      "tree": "1bd394469f12b5e148835365295d1df413c04a0c",
      "parents": [
        "547ba7c8efe43c2cabb38782e23572a6179dd1c1"
      ],
      "author": {
        "name": "Tristan Ye",
        "email": "tristan.ye@oracle.com",
        "time": "Tue May 11 17:54:42 2010 +0800"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Tue May 18 12:25:10 2010 -0700"
      },
      "message": "Ocfs2: Optimize ocfs2 truncate to use ocfs2_remove_btree_range() instead.\n\nTruncate is just a special case of punching holes(from new i_size to\nend), we therefore could take advantage of the existing\nocfs2_remove_btree_range() to reduce the comlexity and redundancy in\nalloc.c.  The goal here is to make truncate more generic and\nstraightforward.\n\nSeveral functions only used by ocfs2_commit_truncate() will smiply be\nremoved.\n\nocfs2_remove_btree_range() was originally used by the hole punching\ncode, which didn\u0027t take refcount trees into account (definitely a bug).\nWe therefore need to change that func a bit to handle refcount trees.\nIt must take the refcount lock, calculate and reserve blocks for\nrefcount tree changes, and decrease refcounts at the end.  We replace \nocfs2_lock_allocators() here by adding a new func\nocfs2_reserve_blocks_for_rec_trunc() which accepts some extra blocks to\nreserve.  This will not hurt any other code using\nocfs2_remove_btree_range() (such as dir truncate and hole punching).\n\nI merged the following steps into one patch since they may be\nlogically doing one thing, though I know it looks a little bit fat\nto review.\n\n1). Remove redundant code used by ocfs2_commit_truncate(), since we\u0027re\n    moving to ocfs2_remove_btree_range anyway.\n\n2). Add a new func ocfs2_reserve_blocks_for_rec_trunc() for purpose of\n    accepting some extra blocks to reserve.\n\n3). Change ocfs2_prepare_refcount_change_for_del() a bit to fit our\n    needs.  It\u0027s safe to do this since it\u0027s only being called by\n    truncate.\n\n4). Change ocfs2_remove_btree_range() a bit to take refcount case into\n    account.\n\n5). Finally, we change ocfs2_commit_truncate() to call\n    ocfs2_remove_btree_range() in a proper way.\n\nThe patch has been tested normally for sanity check, stress tests\nwith heavier workload will be expected.\n\nBased on this patch, fixing the punching holes bug will be fairly easy.\n\nSigned-off-by: Tristan Ye \u003ctristan.ye@oracle.com\u003e\nAcked-by: Mark Fasheh \u003cmfasheh@suse.com\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "47cee541a46a73b20dc279bf4c4690f776f6c81b",
      "tree": "d54461a8fd6a4c70d5b092334ccf38359bcd4994",
      "parents": [
        "b7299f44394336f51b526247a870d47d28f4f97c"
      ],
      "author": {
        "name": "Pavel Emelyanov",
        "email": "xemul@openvz.org",
        "time": "Mon May 17 20:00:37 2010 +0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue May 18 12:05:20 2010 -0400"
      },
      "message": "nfsd: safer initialization order in find_file()\n\nThe alloc_init_file() first adds a file to the hash and then\ninitializes its fi_inode, fi_id and fi_had_conflict.\n\nThe uninitialized fi_inode could thus be erroneously checked by\nthe find_file(), so move the hash insertion lower.\n\nThe client_mutex should prevent this race in practice; however, we\neventually hope to make less use of the client_mutex, so the ordering\nhere is an accident waiting to happen.\n\nI didn\u0027t find whether the same can be true for two other fields,\nbut the common sense tells me it\u0027s better to initialize an object\nbefore putting it into a global hash table :)\n\nSigned-off-by: Pavel Emelyanov \u003cxemul@openvz.org\u003e\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "b7299f44394336f51b526247a870d47d28f4f97c",
      "tree": "bb8e365349e9e048f0f927843acca26ddd6a8e2b",
      "parents": [
        "15ddb4aec54422ead137b03ea4e9b3f5db3f7cc2"
      ],
      "author": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Fri May 14 17:57:35 2010 -0400"
      },
      "committer": {
        "name": "J. Bruce Fields",
        "email": "bfields@citi.umich.edu",
        "time": "Tue May 18 11:51:38 2010 -0400"
      },
      "message": "nfs4: minor callback code simplification, comment\n\nNote the position in the version array doesn\u0027t have to match the actual\nrpc version number--to me it seems clearer to maintain the distinction.\n\nAlso document choice of rpc callback version number, as discussed in\ne.g. http://www.ietf.org/mail-archive/web/nfsv4/current/msg07985.html\nand followups.\n\nSigned-off-by: J. Bruce Fields \u003cbfields@citi.umich.edu\u003e\n"
    },
    {
      "commit": "b8ae30ee26d379db436b0b8c8c3ff1b52f69e5d1",
      "tree": "506aa0b4bdbf90f61e7e9261c7db90aa1452dcce",
      "parents": [
        "4d7b4ac22fbec1a03206c6cde353f2fd6942f828",
        "9c6f7e43b4e02c161b53e97ba913855246876c61"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 18 08:27:54 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 18 08:27:54 2010 -0700"
      },
      "message": "Merge branch \u0027sched-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027sched-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (49 commits)\n  stop_machine: Move local variable closer to the usage site in cpu_stop_cpu_callback()\n  sched, wait: Use wrapper functions\n  sched: Remove a stale comment\n  ondemand: Make the iowait-is-busy time a sysfs tunable\n  ondemand: Solve a big performance issue by counting IOWAIT time as busy\n  sched: Intoduce get_cpu_iowait_time_us()\n  sched: Eliminate the ts-\u003eidle_lastupdate field\n  sched: Fold updating of the last_update_time_info into update_ts_time_stats()\n  sched: Update the idle statistics in get_cpu_idle_time_us()\n  sched: Introduce a function to update the idle statistics\n  sched: Add a comment to get_cpu_idle_time_us()\n  cpu_stop: add dummy implementation for UP\n  sched: Remove rq argument to the tracepoints\n  rcu: need barrier() in UP synchronize_sched_expedited()\n  sched: correctly place paranioa memory barriers in synchronize_sched_expedited()\n  sched: kill paranoia check in synchronize_sched_expedited()\n  sched: replace migration_thread with cpu_stop\n  stop_machine: reimplement using cpu_stop\n  cpu_stop: implement stop_cpu[s]()\n  sched: Fix select_idle_sibling() logic in select_task_rq_fair()\n  ...\n"
    },
    {
      "commit": "fd25a1f556760dbd6e29dec66c70223a8912cdb2",
      "tree": "73ff80b35cb90949612ccc4f548fc6dcdae0897c",
      "parents": [
        "ba2e1c5f25a99dec3873745031ad23ce3fd79bff",
        "4065c802da7484fa36f8cdf10f18d087233ecb88"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 18 07:18:38 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 18 07:18:38 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6: (23 commits)\n  cifs: fix noserverino handling when unix extensions are enabled\n  cifs: don\u0027t update uniqueid in cifs_fattr_to_inode\n  cifs: always revalidate hardlinked inodes when using noserverino\n  [CIFS] drop quota operation stubs\n  cifs: propagate cifs_new_fileinfo() error back to the caller\n  cifs: add comments explaining cifs_new_fileinfo behavior\n  cifs: remove unused parameter from cifs_posix_open_inode_helper()\n  [CIFS] Remove unused cifs_oplock_cachep\n  cifs: have decode_negTokenInit set flags in server struct\n  cifs: break negotiate protocol calls out of cifs_setup_session\n  cifs: eliminate \"first_time\" parm to CIFS_SessSetup\n  [CIFS] Fix lease break for writes\n  cifs: save the dialect chosen by server\n  cifs: change \u0026\u0026 to ||\n  cifs: rename \"extended_security\" to \"global_secflags\"\n  cifs: move tcon find/create into separate function\n  cifs: move SMB session creation code into separate function\n  cifs: track local_nls in volume info\n  [CIFS] Allow null nd (as nfs server uses) on create\n  [CIFS] Fix losing locks during fork()\n  ...\n"
    },
    {
      "commit": "539c99fd7fc28f8db257c713c10fb4aceadf8887",
      "tree": "e603e48ac816cde56e4872e0f7bcdfe7bd33f3b3",
      "parents": [
        "ba2e1c5f25a99dec3873745031ad23ce3fd79bff",
        "4d09ec0f705cf88a12add029c058b53f288cfaa2"
      ],
      "author": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue May 18 08:57:00 2010 +1000"
      },
      "committer": {
        "name": "James Morris",
        "email": "jmorris@namei.org",
        "time": "Tue May 18 08:57:00 2010 +1000"
      },
      "message": "Merge branch \u0027next\u0027 into for-linus\n"
    },
    {
      "commit": "4065c802da7484fa36f8cdf10f18d087233ecb88",
      "tree": "a81d1dae07945ce0e6afb22e87c65fe9a0d44be1",
      "parents": [
        "84f30c66c3689745abbd3b9ce39816caeb9bec3b"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Mon May 17 07:18:58 2010 -0400"
      },
      "committer": {
        "name": "Steve French",
        "email": "sfrench@us.ibm.com",
        "time": "Mon May 17 20:59:21 2010 +0000"
      },
      "message": "cifs: fix noserverino handling when unix extensions are enabled\n\nThe uniqueid field sent by the server when unix extensions are enabled\nis currently used sometimes when it shouldn\u0027t be. The readdir codepath\nis correct, but most others are not. Fix it.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Steve French \u003csfrench@us.ibm.com\u003e\n"
    },
    {
      "commit": "84f30c66c3689745abbd3b9ce39816caeb9bec3b",
      "tree": "16b40caa4f940d7fe3f723b34f296873aced6db4",
      "parents": [
        "db19272edc93661835bf6ec9736cfd0754aa3c62"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Mon May 17 07:18:57 2010 -0400"
      },
      "committer": {
        "name": "Steve French",
        "email": "sfrench@us.ibm.com",
        "time": "Mon May 17 20:57:27 2010 +0000"
      },
      "message": "cifs: don\u0027t update uniqueid in cifs_fattr_to_inode\n\nWe use this value to find an inode within the hash bucket, so we can\u0027t\nchange this without re-hashing the inode. For now, treat this value\nas immutable.\n\nEventually, we should probably use an inode number change on a path\nbased operation to indicate that the lookup cache is invalid, but that\u0027s\na bit more code to deal with.\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Steve French \u003csfrench@us.ibm.com\u003e\n"
    },
    {
      "commit": "db19272edc93661835bf6ec9736cfd0754aa3c62",
      "tree": "5de9dccbf2a234db5c5ba3e7c49d3ccf4af50536",
      "parents": [
        "ade275c4b6db98ae7b197cc7c6bdd73567a975c2"
      ],
      "author": {
        "name": "Jeff Layton",
        "email": "jlayton@redhat.com",
        "time": "Mon May 17 14:51:49 2010 -0400"
      },
      "committer": {
        "name": "Steve French",
        "email": "sfrench@us.ibm.com",
        "time": "Mon May 17 20:55:58 2010 +0000"
      },
      "message": "cifs: always revalidate hardlinked inodes when using noserverino\n\nThe old cifs_revalidate logic always revalidated hardlinked inodes.\nThis hack allowed CIFS to pass some connectathon tests when server inode\nnumbers aren\u0027t used (basic test7, in particular).\n\nSigned-off-by: Jeff Layton \u003cjlayton@redhat.com\u003e\nSigned-off-by: Steve French \u003csfrench@us.ibm.com\u003e\n"
    },
    {
      "commit": "7d32c0aca4fbd0319c860d12af5fae3e88c760e6",
      "tree": "3df9712c128a98916601a98510e5160dac809264",
      "parents": [
        "3d2c978e0cd8b1157f9eebd13062d61fb7a75ad5",
        "6f485b41875dbf5160c1990322469c1f65f77b28"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 17 13:53:35 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon May 17 13:53:35 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/joern/logfs\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/joern/logfs:\n  logfs: handle powerfail on NAND flash\n  logfs: handle errors from get_mtd_device()\n  logfs: remove unused variable\n  logfs: fix sync\n  logfs: fix compile failure\n  logfs: initialize li-\u003eli_refcount\n  logfs: commit reservations under space pressure\n  logfs: survive logfs_buf_recover read errors\n  logfs: Close i_ino reuse race\n  logfs: fix logfs_seek_hole()\n  logfs: Return -EINVAL if filesystem image doesn\u0027t match\n  LogFS: Fix typo in b6349ac8\n  logfs: testing the wrong variable\n"
    }
  ],
  "next": "c2f980500a81006173daf3048284b28832858616"
}
