{"push_id":711505978,"size":30,"distinct_size":30,"ref":"refs/heads/wip-djf-osd-helpers","head":"fa06c5370e35741112459acae2c803b3f3f7a14b","before":"6d6a9956081f02d64674d31ebb0bc9c18448bfd5","commits":[{"sha":"b1d396aa40686a6e3ca6e29f9d107b9c1a37b8f2","author":{"email":"5a3288024fcad83740d827e0862f4c1e6f28e7bf@redhat.com","name":"Yan, Zheng"},"message":"ceph: don't include used caps in cap_wanted\n\nwhen copying files to cephfs, file data may stay in page cache after\ncorresponding file is closed. Cached data use Fc capability. If we\ninclude Fc capability in cap_wanted, MDS will treat files with cached\ndata as open files, and journal them in an EOpen event when trimming\nlog segment.\n\nSigned-off-by: Yan, Zheng <zyan@redhat.com>","distinct":true,"url":"https://api.github.com/repos/fullerdj/ceph-client/commits/b1d396aa40686a6e3ca6e29f9d107b9c1a37b8f2"},{"sha":"ce014648064c0271e0329e1387550622dcb377f8","author":{"email":"5a3288024fcad83740d827e0862f4c1e6f28e7bf@redhat.com","name":"Yan, Zheng"},"message":"ceph: fix flushing caps\n\nCurrent ceph_fsync() only flushes dirty caps and wait for them to be\nflushed. It doesn't wait for caps that has already been flushing.\nThis patch makes ceph_fsync() wait for pending flushing caps too.\nBesides, this patch also makes caps_are_flushed() peroperly handle\ntid wrapping.\n\nSigned-off-by: Yan, Zheng <zyan@redhat.com>","distinct":true,"url":"https://api.github.com/repos/fullerdj/ceph-client/commits/ce014648064c0271e0329e1387550622dcb377f8"},{"sha":"53a7671d9cd0ee3e0ba036099f5a3402f61885af","author":{"email":"5a3288024fcad83740d827e0862f4c1e6f28e7bf@redhat.com","name":"Yan, Zheng"},"message":"ceph: fix directory fsync\n\nfsync() on directory should flush dirty caps and wait for any\nuncommitted directory opertions to commit. But ceph_dir_fsync()\nonly waits for uncommitted directory opertions.\n\nSigned-off-by: Yan, Zheng <zyan@redhat.com>","distinct":true,"url":"https://api.github.com/repos/fullerdj/ceph-client/commits/53a7671d9cd0ee3e0ba036099f5a3402f61885af"},{"sha":"c2391c9646344911ca3b42c7459aa5dedc254acd","author":{"email":"7e14a0e00bbf99d2107833abe9d16fc549d11fad@gmail.com","name":"Hong Zhiguo"},"message":"libceph: fix wrong name \"Ceph filesystem for Linux\"\n\nmodinfo libceph prints the module name \"Ceph filesystem for Linux\",\nwhich is same as the real fs module ceph. It's confusing.\n\nSigned-off-by: Hong Zhiguo <zhiguohong@tencent.com>\nSigned-off-by: Ilya Dryomov <idryomov@gmail.com>","distinct":true,"url":"https://api.github.com/repos/fullerdj/ceph-client/commits/c2391c9646344911ca3b42c7459aa5dedc254acd"},{"sha":"e1e38d71345acaef4c156d3f3d16ab6ecb0f93b3","author":{"email":"5a3288024fcad83740d827e0862f4c1e6f28e7bf@redhat.com","name":"Yan, Zheng"},"message":"ceph: track pending caps flushing accurately\n\nPreviously we do not trace accurate TID for flushing caps. when\nMDS failovers, we have no choice but to re-send all flushing caps\nwith a new TID. This can cause problem because MDS can has already\nflushed some caps and has issued the same caps to other client.\nThe re-sent cap flush has a new TID, which makes MDS unable to\ndetect if it has already processed the cap flush.\n\nThis patch adds code to track pending caps flushing accurately.\nWhen re-sending cap flush is needed, we use its original flush\nTID.\n\nSigned-off-by: Yan, Zheng <zyan@redhat.com>","distinct":true,"url":"https://api.github.com/repos/fullerdj/ceph-client/commits/e1e38d71345acaef4c156d3f3d16ab6ecb0f93b3"},{"sha":"0d320af4cfdb8242828582be377b50295abd198b","author":{"email":"5a3288024fcad83740d827e0862f4c1e6f28e7bf@redhat.com","name":"Yan, Zheng"},"message":"ceph: track pending caps flushing globally\n\nSo we know TID of the oldest pending caps flushing. Later patch will\nsend this information to MDS, so that MDS can trim its completed caps\nflush list.\n\nTracking pending caps flushing globally also simplifies syncfs code.\n\nSigned-off-by: Yan, Zheng <zyan@redhat.com>","distinct":true,"url":"https://api.github.com/repos/fullerdj/ceph-client/commits/0d320af4cfdb8242828582be377b50295abd198b"},{"sha":"767f221c4cbb48379b743b5c9a8033729943338a","author":{"email":"5a3288024fcad83740d827e0862f4c1e6f28e7bf@redhat.com","name":"Yan, Zheng"},"message":"ceph: send TID of the oldest pending caps flush to MDS\n\nAccording to this information, MDS can trim its completed caps flush\nlist (which is used to detect duplicated cap flush).\n\nSigned-off-by: Yan, Zheng <zyan@redhat.com>","distinct":true,"url":"https://api.github.com/repos/fullerdj/ceph-client/commits/767f221c4cbb48379b743b5c9a8033729943338a"},{"sha":"412c7fa95a4e428147d7aa15e6d440159e3dc0cd","author":{"email":"5a3288024fcad83740d827e0862f4c1e6f28e7bf@redhat.com","name":"Yan, Zheng"},"message":"ceph: re-send flushing caps (which are revoked) in reconnect stage\n\nif flushing caps were revoked, we should re-send the cap flush in\nclient reconnect stage. This guarantees that MDS processes the cap\nflush message before issuing the flushing caps to other client.\n\nSigned-off-by: Yan, Zheng <zyan@redhat.com>","distinct":true,"url":"https://api.github.com/repos/fullerdj/ceph-client/commits/412c7fa95a4e428147d7aa15e6d440159e3dc0cd"},{"sha":"0584f90002f9bb1cb1ab5fda0c2c0d6c5ae1475f","author":{"email":"5a3288024fcad83740d827e0862f4c1e6f28e7bf@redhat.com","name":"Yan, Zheng"},"message":"ceph: pre-allocate data structure that tracks caps flushing\n\nSigned-off-by: Yan, Zheng <zyan@redhat.com>","distinct":true,"url":"https://api.github.com/repos/fullerdj/ceph-client/commits/0584f90002f9bb1cb1ab5fda0c2c0d6c5ae1475f"},{"sha":"aa35b7c63168a7f015847c5325aa6d4dcdffd4a6","author":{"email":"5a3288024fcad83740d827e0862f4c1e6f28e7bf@redhat.com","name":"Yan, Zheng"},"message":"ceph: switch some GFP_NOFS memory allocation to GFP_KERNEL\n\nGFP_NOFS memory allocation is required for page writeback path.\nBut there is no need to use GFP_NOFS in syscall path and readpage\npath\n\nSigned-off-by: Yan, Zheng <zyan@redhat.com>","distinct":true,"url":"https://api.github.com/repos/fullerdj/ceph-client/commits/aa35b7c63168a7f015847c5325aa6d4dcdffd4a6"},{"sha":"4606544f81d88857fa613d7a767b14e1897ec56c","author":{"email":"152d4c5bebf13a5b809d42b4d789cf9d887e6698@gmail.com","name":"Ilya Dryomov"},"message":"crush: fix crash from invalid 'take' argument\n\nVerify that the 'take' argument is a valid device or bucket.\nOtherwise ignore it (do not add the value to the working vector).\n\nReflects ceph.git commit 9324d0a1af61e1c234cc48e2175b4e6320fff8f4.\n\nSigned-off-by: Ilya Dryomov <idryomov@gmail.com>","distinct":true,"url":"https://api.github.com/repos/fullerdj/ceph-client/commits/4606544f81d88857fa613d7a767b14e1897ec56c"},{"sha":"45c7a1f5df419e53c17f2eeb5680d6fb20a07162","author":{"email":"152d4c5bebf13a5b809d42b4d789cf9d887e6698@gmail.com","name":"Ilya Dryomov"},"message":"crush: sync up with userspace\n\n.. up to ceph.git commit 1db1abc8328d (\"crush: eliminate ad hoc diff\nbetween kernel and userspace\").  This fixes a bunch of recently pulled\ncoding style issues and makes includes a bit cleaner.\n\nA patch \"crush:Make the function crush_ln static\" from Nicholas Krause\n<xerofoify@gmail.com> is folded in as crush_ln() has been made static\nin userspace as well.\n\nSigned-off-by: Ilya Dryomov <idryomov@gmail.com>","distinct":true,"url":"https://api.github.com/repos/fullerdj/ceph-client/commits/45c7a1f5df419e53c17f2eeb5680d6fb20a07162"},{"sha":"65bf474a0dbb16a82d108b87c9892d231197b4b6","author":{"email":"5a3288024fcad83740d827e0862f4c1e6f28e7bf@redhat.com","name":"Yan, Zheng"},"message":"ceph: rework dcache readdir\n\nPreviously our dcache readdir code relies on that child dentries in\ndirectory dentry's d_subdir list are sorted by dentry's offset in\ndescending order. When adding dentries to the dcache, if a dentry\nalready exists, our readdir code moves it to head of directory\ndentry's d_subdir list. This design relies on dcache internals.\nAl Viro suggests using ncpfs's approach: keeping array of pointers\nto dentries in page cache of directory inode. the validity of those\npointers are presented by directory inode's complete and ordered\nflags. When a dentry gets pruned, we clear directory inode's complete\nflag in the d_prune() callback. Before moving a dentry to other\ndirectory, we clear the ordered flag for both old and new directory.\n\nSigned-off-by: Yan, Zheng <zyan@redhat.com>","distinct":true,"url":"https://api.github.com/repos/fullerdj/ceph-client/commits/65bf474a0dbb16a82d108b87c9892d231197b4b6"},{"sha":"97348ba5e070037dde22ba01457137d652a1a0ae","author":{"email":"152d4c5bebf13a5b809d42b4d789cf9d887e6698@gmail.com","name":"Ilya Dryomov"},"message":"rbd: bump queue_max_segments\n\nThe default queue_limits::max_segments value (BLK_MAX_SEGMENTS = 128)\nunnecessarily limits bio sizes to 512k (assuming 4k pages).  rbd, being\na virtual block device, doesn't have any restrictions on the number of\nphysical segments, so bump max_segments to max_hw_sectors, in theory\nallowing a sector per segment (although the only case this matters that\nI can think of is some readv/writev style thing).  In practice this is\ngoing to give us 1M bios - the number of segments in a bio is limited\nin bio_get_nr_vecs() by BIO_MAX_PAGES = 256.\n\nNote that this doesn't result in any improvement on a typical direct\nsequential test.  This is because on a box with a not too badly\nfragmented memory the default BLK_MAX_SEGMENTS is enough to see nice\nrbd object size sized requests.  The only difference is the size of\nbios being merged - 512k vs 1M for something like\n\n    $ dd if=/dev/zero of=/dev/rbd0 oflag=direct bs=$RBD_OBJ_SIZE\n    $ dd if=/dev/rbd0 iflag=direct of=/dev/null bs=$RBD_OBJ_SIZE\n\nSigned-off-by: Ilya Dryomov <idryomov@gmail.com>","distinct":true,"url":"https://api.github.com/repos/fullerdj/ceph-client/commits/97348ba5e070037dde22ba01457137d652a1a0ae"},{"sha":"8557f191c0a999aa79935ace8fb2d85086692e4a","author":{"email":"5a3288024fcad83740d827e0862f4c1e6f28e7bf@redhat.com","name":"Yan, Zheng"},"message":"ceph: fix ceph_writepages_start()\n\nBefore a page get locked, someone else can write data to the page\nand increase the i_size. So we should re-check the i_size after\npages are locked.\n\nSigned-off-by: Yan, Zheng <zyan@redhat.com>","distinct":true,"url":"https://api.github.com/repos/fullerdj/ceph-client/commits/8557f191c0a999aa79935ace8fb2d85086692e4a"},{"sha":"6fc5fcc1d6999486677bbe27f7f4a9fb9abde062","author":{"email":"6fe105eefab41990d7ec714c6c25ade3095cdb48@cs.wisc.edu","name":"Mike Christie"},"message":"ceph/rbd: add support for watch notify payloads\n\nThis patch adds support for proto version 1 of watch-notify,\nso drivers like rbd can be sent a buffer with information like\nthe notify operation being performed.\n\nSigned-off-by: Mike Christie <michaelc@cs.wisc.edu>\nReviewed-by: Josh Durgin <jdurgin@redhat.com>","distinct":true,"url":"https://api.github.com/repos/fullerdj/ceph-client/commits/6fc5fcc1d6999486677bbe27f7f4a9fb9abde062"},{"sha":"b5043625aa76d6d3f5f7a45b24a482a666dc59ae","author":{"email":"6fe105eefab41990d7ec714c6c25ade3095cdb48@cs.wisc.edu","name":"Mike Christie"},"message":"ceph/rbd: add support for header version 2 and 3\n\nThis adds support watch-notify header 2 and 3 support, so we can\nget a return_code from those operations.\n\nSigned-off-by: Mike Christie <michaelc@cs.wisc.edu>\n[djf: fixed decoding bits]\nSigned-off-by: Douglas Fuller <dfuller@redhat.com>\nReviewed-by: Josh Durgin <jdurgin@redhat.com>","distinct":true,"url":"https://api.github.com/repos/fullerdj/ceph-client/commits/b5043625aa76d6d3f5f7a45b24a482a666dc59ae"},{"sha":"625268057812d1550fa2abdc65b0ec2af6d77c3e","author":{"email":"6fe105eefab41990d7ec714c6c25ade3095cdb48@cs.wisc.edu","name":"Mike Christie"},"message":"ceph/rbd: update watch-notify ceph_osd_op\n\nThis syncs the ceph_osd_op struct with the current version of ceph\nwhere the watch struct has been updated to support more ops and\nthe notify-ack support has been broken out of the watch struct.\n\nCeph commits\n1a82cc3926fc7bc4cfbdd2fd4dfee8660d5107a1\n2288f318e1b1f6a1c42b185fc1b4c41f23995247\n73720130c34424bf1fe36058ebe8da66976f40fb\n\nIt still has us use the legacy watch op for now. I will add support\nlater. It is mostly a prepartion patch for more advanced notify support.\n\nQuestions:\n\n1. Should linger also be set for CEPH_OSD_WATCH_OP_RECONNECT?\n2. Not sure what watch.gen is used for. Is that for our internal\nuse or does the osd do something with it.\n\nSigned-off-by: Mike Christie <michaelc@cs.wisc.edu>\n[djf: moved watch event definitions to ceph_fs.h]\n[djf: removed changes to rbd.c for SCSI]\nSigned-off-by: Douglas Fuller <dfuller@redhat.com>\nReviewed-by: Josh Durgin <jdurgin@redhat.com>","distinct":true,"url":"https://api.github.com/repos/fullerdj/ceph-client/commits/625268057812d1550fa2abdc65b0ec2af6d77c3e"},{"sha":"2851c6dc644dad121d3a7fc47fed6d245c097c4c","author":{"email":"0ef9a53fb7c9192b7dae0fb57d27c4cb415f4042@redhat.com","name":"Douglas Fuller"},"message":"osd_client, rbd: update event interface for watch/notify2\n\nChange unused ceph_osd_event structure to refer to pending watch/notify2\nmessages. Watch events include the separate watch and watch error callbacks\nused for watch/notify2. Update rbd to use separate watch and watch error\ncallbacks via the new watch event.\n\nSigned-off-by: Douglas Fuller <dfuller@redhat.com>","distinct":true,"url":"https://api.github.com/repos/fullerdj/ceph-client/commits/2851c6dc644dad121d3a7fc47fed6d245c097c4c"},{"sha":"005fc3ad2a75a1807fe52480dc64facf03bf342b","author":{"email":"0ef9a53fb7c9192b7dae0fb57d27c4cb415f4042@redhat.com","name":"Douglas Fuller"},"message":"osd_client: add support for notify payloads via notify event\n\nAdd support in notify events for receiving data from notify_ack. Notify\nevents are optional; data is discarded if no event is found.\n\nSigned-off-by: Douglas Fuller <dfuller@redhat.com>","distinct":true,"url":"https://api.github.com/repos/fullerdj/ceph-client/commits/005fc3ad2a75a1807fe52480dc64facf03bf342b"}]}