{"shas":[["8f14a59f195ddece9c746f01798c7474bdcca598","52f8f9962b7f38d8269c63c0859d68147c8d10f0@redhat.com","Fix a possible dm-kcopyd deadlock - preallocate sub jobs\n\nHi\n\nHere I'm sending some patches for kcopyd. This first one fixes a\ntreoretical deadlock, the other patches are a code cleanup (removing some\n\"magic\" numbers in mempool resrvations).\n\nLater, I will follow with patches that rework page reservations.\n\nMikulas","Mikulas Patocka"],["2e60164efeef92d9d5ce74855c7b8868ca259c42","52f8f9962b7f38d8269c63c0859d68147c8d10f0@redhat.com","Reserve just one mempool entry\n\nReserve just one mempool entry\n\nIf our implementation is deadlock-free, we don't need large mempool\nreserve. Just one entry is enough.\n\nNote that in normal case, when if there is no memory pressure, we can\nstill allocate arbitrary number of entries from the slab cache.\n\nSigned-off-by: Mikulas Patocka <mpatocka@redhat.com>","Mikulas Patocka"],["607202926aa3d2d3096c9aab1a2f350c9b15c22a","52f8f9962b7f38d8269c63c0859d68147c8d10f0@redhat.com","dm-io: reserve just one structure\n\ndm-io: reserve just one structure\n\nThe reservation counting was totally meaningless.\nWe always allocate one \"struct io\" for request, no matter how big the request\nis. The code calculated the number of reserved structures depending on request\nsize and used some \"magic\" multiplication constant 4. It didn't have any\npurpose. The patch changes it to reserve just one structure.\n\nNote that if there is no memory stress, we can still allocate arbitrary number\nof \"struct io\" structures. If there is memory stress, we are guaranteed to\nallocate one \"io\" structure. One structure is enough to process the whole\nrequest, so it's ok.\n\nSigned-off-by: Mikulas Patocka <mpatocka@redhat.com>","Mikulas Patocka"],["f271194e2c257dfc1a7e7f70399821f138e05594","52f8f9962b7f38d8269c63c0859d68147c8d10f0@redhat.com","dm-io: reserve just one bioset structure\n\ndm-io: reserve just one bioset structure\n\nThe number 16 was \"magic\" and meaningless. This patch changes it to reserve just\none \"struct bio\", which is the minimum required.\n\nIf there is no memory pressure, the code can allocate arbitrary number of bios.\n\nIf there is memory pressure, the code can allocate just one bio. The code in\n\"do_region\" contains a loop, it allocates a bio, fills it and submits it. If we\nhave just one bio available, the code wouldn't deadlock, it would just wait\nwith the allocation of next bio until the previous bio finished.\n\nSigned-off-by: Mikulas Patocka <mpatocka@redhat.com>","Mikulas Patocka"],["56a7e9141df5d1238ae291d3e4d49659e7062b7c","52f8f9962b7f38d8269c63c0859d68147c8d10f0@redhat.com","Remove the spinlock protecting the pages allocation\n\nRemove the spinlock protecting the pages allocation\n\nThe spinlock is taken in kcopyd_get_pages and kcopyd_put_pages.\n\nkcopyd_get_pages is only called from run_pages_job, which is only\ncalled from process_jobs called from do_work.\n\nkcopyd_put_pages is called from client_alloc_pages (which is initialization\nfunction) or from run_complete_job. run_complete_job is only called from\nprocess_jobs called from do_work.\n\nThe spinlock is only taken on initialization or from single-threaded workqueue.\nTherefore, the spinlock is useless.\n\nSigned-off-by: Mikulas Patocka <mpatocka@redhat.com>","Mikulas Patocka"],["2a4cc46beaf1a85fce6716d1ac9f737b398a81a6","52f8f9962b7f38d8269c63c0859d68147c8d10f0@redhat.com","Don't split SUB_JOB_SIZE jobs\n\nDon't split SUB_JOB_SIZE jobs\n\nIf the job size equals SUB_JOB_SIZE, there is no point in splitting it.\nSplitting it just unnecessarily wastes time, because the split job size\nis SUB_JOB_SIZE too.\n\nSigned-off-by: Mikulas Patocka <mpatocka@redhat.com>","Mikulas Patocka"],["6216fb5f3268e1c8eccbbbdc742fc3ad8d6cf160","24e19d6e6cfa20fcb635e1190a4fc529f4febe75@gmail.com","whitespace","Joe Thornber"],["3f94c3d0d679074b13cee91b46b5a31f39db2cd9","24e19d6e6cfa20fcb635e1190a4fc529f4febe75@gmail.com","Merge branch 'mikulas-kcopyd-changes' into multisnap","Joe Thornber"],["3ff777948ee4750225df48bb42fafb784f5907ce","24e19d6e6cfa20fcb635e1190a4fc529f4febe75@gmail.com","dm_io_client_create() no longer takes an arg","Joe Thornber"],["8ef527f01a21e09e2ac4416ea1e025ba92c0e439","24e19d6e6cfa20fcb635e1190a4fc529f4febe75@gmail.com","change the metadata block size back to 4096","Joe Thornber"],["0fbe51db2036178d2bb569c71d049ea1d57f5680","85e533f2e78486213c4d69f71462342ec0c62734@redhat.com","persistent data: small cleanup in dm_block_manager structure\n\nEliminate sectors_per_block member (easily determined from block_size).\nMove dm_io_client member so that 4byte hole moves to the end of 'struct\nblock_manager'.\nAdd missing #ifdef DEBUG in lock_internal().\nAdded FIXME to superblock_all_zeroes().","Mike Snitzer"],["c7eb4970a55281fa27c7b9bb7e33315c18fea189","85e533f2e78486213c4d69f71462342ec0c62734@redhat.com","block manager: pack dm_block structure\n\nEliminate 2 4-byte holes in 'struct dm_block', overall size reduced\nfrom 176 bytes to 168 bytes.","Mike Snitzer"],["78a46a2c656a2a5115fe9f675a9446513223df2e","85e533f2e78486213c4d69f71462342ec0c62734@redhat.com","persistent data: rename header #define guards to match file names","Mike Snitzer"],["e07bf3abb538d0b5faeba9e31bbe6f470fc1a710","85e533f2e78486213c4d69f71462342ec0c62734@redhat.com","persistent data: cleanup code format in header files","Mike Snitzer"],["1796f5ffe869cdbf595be5f6ecaab358de15a140","24e19d6e6cfa20fcb635e1190a4fc529f4febe75@gmail.com","persistent data: rename dm_btree_lookup_equal to dm_btree_lookup","Joe Thornber"]],"repo":"jthornber/linux-2.6","actor":"jthornber","ref":"refs/heads/multisnap","size":15,"head":"1796f5ffe869cdbf595be5f6ecaab358de15a140","actor_gravatar":"1c56f142017f452f98677123ba770e26","push_id":32024786}