summaryrefslogtreecommitdiff
path: root/drivers/md/bcache/request.c
AgeCommit message (Collapse)Author
2017-02-02bcache: cleanups for building in userspaceKent Overstreet
2017-01-18bcache: btree write path improvements, kill struct bbioKent Overstreet
2017-01-18bcache: Better locking for linked iteratorsKent Overstreet
Linked iterators are now no longer requried to be traversed in key order; instead, they'll return -EINTR if the caller needs to restart, because they had to drop/reacquire locks to avoid deadlocking.
2017-01-18bcache: better error messagesKent Overstreet
2017-01-18bcache: bch_write_op_init() cleanupsKent Overstreet
2017-01-18bcache: plumb nr_replicas through disk_reservationsKent Overstreet
2017-01-18bcache: bch_disk_reservation_get() now takes flags argumentKent Overstreet
2017-01-18bcache: fix promotion locking bugKent Overstreet
promote path uses @k for replace key, but it pointed into unlocked btree node
2017-01-18bcache: kill skip parameter to bch_read_extent()Kent Overstreet
2017-01-18bcache: have bch_write() verify bio->bi_sector/sizeKent Overstreet
2017-01-18bcache: strip another allocation out of the read pathKent Overstreet
2017-01-18bcache: Plumb disk_reservation through bch_writeKent Overstreet
2017-01-18bcache: Plumb insert hook through bch_write() pathKent Overstreet
2017-01-18bcache: drop dc->sbKent Overstreet
2017-01-18bcache: split off backingdev_sbKent Overstreet
The superblock formats are diverging too much
2017-01-18bcache: bch_read() cleanupKent Overstreet
2017-01-18bcache: minor optimizationKent Overstreet
it appears gcc is still stupid about returning structs by value
2017-01-18bcache: break btree.c up into multiple filesKent Overstreet
2017-01-18bcache: Rework error handling/loggingKent Overstreet
2017-01-18bcache: Don't return -EAGAIN from bch_btree_insert_at()Kent Overstreet
2017-01-18bcache: Plump through journal error checksKent Overstreet
2017-01-18bcache: Drop closure arg top bch_btree_insert/update()Kent Overstreet
2017-01-18bcache: clean up some blockdev/blockdev volume stuffKent Overstreet
2017-01-18bcache: data checksummingKent Overstreet
2017-01-18bcache: bch_write_bioKent Overstreet
2017-01-18bcache: Add struct extent_pick_ptrKent Overstreet
more prep work for data checksumming/compression
2017-01-18bcache: Switch bch_extent_ptr to bitfields, make EXTENT_CACHED betterKent Overstreet
2017-01-18bcache: Convert to inline mempools/biosetsKent Overstreet
2017-01-18bcache: More journal related refactoringKent Overstreet
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2017-01-18bcache: reduce b->c usage (benchmark)Kent Overstreet
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2017-01-18bcache: General purpose IO clocksKent Overstreet
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2017-01-18bcache: Packed bkeysKent Overstreet
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2017-01-18bcache: Don't insert deleted keys with nonzero sizeKent Overstreet
This is the other half of making it possible for the btree node iterator to not compare against bkey_start_pos(): in order to still see keys in order by start pos, we need to ensure that a 0 size extent sorts after a nonzero size extent at the same position. We could do this by comparing !k->size if the keys compare as equal, but part of why we're making this change is for packed bkeys - once we have packed bkeys, comparing !k->size will require unpacking the key (expensive). So we'll use bkey_deleted() as a proxy for !k->size, and disallow bkey_deleted(k) == true and k->size != 0. Where previously we did discards by inserting KEY_DELETED keys, now we'll just use KEY_DISCARD with version = 0 - and bch_extent_normalize() will drop these keys later (the idea being that we can drop a KEY_DISCARD key with version = 0 without losing information). Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2017-01-18bcache: rototill super.cKent Overstreet
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2017-01-18bcache: More superblock changesKent Overstreet
- Add another UUID for identifying the cache set - one that the user is allowed to set/change - Move device geometry to cache_member, so that it's available for validating pointers when the device is offline. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2017-01-18bcache: Convert other code to use bch_extent_ptrKent Overstreet
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2017-01-18bcache: New bkey formatKent Overstreet
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2017-01-18bcache: When forcing device removal, traverse tree and remove all keys.Bill Rozas
This adds support for a new KEY_BAD type. If data migration fails, and device removal is proceeding, sweep the btree and replace any residual keys that point to the device being removed with KEY_BAD keys if they have no valid pointers left. If they have valid pointers left (very unusual), use PTR_LOST_DEV instead. Reading a KEY_BAD key (or a key with only PTR_LOST_DEV) returns an I/O error. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2017-01-18bcache: Log a message whenever we generate an IO errorKent Overstreet
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2017-01-18bcache: Variable sized buckets rework.Jacob Malevich
- Caches within the cache set can now have different sized buckets. Whenever there is a request for the bucket_pages or bucket_bytes from the cache_set, search for the corresponding cache instead of using the cacheset bucket_size. - The bucket_size in the cache_set superblock shouldn't be used for anything. - Add a bio to the cache that will be reused for rw of prios. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2017-01-18bcache: Switch bch_write_op_init() to bitflagsKent Overstreet
Also make cached a parameter - prep work for the new bkey format Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2017-01-18bcache: use write ref for btree updatesKent Overstreet
this means we have a new error code to return from bch_btree_insert_at(), so clean up the various insert_at() uses Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2017-01-18bcache: Convert bch_btree_insert_node() to btree_iterKent Overstreet
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2017-01-18bcache: Convert other map_keys()/map_nodes() users to btree_iterKent Overstreet
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2017-01-18bcache: Kill btree_op->alloc_reserveKent Overstreet
Prep work for external iterators Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2017-01-18bcache: more race fault injection pointsKent Overstreet
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2017-01-18bcache: have bch_extent_pick_ptr() return error if data missingKent Overstreet
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2017-01-18Make snapshot restorations walk the extents on the client.Bill Rozas
Making (fresh) snapshots works server side because the destination lun is empty. However, if the destination lun is not empty, preserving the source version numbers opens the possibility that an offline server contains a more recent destination version that will 'spontaneously appear' when the server comes back online. Thus any snapshot restoration (or copy when the destination is not empty) needs to use new version numbers, and as such must only copy the most recent source extents (else the copied source extents cannot be sorted properly as they'll all have the same version number). This adds RPCs, etc. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2017-01-18bcache: blockdev.cKent Overstreet
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
2017-01-18bcache: rename bch_data_insert() -> bch_write()Kent Overstreet
Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>