#ifndef _LUSTRE_LIB_H
#define _LUSTRE_LIB_H
-#include <libcfs/kp30.h>
+#include <libcfs/libcfs.h>
#include <lustre/lustre_idl.h>
#include <lustre_ver.h>
#include <lustre_cfg.h>
/* prng.c */
unsigned int ll_rand(void); /* returns a random 32-bit integer */
void ll_srand(unsigned int, unsigned int); /* seed the generator */
+void ll_get_random_bytes(void *buf, int size);
/* target.c */
struct ptlrpc_request;
void target_client_add_cb(struct obd_device *obd, __u64 transno, void *cb_data,
int error);
-int target_handle_connect(struct ptlrpc_request *req, svc_handler_t handler);
+int target_handle_connect(struct ptlrpc_request *req);
int target_handle_disconnect(struct ptlrpc_request *req);
void target_destroy_export(struct obd_export *exp);
int target_handle_reconnect(struct lustre_handle *conn, struct obd_export *exp,
- struct obd_uuid *cluuid);
+ struct obd_uuid *cluuid, int);
+int target_pack_pool_reply(struct ptlrpc_request *req);
int target_handle_ping(struct ptlrpc_request *req);
void target_committed_to_req(struct ptlrpc_request *req);
void target_cancel_recovery_timer(struct obd_device *obd);
#define OBD_RECOVERY_TIMEOUT (obd_timeout * 5 / 2) /* *waves hands* */
-void target_start_recovery_timer(struct obd_device *obd, svc_handler_t handler);
-void target_abort_recovery(void *data);
+#define OBD_RECOVERY_MAX_TIME (obd_timeout * 18) /* b13079 */
+void target_start_recovery_timer(struct obd_device *obd);
+int target_start_recovery_thread(struct obd_device *obd,
+ svc_handler_t handler);
+void target_stop_recovery_thread(struct obd_device *obd);
void target_cleanup_recovery(struct obd_device *obd);
int target_queue_recovery_request(struct ptlrpc_request *req,
struct obd_device *obd);
/* client.c */
-int client_sanobd_setup(struct obd_device *obddev, obd_count len, void *buf);
+int client_sanobd_setup(struct obd_device *obddev, struct lustre_cfg* lcfg);
struct client_obd *client_conn2cli(struct lustre_handle *conn);
-struct mdc_open_data;
+struct md_open_data;
struct obd_client_handle {
- struct lustre_handle och_fh;
- struct llog_cookie och_cookie;
- struct mdc_open_data *och_mod;
+ struct lustre_handle och_fh;
+ struct lu_fid och_fid;
+ struct md_open_data *och_mod;
__u32 och_magic;
+ int och_flags;
};
#define OBD_CLIENT_HANDLE_MAGIC 0xd15ea5ed
#define OBD_IOCTL_VERSION 0x00010004
struct obd_ioctl_data {
- uint32_t ioc_len;
- uint32_t ioc_version;
+ __u32 ioc_len;
+ __u32 ioc_version;
- uint64_t ioc_cookie;
- uint32_t ioc_conn1;
- uint32_t ioc_conn2;
+ __u64 ioc_cookie;
+ __u32 ioc_conn1;
+ __u32 ioc_conn2;
struct obdo ioc_obdo1;
struct obdo ioc_obdo2;
- obd_size ioc_count;
- obd_off ioc_offset;
- uint32_t ioc_dev;
- uint32_t ioc_command;
+ obd_size ioc_count;
+ obd_off ioc_offset;
+ __u32 ioc_dev;
+ __u32 ioc_command;
- uint64_t ioc_nid;
- uint32_t ioc_nal;
- uint32_t ioc_type;
+ __u64 ioc_nid;
+ __u32 ioc_nal;
+ __u32 ioc_type;
/* buffers the kernel will treat as user pointers */
- uint32_t ioc_plen1;
- char *ioc_pbuf1;
- uint32_t ioc_plen2;
- char *ioc_pbuf2;
+ __u32 ioc_plen1;
+ char *ioc_pbuf1;
+ __u32 ioc_plen2;
+ char *ioc_pbuf2;
/* inline buffers for various arguments */
- uint32_t ioc_inllen1;
- char *ioc_inlbuf1;
- uint32_t ioc_inllen2;
- char *ioc_inlbuf2;
- uint32_t ioc_inllen3;
- char *ioc_inlbuf3;
- uint32_t ioc_inllen4;
- char *ioc_inlbuf4;
+ __u32 ioc_inllen1;
+ char *ioc_inlbuf1;
+ __u32 ioc_inllen2;
+ char *ioc_inlbuf2;
+ __u32 ioc_inllen3;
+ char *ioc_inlbuf3;
+ __u32 ioc_inllen4;
+ char *ioc_inlbuf4;
char ioc_bulk[0];
};
struct obd_ioctl_hdr {
- uint32_t ioc_len;
- uint32_t ioc_version;
+ __u32 ioc_len;
+ __u32 ioc_version;
};
static inline int obd_ioctl_packlen(struct obd_ioctl_data *data)
data->ioc_version = OBD_IOCTL_VERSION;
if (*pbuf && data->ioc_len > max)
- return 1;
+ return -EINVAL;
if (*pbuf == NULL) {
*pbuf = malloc(data->ioc_len);
}
if (!*pbuf)
- return 1;
+ return -ENOMEM;
overlay = (struct obd_ioctl_data *)*pbuf;
memcpy(*pbuf, data, sizeof(*data));
if (data->ioc_inlbuf4)
LOGL(data->ioc_inlbuf4, data->ioc_inllen4, ptr);
if (obd_ioctl_is_invalid(overlay))
- return 1;
+ return -EINVAL;
return 0;
}
#define OBD_IOC_SET_READONLY _IOW ('f', 141, OBD_IOC_DATA_TYPE)
#define OBD_IOC_ABORT_RECOVERY _IOR ('f', 142, OBD_IOC_DATA_TYPE)
+#define OBD_IOC_ROOT_SQUASH _IOWR('f', 143, OBD_IOC_DATA_TYPE)
+
#define OBD_GET_VERSION _IOWR ('f', 144, OBD_IOC_DATA_TYPE)
+#define OBD_IOC_GSS_SUPPORT _IOWR('f', 145, OBD_IOC_DATA_TYPE)
+
#define OBD_IOC_CLOSE_UUID _IOWR ('f', 147, OBD_IOC_DATA_TYPE)
#define OBD_IOC_GETDEVICE _IOWR ('f', 149, OBD_IOC_DATA_TYPE)
#define ECHO_IOC_CANCEL _IOWR('f', 203, OBD_IOC_DATA_TYPE)
/* XXX _IOWR('f', 250, long) has been defined in
- * lnet/include/libcfs/kp30.h for debug, don't use it
+ * libcfs/include/libcfs/libcfs_private.h for debug, don't use it
*/
/* Until such time as we get_info the per-stripe maximum from the OST,
} while (0)
#else /* !__KERNEL__ */
-#define __l_wait_event(wq, condition, info, ret, excl) \
+#define __l_wait_event(wq, condition, info, ret, excl) \
do { \
long __timeout = info->lwi_timeout; \
long __now; \
#endif /* __KERNEL__ */
+
#define l_wait_event(wq, condition, info) \
({ \
int __ret; \
__ret; \
})
+#define cfs_wait_event(wq, condition) \
+({ \
+ struct l_wait_info lwi = { 0 }; \
+ l_wait_event(wq, condition, &lwi); \
+})
+
#ifdef __KERNEL__
#define LIBLUSTRE_CLIENT (0)
#else