aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block/rbd.c
Commit message (Collapse)AuthorAgeFilesLines
* rbd: set blk_queue request sizes to object sizeJosh Durgin2011-07-261-0/+15
| | | | | | | This improves performance since more requests can be merged. Reviewed-by: Yehuda Sadeh <yehuda@hq.newdream.net> Signed-off-by: Josh Durgin <josh.durgin@dreamhost.com>
* rbd: cancel watch request when releasing the deviceYehuda Sadeh2011-07-261-1/+30
| | | | | | | | We were missing this cleanup, so when a device was released the osd didn't clean up its watchers list, so following notifications could be slow as osd needed to timeout on the client. Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net>
* rbd: handle online resize of underlying rbd imageSage Weil2011-05-241-0/+3
| | | | | | | If we get a notification that the image header has changed, check for a change in the image size. Signed-off-by: Sage Weil <sage@newdream.net>
* rbd: use snprintf for disk->disk_nameSage Weil2011-05-241-1/+2
| | | | Signed-off-by: Sage Weil <sage@newdream.net>
* rbd: cleanup: make kfree match kmallocSage Weil2011-05-241-7/+7
| | | | Signed-off-by: Sage Weil <sage@newdream.net>
* rbd: warn on update_snaps failure on notifySage Weil2011-05-191-1/+6
| | | | Signed-off-by: Sage Weil <sage@newdream.net>
* rbd: fix split bio handlingYehuda Sadeh2011-05-131-20/+151
| | | | | | | | | | | | | | | | | | The rbd driver currently splits bios when they span an object boundary. However, the blk_end_request expects the completions to roll up the results in block device order, and the split rbd/ceph ops can complete in any order. This patch adds a struct rbd_req_coll to track completion of split requests and ensures that the results are passed back up to the block layer in order. This fixes errors where the file system gets completion of a read operation that spans an object boundary before the data has actually arrived. The bug is easily reproduced with iozone with a working set larger than available RAM. Reported-by: Fyodor Ustinov <ufm@ufm.su> Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net> Signed-off-by: Sage Weil <sage@newdream.net>
* rbd: fix leak of ops structSage Weil2011-05-121-1/+5
| | | | | | The ops vector must be freed by the rbd_do_request caller. Signed-off-by: Sage Weil <sage@newdream.net>
* libceph: fix ceph_osdc_alloc_request error checksSage Weil2011-05-031-2/+2
| | | | | | ceph_osdc_alloc_request returns NULL on failure. Signed-off-by: Sage Weil <sage@newdream.net>
* rbd: use watch/notify for changes in rbd headerYehuda Sadeh2011-03-221-26/+335
| | | | | | | | | Send notifications when we change the rbd header (e.g. create a snapshot) and wait for such notifications. This allows synchronizing the snapshot creation between different rbd clients/rools. Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net> Signed-off-by: Sage Weil <sage@newdream.net>
* rbd: fix cleanup when trying to mount inexistent imageYehuda Sadeh2011-01-121-4/+15
| | | | | | | | Previously we didn't clean up the sysfs entry that was just created. Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net> Signed-off-by: Sage Weil <sage@newdream.net>
* rbd: replace the rbd sysfs interfaceYehuda Sadeh2010-12-011-277/+471
| | | | | | | | | | | The new interface creates directories per mapped image and under each it creates a subdir per available snapshot. This allows keeping a cleaner interface within the sysfs guidelines. The ABI documentation was updated too. Acked-by: Greg Kroah-Hartman <gregkh@suse.de> Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net> Signed-off-by: Sage Weil <sage@newdream.net>
* rbd: passing wrong variable to bvec_kunmap_irq()Dan Carpenter2010-10-201-1/+1
| | | | | | | | | We should be passing "buf" here insead of "bv". This is tricky because it's not the same as kmap() and kunmap(). GCC does warn about it if you compile on i386 with CONFIG_HIGHMEM. Signed-off-by: Dan Carpenter <error27@gmail.com> Signed-off-by: Sage Weil <sage@newdream.net>
* rbd: null vs ERR_PTRDan Carpenter2010-10-201-2/+2
| | | | | | | ceph_alloc_page_vector() returns ERR_PTR(-ENOMEM) on errors. Signed-off-by: Dan Carpenter <error27@gmail.com> Signed-off-by: Sage Weil <sage@newdream.net>
* block: rbd: removing unnecessary testYehuda Sadeh2010-10-201-4/+0
| | | | | | | rbd_get_segment() can't return a negative value, we don't need to check the return output. Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net>
* block: rbd: fixed may leaksVasiliy Kulikov2010-10-201-6/+8
| | | | | | | | | | rbd_client_create() doesn't free rbdc, this leads to many leaks. seg_len in rbd_do_op() is unsigned, so (seg_len < 0) makes no sense. Also if fixed check fails then seg_name is leaked. Signed-off-by: Vasiliy Kulikov <segooon@gmail.com> Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net>
* rbd: introduce rados block device (rbd), based on libcephYehuda Sadeh2010-10-201-0/+1843
The rados block device (rbd), based on osdblk, creates a block device that is backed by objects stored in the Ceph distributed object storage cluster. Each device consists of a single metadata object and data striped over many data objects. The rbd driver supports read-only snapshots. Signed-off-by: Yehuda Sadeh <yehuda@hq.newdream.net> Signed-off-by: Sage Weil <sage@newdream.net>