{"push_id":1021815863,"size":11,"distinct_size":7,"ref":"refs/heads/master","head":"513168abd267f84ebcb688b4e1d42a2abd4fedce","before":"eea9309423d577d62cf62d1f98444e22e264ef15","commits":[{"sha":"093911f1945b5c164a45bb077103283dafdcae0c","author":{"email":"0d8609c212ab3f9760c0051ba4e9c6b9d92c1063@osnexus.com","name":"Chunwei Chen"},"message":"Remove wrong ASSERT in annotate_ecksum\n\nWhen using large blocks like 1M, there will be more than UINT16_MAX qwords in\none block, so this ASSERT would go off. Also, it is possible for the histogram\nto overflow. We cap them to UINT16_MAX to prevent this.\n\nSigned-off-by: Chunwei Chen <david.chen@osnexus.com>\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nCloses #4257","distinct":false,"url":"https://api.github.com/repos/paboldin/zfs/commits/093911f1945b5c164a45bb077103283dafdcae0c"},{"sha":"c7e7ec1997d65ea173d943289feb4d07d414c905","author":{"email":"d9d8e53c87d9c6711b7c79a1da569047a5a304ce@llnl.gov","name":"Olaf Faaland"},"message":"Make configure error clearer when failing to find SPL\n\nSigned-off-by: Olaf Faaland <faaland1@llnl.gov>\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nSigned-off-by: Richard Yao <ryao@gentoo.org>\nCloses #4251","distinct":false,"url":"https://api.github.com/repos/paboldin/zfs/commits/c7e7ec1997d65ea173d943289feb4d07d414c905"},{"sha":"a765a34a3142a1dcedd256e076a54e6ae61953ca","author":{"email":"c64f7f1e6060e851acfe9b5bdea00a17cb81871c@gentoo.org","name":"Richard Yao"},"message":"Clean up zvol request processing to pass uio and fix porting regressions\n\nIn illumos-gate, `zvol_read` and `zvol_write` are both passed uio_t\nrather than bio_t. Since we are translating from bio to uio for both, we\nmight as well unify the logic and have code more similar to its illumos\ncounterpart. At the same time, we can fix some regressions that occurred\nversus the original code from illumos-gate.\n\nWe refactor zvol_write to take uio and also correct the\nfollowing problems:\n\n1. We did `dnode_hold()` on each IO when we already had a hold.\n2. We would attempt to send writes that exceeded `DMU_MAX_ACCESS` to the\nDMU.\n3. We could call `zil_commit()` twice. In this case, this is because\nLinux uses the `->write` function to send flushes and can aggregate the\nflush with a write. If a synchronous write occurred with the flush, we\neffectively flushed twice when there is no need to do that.\n\nzvol_read also suffers from the first two problems. Other platforms\nsuffer from the first, so we leave that for a second patch so that there\nis a discrete patch for them to cherry-pick.\n\nSigned-off-by: Richard Yao <ryao@gentoo.org>\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nSigned-off-by: Tim Chase <tim@chase2k.com>\nSigned-off-by: Chunwei Chen <tuxoko@gmail.com>\nCloses #4316","distinct":false,"url":"https://api.github.com/repos/paboldin/zfs/commits/a765a34a3142a1dcedd256e076a54e6ae61953ca"},{"sha":"19a47cb1c2be6da9b9d4a395a7afc07da4813a5f","author":{"email":"c64f7f1e6060e851acfe9b5bdea00a17cb81871c@gentoo.org","name":"Richard Yao"},"message":"Call dmu_read_uio_dbuf() in zvol_read()\n\nThe difference between `dmu_read_uio()` and `dmu_read_uio_dbuf()` is\nthat the former takes a hold while the latter uses an existing hold.\n`zfs_read()` in the ZPL will use `dmu_read_uio_dbuf()` while\nour analogous `zvol_write()` will use `dmu_write_uio_dbuf()`, but for no\napparent reason, we inherited a `zvol_read()` function from\nOpenSolaris that does `dmu_read_uio()`. illumos-gate also still\nuses `dmu_read_uio()` to this day. Lets switch to `dmu_read_uio_dbuf()`,\nwhich is more performant.\n\nSigned-off-by: Richard Yao <ryao@gentoo.org>\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nSigned-off-by: Tim Chase <tim@chase2k.com>\nSigned-off-by: Chunwei Chen <tuxoko@gmail.com>\nCloses #4316","distinct":false,"url":"https://api.github.com/repos/paboldin/zfs/commits/19a47cb1c2be6da9b9d4a395a7afc07da4813a5f"},{"sha":"5428dc51fb55145fbac1c142402dafc11d1e7d28","author":{"email":"3f3625d010735cc4c47c94b1e81ebdd197a99021@actifio.com","name":"Boris Protopopov"},"message":"Make zvol minor functionality more robust\n\nClose the race window in zvol_open() to prevent removal of\nzvol_state in the 'first open' code path. Move the call to\ncheck_disk_change() under zvol_state_lock to make sure the\nzvol_media_changed() and zvol_revalidate_disk() called by\ncheck_disk_change() are invoked with positive zv_open_count.\n\nSkip opened zvols when removing minors and set private_data\nto NULL for zvols that are not in use whose minors are being\nremoved, to indicate to zvol_open() that the state is gone.\nSkip opened zvols when renaming minors to avoid modifying\nzv_name that might be in use, e.g. in zvol_ioctl().\n\nDrop zvol_state_lock before calling add_disk() when creating\nminors to avoid deadlocks with zvol_open().\n\nWrap dmu_objset_find() with spl_fstran_mark()/unmark().\n\nSigned-off-by: Boris Protopopov <boris.protopopov@actifio.com>\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nSigned-off-by: Richard Yao <ryao@gentoo.org>\nCloses #4344","distinct":true,"url":"https://api.github.com/repos/paboldin/zfs/commits/5428dc51fb55145fbac1c142402dafc11d1e7d28"},{"sha":"8a09d5fd463120ee5d527b4d40d029b37a0b8d6e","author":{"email":"32d50ad1e384dcb9a5bf7e40fa470df5dabaf348@llnl.gov","name":"Brian Behlendorf"},"message":"Add l2arc_max_block_size tunable\n\nSet a limit for the largest compressed block which can be written\nto an L2ARC device.  By default this limit is set to 16M so there\nis no change in behavior.\n\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nSigned-off-by: Richard Elling <Richard.Elling@RichardElling.com>\nSigned-off-by: Tim Chase <tim@chase2k.com>\nCloses #4323","distinct":true,"url":"https://api.github.com/repos/paboldin/zfs/commits/8a09d5fd463120ee5d527b4d40d029b37a0b8d6e"},{"sha":"e79a6bacc6666233e109513b614d19d9d7742820","author":{"email":"c172824e7959d2f9c774b73d0cb736b5a5921b09@zengel.info","name":"Grischa Zengel"},"message":"Add nfs-kernel-server for Debian\n\nDebian based systems use nfs-kernel-server as the service name.\nList both nfs-server.service and nfs-kernel-server.service so\nthis service will work on multiple distributions.\n\nSigned-off-by: Grischa Zengel <github.zfsonlinux@zengel.info>\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nCloses #4350","distinct":true,"url":"https://api.github.com/repos/paboldin/zfs/commits/e79a6bacc6666233e109513b614d19d9d7742820"},{"sha":"d2f3e292dccab23e47ade3c67677a10f353b9e85","author":{"email":"c64f7f1e6060e851acfe9b5bdea00a17cb81871c@gentoo.org","name":"Richard Yao"},"message":"Add -gLp to zpool subcommands for alt vdev names\n\nThe following options have been added to the zpool add, iostat,\nlist, status, and split subcommands.  The default behavior was\nnot modified, from zfs(8).\n\n  -g    Display vdev GUIDs  instead  of  the  normal  short\n        device  names.  These GUIDs can be used in-place of\n        device   names   for    the    zpool    detach/off‐\n        line/remove/replace commands.\n\n  -L    Display real paths for vdevs resolving all symbolic\n        links. This can be used to lookup the current block\n        device  name regardless of the /dev/disk/ path used\n        to open it.\n\n  -p    Display  full  paths  for vdevs instead of only the\n        last component of the path.  This can  be  used  in\n        conjunction with the -L flag.\n\nThis behavior may also be enabled using the following environment\nvariables.\n\n  ZPOOL_VDEV_NAME_GUID\n  ZPOOL_VDEV_NAME_FOLLOW_LINKS\n  ZPOOL_VDEV_NAME_PATH\n\nThis change is based on worked originally started by Richard Yao\nto add a -g option.  Then extended by @ilovezfs to add a -L option\nfor openzfsonosx.  Those changes have been merged, re-factored,\na -p option added and extended to all relevant zpool subcommands.\n\nOriginal-patch-by: Richard Yao <ryao@gentoo.org>\nExtended-by: ilovezfs <ilovezfs@icloud.com>\nExtended-by: Brian Behlendorf <behlendorf1@llnl.gov>\nSigned-off-by: ilovezfs <ilovezfs@icloud.com>\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nCloses #2011\nCloses #4341","distinct":true,"url":"https://api.github.com/repos/paboldin/zfs/commits/d2f3e292dccab23e47ade3c67677a10f353b9e85"},{"sha":"a77f29f93c8d016f17d9b77f39662e311774aaae","author":{"email":"32d50ad1e384dcb9a5bf7e40fa470df5dabaf348@llnl.gov","name":"Brian Behlendorf"},"message":"Change full path subcommand flag from -p to -P\n\nCommit d2f3e29 introduced the -p option which outputs full paths\nfor vdevs to multiple zpool subcommands.  When this was merged\nthere was no conflict for this flag letter.  However it's certain\nthere will be a conflict with the -p (parsable) flag used by other\nsubcommands.  Therefore, -p is being changed to -P to avoid this.\n\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nCloses #4368","distinct":true,"url":"https://api.github.com/repos/paboldin/zfs/commits/a77f29f93c8d016f17d9b77f39662e311774aaae"},{"sha":"9f500936c82137ef3a57c53013894f622dcec14e","author":{"email":"1d9431876282b4e6e985e9a66c7d02d03813e37d@FreeBSD.org","name":"smh"},"message":"FreeBSD r256956: Improve ZFS N-way mirror read performance by using load and locality information.\n\nThe existing algorithm selects a preferred leaf vdev based on offset of the zio\nrequest modulo the number of members in the mirror. It assumes the devices are\nof equal performance and that spreading the requests randomly over both drives\nwill be sufficient to saturate them. In practice this results in the leaf vdevs\nbeing under utilized.\n\nThe new algorithm takes into the following additional factors:\n* Load of the vdevs (number outstanding I/O requests)\n* The locality of last queued I/O vs the new I/O request.\n\nWithin the locality calculation additional knowledge about the underlying vdev\nis considered such as; is the device backing the vdev a rotating media device.\n\nThis results in performance increases across the board as well as significant\nincreases for predominantly streaming loads and for configurations which don't\nhave evenly performing devices.\n\nThe following are results from a setup with 3 Way Mirror with 2 x HD's and\n1 x SSD from a basic test running multiple parrallel dd's.\n\nWith pre-fetch disabled (vfs.zfs.prefetch_disable=1):\n\n== Stripe Balanced (default) ==\nRead 15360MB using bs: 1048576, readers: 3, took 161 seconds @ 95 MB/s\n== Load Balanced (zfslinux) ==\nRead 15360MB using bs: 1048576, readers: 3, took 297 seconds @ 51 MB/s\n== Load Balanced (locality freebsd) ==\nRead 15360MB using bs: 1048576, readers: 3, took 54 seconds @ 284 MB/s\n\nWith pre-fetch enabled (vfs.zfs.prefetch_disable=0):\n\n== Stripe Balanced (default) ==\nRead 15360MB using bs: 1048576, readers: 3, took 91 seconds @ 168 MB/s\n== Load Balanced (zfslinux) ==\nRead 15360MB using bs: 1048576, readers: 3, took 108 seconds @ 142 MB/s\n== Load Balanced (locality freebsd) ==\nRead 15360MB using bs: 1048576, readers: 3, took 48 seconds @ 320 MB/s\n\nIn addition to the performance changes the code was also restructured, with\nthe help of Justin Gibbs, to provide a more logical flow which also ensures\nvdevs loads are only calculated from the set of valid candidates.\n\nThe following additional sysctls where added to allow the administrator\nto tune the behaviour of the load algorithm:\n* vfs.zfs.vdev.mirror.rotating_inc\n* vfs.zfs.vdev.mirror.rotating_seek_inc\n* vfs.zfs.vdev.mirror.rotating_seek_offset\n* vfs.zfs.vdev.mirror.non_rotating_inc\n* vfs.zfs.vdev.mirror.non_rotating_seek_inc\n\nThese changes where based on work started by the zfsonlinux developers:\nhttps://github.com/zfsonlinux/zfs/pull/1487\n\nReviewed by:\tgibbs, mav, will\nMFC after:\t2 weeks\nSponsored by:\tMultiplay\n\nReferences:\n  https://github.com/freebsd/freebsd@5c7a6f5d\n  https://github.com/freebsd/freebsd@31b7f68d\n  https://github.com/freebsd/freebsd@e186f564\n\nPerformance Testing:\n  https://github.com/zfsonlinux/zfs/pull/4334#issuecomment-189057141\n\nPorting notes:\n- The tunables were adjusted to have ZoL-style names.\n- The code was modified to use ZoL's vd_nonrot.\n- Fixes were done to make cstyle.pl happy\n- Merge conflicts were handled manually\n- freebsd/freebsd@e186f564bc946f82c76e0b34c2f0370ed9aea022 by my\n  collegue Andriy Gapon has been included. It applied perfectly, but\n  added a cstyle regression.\n- This replaces 556011dbec2d10579819078559a77630fc559112 entirely.\n- A typo \"IO'a\" has been corrected to say \"IO's\"\n- Descriptions of new tunables were added to man/man5/zfs-module-parameters.5.\n\nPorted-by: Richard Yao <ryao@gentoo.org>\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nCloses #4334","distinct":true,"url":"https://api.github.com/repos/paboldin/zfs/commits/9f500936c82137ef3a57c53013894f622dcec14e"},{"sha":"513168abd267f84ebcb688b4e1d42a2abd4fedce","author":{"email":"1998e8b55c5a9d20150a9c80d34f265b3d8ad0c9@open-e.com","name":"ab-oe"},"message":"Make zvol update volsize operation synchronous.\n\nThere is a race condition when new transaction group is added\nto dp->dp_dirty_datasets list by the zap_update in the zvol_update_volsize.\nMeanwhile, before these dirty data are synchronized, the receive process\ncan cause that dmu_recv_end_sync is executed. Then finally dirty data\nare going to be synchronized but the synchronization ends with the NULL\npointer dereference error.\n\nSigned-off-by: ab-oe <arkadiusz.bubala@open-e.com>\nSigned-off-by: Brian Behlendorf <behlendorf1@llnl.gov>\nCloses #4116","distinct":true,"url":"https://api.github.com/repos/paboldin/zfs/commits/513168abd267f84ebcb688b4e1d42a2abd4fedce"}]}