Re: Review request for patch: libglusterfs/syncop: Add xdata to all syncop calls

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

 



On Tuesday 31 March 2015 09:36 PM, Raghavendra Talur wrote:
Hi,

I have sent updated patch which adds xdata support to all syncop calls.
It adds xdata in both request and response path of syncop.

Considering that this patch has changes in many files,
I request a quick review and merge to avoid rebase issues.

Patch link http://review.gluster.org/#/c/9859/
Bug Id: https://bugzilla.redhat.com/show_bug.cgi?id=1158621

Thanks,
Raghavendra Talur

Question regarding validity of xdata when op_ret < 0.

In this patch set I have syncop_*_cbk in this form


int
syncop_rmdir_cbk (call_frame_t *frame, void *cookie, xlator_t *this,
                   int op_ret, int op_errno, struct iatt *preparent,
                   struct iatt *postparent, dict_t *xdata)
{
        struct syncargs *args = NULL;

        args = cookie;

        args->op_ret   = op_ret;
        args->op_errno = op_errno;

        if (op_ret >= 0) {
                if (xdata)
                        args->xdata  = dict_ref (xdata);
        }

        __wake (args);

        return 0;
}


where as the call stub has it like this

call_stub_t *
fop_rmdir_cbk_stub (call_frame_t *frame, fop_rmdir_cbk_t fn,
                    int32_t op_ret, int32_t op_errno,
                    struct iatt *preparent, struct iatt *postparent,
                    dict_t *xdata)
{
        call_stub_t *stub = NULL;

        GF_VALIDATE_OR_GOTO ("call-stub", frame, out);

        stub = stub_new (frame, 0, GF_FOP_RMDIR);
        GF_VALIDATE_OR_GOTO ("call-stub", stub, out);

        stub->fn_cbk.rmdir = fn;
        stub->args_cbk.op_ret = op_ret;
        stub->args_cbk.op_errno = op_errno;
        if (preparent)
                stub->args_cbk.preparent = *preparent;
        if (postparent)
                stub->args_cbk.postparent = *postparent;
        if (xdata)
                stub->args_cbk.xdata = dict_ref (xdata);
out:
        return stub;
}


The difference being when xdata is considered to be valid.
call-stub considers it valid irrespective of op_ret value.

Is it always ok to consider xdata to be valid, even if op_ret < 0?

If yes, I will have to update the syncop_*_cbk calls to ref xdata
if they exist, irrespective of op_ret.

Also, it can be used in really cool ways, like we can have a
key called glusterfs.error_origin_xlator set to this->name of the xlator
where error originated and master xlators (fuse and gfapi) can log / make
use of it etc.

Thanks,
Raghavendra Talur



_______________________________________________
Gluster-devel mailing list
Gluster-devel@xxxxxxxxxxx
http://www.gluster.org/mailman/listinfo/gluster-devel




[Index of Archives]     [Gluster Users]     [Ceph Users]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux