Wed, Apr 29, 2020 at 06:35:18PM CEST, k...@kernel.org wrote:
>On Wed, 29 Apr 2020 07:45:52 +0200 Jiri Pirko wrote:
>> Wed, Apr 29, 2020 at 03:42:48AM CEST, k...@kernel.org wrote:
>> >Jiri, this is what I had in mind of snapshots and the same
>> >thing will come back for slice allocation.  
>> 
>> Okay. Could you please send the userspace patch too in order to see the
>> full picture?
>
>You got it, I didn't do anything fancy there.
>
>> >+static int
>> >+devlink_nl_alloc_snapshot_id(struct devlink *devlink, struct genl_info 
>> >*info,
>> >+                        struct devlink_region *region, u32 *snapshot_id)
>> >+{
>> >+   struct sk_buff *msg;
>> >+   void *hdr;
>> >+   int err;
>> >+
>> >+   err = __devlink_region_snapshot_id_get(devlink, snapshot_id);
>> >+   if (err) {
>> >+           NL_SET_ERR_MSG_MOD(info->extack,  
>> 
>> No need to wrap here.
>
>Ok.
>
>> >+                              "Failed to allocate a new snapshot id");
>> >+           return err;
>> >+   }
>
>> >-   err = __devlink_snapshot_id_insert(devlink, snapshot_id);
>> >-   if (err)
>> >-           return err;
>> >+           err = __devlink_snapshot_id_insert(devlink, snapshot_id);
>> >+           if (err)
>> >+                   return err;
>> >+   } else {
>> >+           err = devlink_nl_alloc_snapshot_id(devlink, info,
>> >+                                              region, &snapshot_id);
>> >+           if (err)
>> >+                   return err;
>> >+   }
>> > 
>> >    err = region->ops->snapshot(devlink, info->extack, &data);  
>> 
>> How the output is going to looks like it this or any of the follow-up
>> calls in this function are going to fail?
>> 
>> I guess it is going to be handled gracefully in the userspace app,
>> right?
>
>The output is the same, just the return code is non-zero.
>
>I can change that not to print the snapshot info until we are sure the
>operation succeeded if you prefer.

I think that would be clean to do this, in kernel.


>
>Initially I had the kernel not sent the message until it's done with
>the operation, but that seems unnecessarily complex. The send operation
>itself may fail, and if we ever have an operation that requires more
>than one notification we'll have to struggle with atomic sends.
>
>Better have the user space treat the failure like an exception, and
>ignore all the notifications that came earlier.
>
>That said the iproute2 patch can be improved with extra 20 lines so
>that it holds off printing the snapshot info until success.

Reply via email to