[sheepdog] [PATCH] sheep: invalidate inode status of other nodes before actual write
Hitoshi Mitake
mitake.hitoshi at lab.ntt.co.jp
Wed Nov 5 07:51:25 CET 2014
At Wed, 05 Nov 2014 15:36:13 +0900,
YAMADA Hideki wrote:
>
> This patch seems to work well.
> I tested iSCSI multipath failover while writing,
> and it succeeded in combination with following tgt patch.
> http://article.gmane.org/gmane.linux.stgt/392
>
> Tested-by: YAMADA Hideki <yamada.hideki at lab.ntt.co.jp>
Thanks for your testing. Applied this patch.
Thanks,
Hitoshi
>
> On 2014/11/05 15:06, Hitoshi Mitake wrote:
> > Current iscsi coherence protocol can cause inconsistency when a
> > gateway sheep process dies between inode update and invalidation.
> >
> > This patch makes sure that inode update must cause invalidation even
> > if sheep dies before actual inode.
> >
> > Cc: YAMADA Hideki <yamada.hideki at lab.ntt.co.jp>
> > Signed-off-by: Hitoshi Mitake <mitake.hitoshi at lab.ntt.co.jp>
> > ---
> > sheep/gateway.c | 5 +++--
> > 1 file changed, 3 insertions(+), 2 deletions(-)
> >
> > diff --git a/sheep/gateway.c b/sheep/gateway.c
> > index a5cee5c..7f7d1d1 100644
> > --- a/sheep/gateway.c
> > +++ b/sheep/gateway.c
> > @@ -681,6 +681,9 @@ int gateway_write_obj(struct request *req)
> > if (!bypass_object_cache(req))
> > return object_cache_handle_request(req);
> >
> > + if (is_data_vid_update(hdr))
> > + invalidate_other_nodes(oid_to_vid(oid));
> > +
> > if (is_data_vid_update(hdr)) {
> > size_t nr_vids = hdr->data_length / sizeof(*vids);
> >
> > @@ -701,8 +704,6 @@ int gateway_write_obj(struct request *req)
> > update_obj_refcnt(hdr, vids, new_vids, refs);
> > }
> > out:
> > - if (is_data_vid_update(hdr))
> > - invalidate_other_nodes(oid_to_vid(oid));
> >
> > free(vids);
> > free(refs);
> >
More information about the sheepdog
mailing list