Re: [PATCH] rbd: send snapshot context with writes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Alex!

On Thu, 27 Jun 2013, Alex Elder wrote:
> On 06/26/2013 03:06 PM, Josh Durgin wrote:
> > Sending the right snapshot context with each write is required for
> > snapshots to work. Due to the ordering of calls, the snapshot context
> > is never set for any requests. This causes writes to the current
> > version of the image to be reflected in all snapshots, which are
> > supposed to be read-only.
> > 
> > This happens because rbd_osd_req_format_write() sets the snapshot
> > context based on obj_request->img_request. At this point, however,
> > obj_request->img_request has not been set yet, to the snapshot context
> > is set to NULL. Fix this by moving rbd_img_obj_request_add(), which
> > sets obj_request->img_request, before the osd request formatting
> > calls.
> > 
> > This resolves:
> >     http://tracker.ceph.com/issues/5465
> 
> That appears to be the wrong bug number.
> 
> One fix needed for commenting style (don't use "//"), but otherwise
> this looks good.
> 
> Reviewed-by: Alex Elder <elder@xxxxxxxxxx>

Looks like the comments were already fixed up to the commit that landed 
in the tree.  I've added your reviewed-by, though.

Thanks!
sage

> 
> > Reported-by: Karol Jurak <karol.jurak@xxxxxxxxx>
> > Signed-off-by: Josh Durgin <josh.durgin@xxxxxxxxxxx>
> > ---
> >  drivers/block/rbd.c |    4 +++-
> >  1 files changed, 3 insertions(+), 1 deletions(-)
> > 
> > diff --git a/drivers/block/rbd.c b/drivers/block/rbd.c
> > index d79831a..4b03d02 100644
> > --- a/drivers/block/rbd.c
> > +++ b/drivers/block/rbd.c
> > @@ -2266,13 +2266,15 @@ static int rbd_img_request_fill(struct rbd_img_request *img_request,
> >  					obj_request->pages, length,
> >  					offset & ~PAGE_MASK, false, false);
> >  
> > +		// writes get the snapc from the img_request, so
> > +		// set it before formatting the osd_req
> 
> Don't use C++ comments, use /* */.
> 
> > +		rbd_img_obj_request_add(img_request, obj_request);
> >  		if (write_request)
> >  			rbd_osd_req_format_write(obj_request);
> >  		else
> >  			rbd_osd_req_format_read(obj_request);
> >  
> >  		obj_request->img_offset = img_offset;
> > -		rbd_img_obj_request_add(img_request, obj_request);
> >  
> >  		img_offset += length;
> >  		resid -= length;
> > 
> 
> --
> To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux