/*
  Copyright (c) 2008-2015 Red Hat, Inc. <http://www.redhat.com>
  This file is part of GlusterFS.

  This file is licensed to you under your choice of the GNU Lesser
  General Public License, version 3 or any later version (LGPLv3 or
  later), or the GNU General Public License, version 2 (GPLv2), in all
  cases as published by the Free Software Foundation.
*/

/* libglusterfs/src/defaults.h:
       This file contains definition of default fops and mops functions.
*/

#ifndef _DEFAULT_ARGS_H
#define _DEFAULT_ARGS_H

#include "glusterfs/xlator.h"

int
args_lookup_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                      int32_t op_errno, inode_t *inode, struct iatt *buf,
                      dict_t *xdata, struct iatt *postparent);

int
args_stat_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno,
                    struct iatt *buf, dict_t *xdata);

int
args_fstat_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno,
                     struct iatt *buf, dict_t *xdata);

int
args_truncate_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                        int32_t op_errno, struct iatt *prebuf,
                        struct iatt *postbuf, dict_t *xdata);

int
args_ftruncate_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                         int32_t op_errno, struct iatt *prebuf,
                         struct iatt *postbuf, dict_t *xdata);

int
args_access_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                      int32_t op_errno, dict_t *xdata);

int
args_readlink_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                        int32_t op_errno, const char *path, struct iatt *stbuf,
                        dict_t *xdata);

int
args_mknod_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno,
                     inode_t *inode, struct iatt *buf, struct iatt *preparent,
                     struct iatt *postparent, dict_t *xdata);

int
args_mkdir_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno,
                     inode_t *inode, struct iatt *buf, struct iatt *preparent,
                     struct iatt *postparent, dict_t *xdata);

int
args_unlink_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                      int32_t op_errno, struct iatt *preparent,
                      struct iatt *postparent, dict_t *xdata);

int
args_rmdir_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno,
                     struct iatt *preparent, struct iatt *postparent,
                     dict_t *xdata);

int
args_symlink_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                       int32_t op_errno, inode_t *inode, struct iatt *buf,
                       struct iatt *preparent, struct iatt *postparent,
                       dict_t *xdata);

int
args_rename_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                      int32_t op_errno, struct iatt *buf,
                      struct iatt *preoldparent, struct iatt *postoldparent,
                      struct iatt *prenewparent, struct iatt *postnewparent,
                      dict_t *xdata);

int
args_link_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno,
                    inode_t *inode, struct iatt *buf, struct iatt *preparent,
                    struct iatt *postparent, dict_t *xdata);

int
args_create_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                      int32_t op_errno, fd_t *fd, inode_t *inode,
                      struct iatt *buf, struct iatt *preparent,
                      struct iatt *postparent, dict_t *xdata);

int
args_open_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno,
                    fd_t *fd, dict_t *xdata);

int
args_readv_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno,
                     struct iovec *vector, int32_t count, struct iatt *stbuf,
                     struct iobref *iobref, dict_t *xdata);

int
args_writev_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                      int32_t op_errno, struct iatt *prebuf,
                      struct iatt *postbuf, dict_t *xdata);

int
args_put_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno,
                   inode_t *inode, struct iatt *buf, struct iatt *preparent,
                   struct iatt *postparent, dict_t *xdata);

int
args_flush_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno,
                     dict_t *xdata);

int
args_fsync_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno,
                     struct iatt *prebuf, struct iatt *postbuf, dict_t *xdata);

int
args_opendir_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                       int32_t op_errno, fd_t *fd, dict_t *xdata);

int
args_fsyncdir_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                        int32_t op_errno, dict_t *xdata);

int
args_statfs_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                      int32_t op_errno, struct statvfs *buf, dict_t *xdata);

int
args_setxattr_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                        int32_t op_errno, dict_t *xdata);

int
args_getxattr_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                        int32_t op_errno, dict_t *dict, dict_t *xdata);

int
args_fsetxattr_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                         int32_t op_errno, dict_t *xdata);

int
args_fgetxattr_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                         int32_t op_errno, dict_t *dict, dict_t *xdata);

int
args_removexattr_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                           int32_t op_errno, dict_t *xdata);

int
args_fremovexattr_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                            int32_t op_errno, dict_t *xdata);

int
args_lk_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno,
                  struct gf_flock *lock, dict_t *xdata);

int
args_inodelk_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                       int32_t op_errno, dict_t *xdata);

int
args_finodelk_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                        int32_t op_errno, dict_t *xdata);

int
args_entrylk_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                       int32_t op_errno, dict_t *xdata);

int
args_fentrylk_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                        int32_t op_errno, dict_t *xdata);

int
args_readdirp_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                        int32_t op_errno, gf_dirent_t *entries, dict_t *xdata);

int
args_readdir_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                       int32_t op_errno, gf_dirent_t *entries, dict_t *xdata);

int
args_rchecksum_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                         int32_t op_errno, uint32_t weak_checksum,
                         uint8_t *strong_checksum, dict_t *xdata);

int
args_xattrop_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                       int32_t op_errno, dict_t *xattr, dict_t *xdata);

int
args_fxattrop_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                        int32_t op_errno, dict_t *xattr, dict_t *xdata);

int
args_setattr_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                       int32_t op_errno, struct iatt *statpre,
                       struct iatt *statpost, dict_t *xdata);

int
args_fsetattr_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                        int32_t op_errno, struct iatt *statpre,
                        struct iatt *statpost, dict_t *xdata);

int
args_fallocate_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                         int32_t op_errno, struct iatt *statpre,
                         struct iatt *statpost, dict_t *xdata);

int
args_discard_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                       int32_t op_errno, struct iatt *statpre,
                       struct iatt *statpost, dict_t *xdata);

int
args_zerofill_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                        int32_t op_errno, struct iatt *statpre,
                        struct iatt *statpost, dict_t *xdata);

int
args_ipc_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno,
                   dict_t *xdata);

int
args_seek_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno,
                    off_t offset, dict_t *xdata);

void
args_lease_cbk_store(default_args_cbk_t *args, int32_t op_ret, int32_t op_errno,
                     struct gf_lease *lease, dict_t *xdata);

int
args_copy_file_range_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                               int32_t op_errno, struct iatt *stbuf,
                               struct iatt *prebuf_dst,
                               struct iatt *postbuf_dst, dict_t *xdata);

void
args_cbk_wipe(default_args_cbk_t *args_cbk);

void
args_wipe(default_args_t *args);

int
args_lookup_store(default_args_t *args, loc_t *loc, dict_t *xdata);

int
args_stat_store(default_args_t *args, loc_t *loc, dict_t *xdata);

int
args_fstat_store(default_args_t *args, fd_t *fd, dict_t *xdata);

int
args_truncate_store(default_args_t *args, loc_t *loc, off_t off, dict_t *xdata);
int
args_ftruncate_store(default_args_t *args, fd_t *fd, off_t off, dict_t *xdata);

int
args_access_store(default_args_t *args, loc_t *loc, int32_t mask,
                  dict_t *xdata);

int
args_readlink_store(default_args_t *args, loc_t *loc, size_t size,
                    dict_t *xdata);

int
args_mknod_store(default_args_t *args, loc_t *loc, mode_t mode, dev_t rdev,
                 mode_t umask, dict_t *xdata);

int
args_mkdir_store(default_args_t *args, loc_t *loc, mode_t mode, mode_t umask,
                 dict_t *xdata);

int
args_unlink_store(default_args_t *args, loc_t *loc, int xflag, dict_t *xdata);

int
args_rmdir_store(default_args_t *args, loc_t *loc, int flags, dict_t *xdata);

int
args_symlink_store(default_args_t *args, const char *linkname, loc_t *loc,
                   mode_t umask, dict_t *xdata);

int
args_rename_store(default_args_t *args, loc_t *oldloc, loc_t *newloc,
                  dict_t *xdata);

int
args_link_store(default_args_t *args, loc_t *oldloc, loc_t *newloc,
                dict_t *xdata);

int
args_create_store(default_args_t *args, loc_t *loc, int32_t flags, mode_t mode,
                  mode_t umask, fd_t *fd, dict_t *xdata);

int
args_open_store(default_args_t *args, loc_t *loc, int32_t flags, fd_t *fd,
                dict_t *xdata);

int
args_readv_store(default_args_t *args, fd_t *fd, size_t size, off_t off,
                 uint32_t flags, dict_t *xdata);

int
args_writev_store(default_args_t *args, fd_t *fd, struct iovec *vector,
                  int32_t count, off_t off, uint32_t flags,
                  struct iobref *iobref, dict_t *xdata);

int
args_put_store(default_args_t *args, loc_t *loc, mode_t mode, mode_t umask,
               uint32_t flags, struct iovec *vector, int32_t count, off_t off,
               struct iobref *iobref, dict_t *xattr, dict_t *xdata);

int
args_flush_store(default_args_t *args, fd_t *fd, dict_t *xdata);

int
args_fsync_store(default_args_t *args, fd_t *fd, int32_t datasync,
                 dict_t *xdata);

int
args_opendir_store(default_args_t *args, loc_t *loc, fd_t *fd, dict_t *xdata);

int
args_fsyncdir_store(default_args_t *args, fd_t *fd, int32_t datasync,
                    dict_t *xdata);

int
args_statfs_store(default_args_t *args, loc_t *loc, dict_t *xdata);

int
args_setxattr_store(default_args_t *args, loc_t *loc, dict_t *dict,
                    int32_t flags, dict_t *xdata);

int
args_getxattr_store(default_args_t *args, loc_t *loc, const char *name,
                    dict_t *xdata);

int
args_fsetxattr_store(default_args_t *args, fd_t *fd, dict_t *dict,
                     int32_t flags, dict_t *xdata);

int
args_fgetxattr_store(default_args_t *args, fd_t *fd, const char *name,
                     dict_t *xdata);

int
args_removexattr_store(default_args_t *args, loc_t *loc, const char *name,
                       dict_t *xdata);

int
args_fremovexattr_store(default_args_t *args, fd_t *fd, const char *name,
                        dict_t *xdata);

int
args_lk_store(default_args_t *args, fd_t *fd, int32_t cmd,
              struct gf_flock *lock, dict_t *xdata);

int
args_inodelk_store(default_args_t *args, const char *volume, loc_t *loc,
                   int32_t cmd, struct gf_flock *lock, dict_t *xdata);

int
args_finodelk_store(default_args_t *args, const char *volume, fd_t *fd,
                    int32_t cmd, struct gf_flock *lock, dict_t *xdata);

int
args_entrylk_store(default_args_t *args, const char *volume, loc_t *loc,
                   const char *name, entrylk_cmd cmd, entrylk_type type,
                   dict_t *xdata);

int
args_fentrylk_store(default_args_t *args, const char *volume, fd_t *fd,
                    const char *name, entrylk_cmd cmd, entrylk_type type,
                    dict_t *xdata);
int
args_readdirp_store(default_args_t *args, fd_t *fd, size_t size, off_t off,
                    dict_t *xdata);

int
args_readdir_store(default_args_t *args, fd_t *fd, size_t size, off_t off,
                   dict_t *xdata);

int
args_rchecksum_store(default_args_t *args, fd_t *fd, off_t offset, int32_t len,
                     dict_t *xdata);

int
args_xattrop_store(default_args_t *args, loc_t *loc, gf_xattrop_flags_t optype,
                   dict_t *xattr, dict_t *xdata);

int
args_fxattrop_store(default_args_t *args, fd_t *fd, gf_xattrop_flags_t optype,
                    dict_t *xattr, dict_t *xdata);

int
args_setattr_store(default_args_t *args, loc_t *loc, struct iatt *stbuf,
                   int32_t valid, dict_t *xdata);

int
args_fsetattr_store(default_args_t *args, fd_t *fd, struct iatt *stbuf,
                    int32_t valid, dict_t *xdata);

int
args_fallocate_store(default_args_t *args, fd_t *fd, int32_t mode, off_t offset,
                     size_t len, dict_t *xdata);

int
args_discard_store(default_args_t *args, fd_t *fd, off_t offset, size_t len,
                   dict_t *xdata);

int
args_zerofill_store(default_args_t *args, fd_t *fd, off_t offset, off_t len,
                    dict_t *xdata);

int
args_ipc_store(default_args_t *args, int32_t op, dict_t *xdata);

int
args_seek_store(default_args_t *args, fd_t *fd, off_t offset,
                gf_seek_what_t what, dict_t *xdata);

void
args_lease_store(default_args_t *args, loc_t *loc, struct gf_lease *lease,
                 dict_t *xdata);

int
args_getactivelk_cbk_store(default_args_cbk_t *args, int32_t op_ret,
                           int32_t op_errno, lock_migration_info_t *locklist,
                           dict_t *xdata);

int
args_setactivelk_store(default_args_t *args, loc_t *loc,
                       lock_migration_info_t *locklist, dict_t *xdata);

int
args_icreate_store(default_args_t *args, loc_t *loc, mode_t mode,
                   dict_t *xdata);

int
args_namelink_store(default_args_t *args, loc_t *loc, dict_t *xdata);

int
args_copy_file_range_store(default_args_t *args, fd_t *fd_in, off64_t off_in,
                           fd_t *fd_out, off_t off64_out, size_t len,
                           uint32_t flags, dict_t *xdata);

void
args_cbk_init(default_args_cbk_t *args_cbk);
#endif /* _DEFAULT_ARGS_H */
