#
dfd9875f |
| 06-Feb-2018 |
Ilya Dryomov <idryomov@gmail.com> |
rbd: get rid of img_req->{offset,length}
These are set, but no longer used.
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
|
#
0420c5dd |
| 06-Feb-2018 |
Ilya Dryomov <idryomov@gmail.com> |
rbd: remove rbd_img_request_fill() and helpers
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
|
#
5a237819 |
| 06-Feb-2018 |
Ilya Dryomov <idryomov@gmail.com> |
rbd: switch to common striping framework
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
|
#
2bb1e56e |
| 06-Feb-2018 |
Ilya Dryomov <idryomov@gmail.com> |
rbd: create+truncate for whole-object layered discards
A whole-object layered discard is implemented as a truncate rather than a delete: a dummy object is needed to prevent the CoW machinery from ki
rbd: create+truncate for whole-object layered discards
A whole-object layered discard is implemented as a truncate rather than a delete: a dummy object is needed to prevent the CoW machinery from kicking in. However, a truncate on a non-existent object is a no-op. If the object doesn't exist in HEAD, a discard request is effectively ignored, which violates our "discard zeroes data" promise and breaks REQ_OP_WRITE_ZEROES implementation.
A non-exclusive create on an existing object is also a no-op, so the fix is to do a compound create+truncate instead.
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
show more ...
|
#
86bd7998 |
| 06-Feb-2018 |
Ilya Dryomov <idryomov@gmail.com> |
rbd: move to obj_req->img_extents
In preparation for rbd "fancy" striping, replace obj_req->img_offset with obj_req->img_extents. A single starting offset isn't sufficient because we want only one
rbd: move to obj_req->img_extents
In preparation for rbd "fancy" striping, replace obj_req->img_offset with obj_req->img_extents. A single starting offset isn't sufficient because we want only one OSD request per object and will merge adjacent object extents in ceph_file_to_extents(). The final object extent may map into multiple different byte ranges in the image.
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
show more ...
|
#
43df3d35 |
| 02-Feb-2018 |
Ilya Dryomov <idryomov@gmail.com> |
rbd: incorporate ceph_object_extent
obj_req->object_no -> obj_req->ex.oe_objno obj_req->offset -> obj_req->ex.oe_off obj_req->length -> obj_req->ex.oe_len
... and use ex for linking object requests
rbd: incorporate ceph_object_extent
obj_req->object_no -> obj_req->ex.oe_objno obj_req->offset -> obj_req->ex.oe_off obj_req->length -> obj_req->ex.oe_len
... and use ex for linking object requests to image requests.
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
show more ...
|
#
ecc633ca |
| 01-Feb-2018 |
Ilya Dryomov <idryomov@gmail.com> |
rbd: store data_type in img_req instead of obj_req
All object requests are associated with an image request now -- avoid duplicating the same info in each object request.
Signed-off-by: Ilya Dryomo
rbd: store data_type in img_req instead of obj_req
All object requests are associated with an image request now -- avoid duplicating the same info in each object request.
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
show more ...
|
#
0be2d60e |
| 01-Feb-2018 |
Ilya Dryomov <idryomov@gmail.com> |
rbd: remove obj_req->flags field
There are no standalone (!IMG_DATA) object requests anymore.
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
|
#
15961b44 |
| 01-Feb-2018 |
Ilya Dryomov <idryomov@gmail.com> |
rbd: remove old request completion code
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
|
#
7114edac |
| 01-Feb-2018 |
Ilya Dryomov <idryomov@gmail.com> |
rbd: new request completion code
Do away with partial request completions and all the associated complexity. Individual object requests no longer need to be completed in order -- when the last one
rbd: new request completion code
Do away with partial request completions and all the associated complexity. Individual object requests no longer need to be completed in order -- when the last one becomes ready, we complete the entire higher level request all at once.
This also wraps up the conversion to a state machine model and eliminates the recursion described in commit 6d69bb536bac ("rbd: prevent kernel stack blow up on rbd map").
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
show more ...
|
#
efbd1a11 |
| 30-Jan-2018 |
Ilya Dryomov <idryomov@gmail.com> |
rbd: update rbd_img_request_submit() signature
It should be void now. Also, object requests are unlinked only in image request destructor, which can't run before rbd_img_request_put(), so no need f
rbd: update rbd_img_request_submit() signature
It should be void now. Also, object requests are unlinked only in image request destructor, which can't run before rbd_img_request_put(), so no need for _safe.
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
show more ...
|
#
9bb0248d |
| 30-Jan-2018 |
Ilya Dryomov <idryomov@gmail.com> |
rbd: add img_req->op_type field
Store op_type in its own field instead of packing it into flags.
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
|
#
a162b308 |
| 30-Jan-2018 |
Ilya Dryomov <idryomov@gmail.com> |
rbd: simplify rbd_osd_req_create()
No need to pass rbd_dev and op_type to rbd_osd_req_create(): there are no standalone (!IMG_DATA) object requests anymore and osd_req->r_flags can be set in rbd_osd
rbd: simplify rbd_osd_req_create()
No need to pass rbd_dev and op_type to rbd_osd_req_create(): there are no standalone (!IMG_DATA) object requests anymore and osd_req->r_flags can be set in rbd_osd_req_format_{read,write}().
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
show more ...
|
#
51c3509e |
| 29-Jan-2018 |
Ilya Dryomov <idryomov@gmail.com> |
rbd: remove old request handling code
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
|
#
3da691bf |
| 29-Jan-2018 |
Ilya Dryomov <idryomov@gmail.com> |
rbd: new request handling code
The notable changes are:
- instead of explicitly stat'ing the object to see if it exists before issuing the write, send the write optimistically along with the stat
rbd: new request handling code
The notable changes are:
- instead of explicitly stat'ing the object to see if it exists before issuing the write, send the write optimistically along with the stat in a single OSD request - zero copyup optimization - all object requests are associated with an image request and have a valid ->img_request pointer; there are no standalone (!IMG_DATA) object requests anymore - code is structured as a state machine (vs a bunch of callbacks with implicit state)
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
show more ...
|
Revision tags: v4.15 |
|
#
7e07efb1 |
| 20-Jan-2018 |
Ilya Dryomov <idryomov@gmail.com> |
rbd: move from raw pages to bvec data descriptors
In preparation for rbd "fancy" striping which requires bio_vec arrays, wire up BVECS data type and kill off PAGES data type. There is nothing wrong
rbd: move from raw pages to bvec data descriptors
In preparation for rbd "fancy" striping which requires bio_vec arrays, wire up BVECS data type and kill off PAGES data type. There is nothing wrong with using page vectors for copyup requests -- it's just less iterator boilerplate code to write for the new striping framework.
Signed-off-by: Ilya Dryomov <idryomov@gmail.com> Reviewed-by: Alex Elder <elder@linaro.org>
show more ...
|
#
f9dcbc44 |
| 20-Jan-2018 |
Ilya Dryomov <idryomov@gmail.com> |
rbd: get rid of img_req->copyup_pages
The initiating object request is the proper owner -- save a bit of space.
Signed-off-by: Ilya Dryomov <idryomov@gmail.com> Reviewed-by: Alex Elder <elder@linar
rbd: get rid of img_req->copyup_pages
The initiating object request is the proper owner -- save a bit of space.
Signed-off-by: Ilya Dryomov <idryomov@gmail.com> Reviewed-by: Alex Elder <elder@linaro.org>
show more ...
|
#
06fbb699 |
| 20-Jan-2018 |
Ilya Dryomov <idryomov@gmail.com> |
rbd: don't (ab)use obj_req->pages for stat requests
obj_req->pages is for provided data buffers. stat requests are internal and should be NODATA.
Signed-off-by: Ilya Dryomov <idryomov@gmail.com> R
rbd: don't (ab)use obj_req->pages for stat requests
obj_req->pages is for provided data buffers. stat requests are internal and should be NODATA.
Signed-off-by: Ilya Dryomov <idryomov@gmail.com> Reviewed-by: Alex Elder <elder@linaro.org>
show more ...
|
#
df6ba701 |
| 20-Jan-2018 |
Ilya Dryomov <idryomov@gmail.com> |
rbd: remove bio cloning helpers
Signed-off-by: Ilya Dryomov <idryomov@gmail.com> Reviewed-by: Alex Elder <elder@linaro.org>
|
#
5359a17d |
| 20-Jan-2018 |
Ilya Dryomov <idryomov@gmail.com> |
libceph, rbd: new bio handling code (aka don't clone bios)
The reason we clone bios is to be able to give each object request (and consequently each ceph_osd_data/ceph_msg_data item) its own pointer
libceph, rbd: new bio handling code (aka don't clone bios)
The reason we clone bios is to be able to give each object request (and consequently each ceph_osd_data/ceph_msg_data item) its own pointer to a (list of) bio(s). The messenger then initializes its cursor with cloned bio's ->bi_iter, so it knows where to start reading from/writing to. That's all the cloned bios are used for: to determine each object request's starting position in the provided data buffer.
Introduce ceph_bio_iter to do exactly that -- store position within bio list (i.e. pointer to bio) + position within that bio (i.e. bvec_iter).
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
show more ...
|
#
a1fbb5e7 |
| 16-Jan-2018 |
Ilya Dryomov <idryomov@gmail.com> |
rbd: start enums at 1 instead of 0
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
|
#
24f1df60 |
| 12-Jan-2018 |
Ilya Dryomov <idryomov@gmail.com> |
rbd: set max_segment_size to UINT_MAX
Commit 21acdf45f495 ("rbd: set max_segments to USHRT_MAX") removed the limit on max_segments. Remove the limit on max_segment_size as well.
Signed-off-by: Ily
rbd: set max_segment_size to UINT_MAX
Commit 21acdf45f495 ("rbd: set max_segments to USHRT_MAX") removed the limit on max_segments. Remove the limit on max_segment_size as well.
Signed-off-by: Ilya Dryomov <idryomov@gmail.com> Reviewed-by: Alex Elder <elder@linaro.org>
show more ...
|
#
233bde21 |
| 14-Mar-2018 |
Bart Van Assche <bart.vanassche@wdc.com> |
block: Move SECTOR_SIZE and SECTOR_SHIFT definitions into <linux/blkdev.h>
It happens often while I'm preparing a patch for a block driver that I'm wondering: is a definition of SECTOR_SIZE and/or S
block: Move SECTOR_SIZE and SECTOR_SHIFT definitions into <linux/blkdev.h>
It happens often while I'm preparing a patch for a block driver that I'm wondering: is a definition of SECTOR_SIZE and/or SECTOR_SHIFT available for this driver? Do I have to introduce definitions of these constants before I can use these constants? To avoid this confusion, move the existing definitions of SECTOR_SIZE and SECTOR_SHIFT into the <linux/blkdev.h> header file such that these become available for all block drivers. Make the SECTOR_SIZE definition in the uapi msdos_fs.h header file conditional to avoid that including that header file after <linux/blkdev.h> causes the compiler to complain about a SECTOR_SIZE redefinition.
Note: the SECTOR_SIZE / SECTOR_SHIFT / SECTOR_BITS definitions have not been removed from uapi header files nor from NAND drivers in which these constants are used for another purpose than converting block layer offsets and sizes into a number of sectors.
Cc: David S. Miller <davem@davemloft.net> Cc: Mike Snitzer <snitzer@redhat.com> Cc: Dan Williams <dan.j.williams@intel.com> Cc: Minchan Kim <minchan@kernel.org> Cc: Nitin Gupta <ngupta@vflare.org> Reviewed-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
show more ...
|
#
8b904b5b |
| 07-Mar-2018 |
Bart Van Assche <bart.vanassche@wdc.com> |
block: Use blk_queue_flag_*() in drivers instead of queue_flag_*()
This patch has been generated as follows:
for verb in set_unlocked clear_unlocked set clear; do replace-in-files queue_flag_${ve
block: Use blk_queue_flag_*() in drivers instead of queue_flag_*()
This patch has been generated as follows:
for verb in set_unlocked clear_unlocked set clear; do replace-in-files queue_flag_${verb} blk_queue_flag_${verb%_unlocked} \ $(git grep -lw queue_flag_${verb} drivers block/bsg*) done
Except for protecting all queue flag changes with the queue lock this patch does not change any functionality.
Cc: Mike Snitzer <snitzer@redhat.com> Cc: Shaohua Li <shli@fb.com> Cc: Christoph Hellwig <hch@lst.de> Cc: Hannes Reinecke <hare@suse.de> Cc: Ming Lei <ming.lei@redhat.com> Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Reviewed-by: Johannes Thumshirn <jthumshirn@suse.de> Acked-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
show more ...
|
#
e573427a |
| 16-Jan-2018 |
Ilya Dryomov <idryomov@gmail.com> |
rbd: whitelist RBD_FEATURE_OPERATIONS feature bit
This feature bit restricts older clients from performing certain maintenance operations against an image (e.g. clone, snap create). krbd does not pe
rbd: whitelist RBD_FEATURE_OPERATIONS feature bit
This feature bit restricts older clients from performing certain maintenance operations against an image (e.g. clone, snap create). krbd does not perform maintenance operations.
Cc: stable@vger.kernel.org Signed-off-by: Ilya Dryomov <idryomov@gmail.com> Reviewed-by: Jason Dillaman <dillaman@redhat.com>
show more ...
|