I'm implementing a new FSAL. At the end of a successful read2() function, I call the callback as follows:

void myfsal_read2(struct fsal_obj_handle *obj_hdl,
  bool bypass,
  fsal_async_cb done_cb,
  struct fsal_io_arg *read_arg,
  void *caller_arg){
  // ... read data ...
  fsal_status_t status = fsalstat(ERR_FSAL_NO_ERROR, 0);
  done_cb(obj_hdl, status, read_arg, caller_arg);
}

This generates the following error in src/Protocols/NFS/nfs_proto_tools.c, line 213:
nfs_RetryableError :NFS3 :CRIT :Possible implementation error: ERR_FSAL_NO_ERROR managed as an error

From the client side, read / write operations work as expected. If I don't call the callback function, the NFS operation doesn't complete.

What are the correct usage of the callback functions, after successful operations?

Thanks,
Bjorn