Re: [PATCH] libceph: add ignore cache/overlay flag if got redirect reply

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

 



On Tue, 19 May 2020 at 21:32, Ilya Dryomov <idryomov@xxxxxxxxx> wrote:
>
> On Tue, May 19, 2020 at 12:30 PM Jerry Lee <leisurelysw24@xxxxxxxxx> wrote:
> >
> > On Tue, 19 May 2020 at 17:14, Ilya Dryomov <idryomov@xxxxxxxxx> wrote:
> > >
> > > On Mon, May 18, 2020 at 10:03 AM Jerry Lee <leisurelysw24@xxxxxxxxx> wrote:
> > > >
> > > > osd client should ignore cache/overlay flag if got redirect reply.
> > > > Otherwise, the client hangs when the cache tier is in forward mode.
> > > >
> > > > Similar issues:
> > > >    https://tracker.ceph.com/issues/23296
> > > >    https://tracker.ceph.com/issues/36406
> > > >
> > > > Signed-off-by: Jerry Lee <leisurelysw24@xxxxxxxxx>
> > > > ---
> > > >  net/ceph/osd_client.c | 4 +++-
> > > >  1 file changed, 3 insertions(+), 1 deletion(-)
> > > >
> > > > diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c
> > > > index 998e26b..1d4973f 100644
> > > > --- a/net/ceph/osd_client.c
> > > > +++ b/net/ceph/osd_client.c
> > > > @@ -3649,7 +3649,9 @@ static void handle_reply(struct ceph_osd *osd,
> > > > struct ceph_msg *msg)
> > > >                  * supported.
> > > >                  */
> > > >                 req->r_t.target_oloc.pool = m.redirect.oloc.pool;
> > > > -               req->r_flags |= CEPH_OSD_FLAG_REDIRECTED;
> > > > +               req->r_flags |= CEPH_OSD_FLAG_REDIRECTED |
> > > > +                               CEPH_OSD_FLAG_IGNORE_OVERLAY |
> > > > +                               CEPH_OSD_FLAG_IGNORE_CACHE;
> > > >                 req->r_tid = 0;
> > > >                 __submit_request(req, false);
> > > >                 goto out_unlock_osdc;
> > >
> > > Hi Jerry,
> > >
> > > Looks good (although the patch was whitespace damaged).  I've fixed
> > > it up, but check out Documentation/process/email-clients.rst.
> > Thanks for sharing the doc!
> > >
> > > Also, out of curiosity, are you actually using the forward cache mode?
> > No, we accidentally found the issue when removing a writeback cache.
> > The kernel client got blocked when the cache mode switched from
> > writeback to forward and waited for the cache pool to be flushed.
> >
> > BTW, a warning (Error EPERM: 'forward' is not a well-supported cache
> > mode and may corrupt your data.) is shown when the cache mode is
> > changed to forward mode.  Does it mean that the data integrity and IO
> > ordering cannot be ensured in this mode?
>
> Yes.  The problem with redirects is that they can mess up the order
> of requests.  The forward mode is based on redirects and therefore
> inherently flawed.
>
> Use proxy and readproxy modes instead of forward and readforward.
>

Thanks for the clarification.  I refer to the mimic version
cache-tering configuration guide which states that forward mode is
configured when removing a writeback cache.  However, in the
up-to-date doc (master), proxy mode is recommended.  I'll use proxy
mode instead.

Thanks,
- Jerry

> Thanks,
>
>                 Ilya



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

  Powered by Linux