Whamcloud - gitweb
git://git.whamcloud.com
/
fs
/
lustre-release.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
b=19919
[fs/lustre-release.git]
/
lustre
/
include
/
lustre_lib.h
diff --git
a/lustre/include/lustre_lib.h
b/lustre/include/lustre_lib.h
index
c99450e
..
e0e26fa
100644
(file)
--- a/
lustre/include/lustre_lib.h
+++ b/
lustre/include/lustre_lib.h
@@
-62,9
+62,8
@@
void ll_get_random_bytes(void *buf, int size);
/* target.c */
struct ptlrpc_request;
/* target.c */
struct ptlrpc_request;
-struct recovd_data;
-struct recovd_obd;
struct obd_export;
struct obd_export;
+struct lu_target;
#include <lustre_ha.h>
#include <lustre_net.h>
#include <lvfs.h>
#include <lustre_ha.h>
#include <lustre_net.h>
#include <lvfs.h>
@@
-77,6
+76,10
@@
void target_destroy_export(struct obd_export *exp);
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);
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);
+int target_set_info_rpc(struct obd_import *imp, int opcode,
+ obd_count keylen, void *key,
+ obd_count vallen, void *val,
+ struct ptlrpc_request_set *set);
/* quotacheck callback, dqacq/dqrel callback handler */
int target_handle_qc_callback(struct ptlrpc_request *req);
/* quotacheck callback, dqacq/dqrel callback handler */
int target_handle_qc_callback(struct ptlrpc_request *req);
@@
-89,8
+92,6
@@
int target_handle_dqacq_callback(struct ptlrpc_request *req);
#define OBD_RECOVERY_MAX_TIME (obd_timeout * 18) /* b13079 */
void target_cancel_recovery_timer(struct obd_device *obd);
#define OBD_RECOVERY_MAX_TIME (obd_timeout * 18) /* b13079 */
void target_cancel_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,
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,
@@
-129,7
+130,6
@@
void l_lock(struct lustre_lock *);
void l_unlock(struct lustre_lock *);
int l_has_lock(struct lustre_lock *);
void l_unlock(struct lustre_lock *);
int l_has_lock(struct lustre_lock *);
-
/*
* OBD IOCTLS
*/
/*
* OBD IOCTLS
*/
@@
-524,6
+524,8
@@
static inline void obd_ioctl_freedata(char *buf, int len)
#define ECHO_IOC_ENQUEUE _IOWR('f', 202, OBD_IOC_DATA_TYPE)
#define ECHO_IOC_CANCEL _IOWR('f', 203, OBD_IOC_DATA_TYPE)
#define ECHO_IOC_ENQUEUE _IOWR('f', 202, OBD_IOC_DATA_TYPE)
#define ECHO_IOC_CANCEL _IOWR('f', 203, OBD_IOC_DATA_TYPE)
+#define OBD_IOC_GET_OBJ_VERSION _IOR('f', 210, OBD_IOC_DATA_TYPE)
+
/* XXX _IOWR('f', 250, long) has been defined in
* libcfs/include/libcfs/libcfs_private.h for debug, don't use it
*/
/* XXX _IOWR('f', 250, long) has been defined in
* libcfs/include/libcfs/libcfs_private.h for debug, don't use it
*/
@@
-604,6
+606,7
@@
static inline void obd_ioctl_freedata(char *buf, int len)
struct l_wait_info {
cfs_duration_t lwi_timeout;
cfs_duration_t lwi_interval;
struct l_wait_info {
cfs_duration_t lwi_timeout;
cfs_duration_t lwi_interval;
+ int lwi_allow_intr;
int (*lwi_on_timeout)(void *);
void (*lwi_on_signal)(void *);
void *lwi_cb_data;
int (*lwi_on_timeout)(void *);
void (*lwi_on_signal)(void *);
void *lwi_cb_data;
@@
-615,7
+618,8
@@
struct l_wait_info {
.lwi_timeout = time, \
.lwi_on_timeout = cb, \
.lwi_cb_data = data, \
.lwi_timeout = time, \
.lwi_on_timeout = cb, \
.lwi_cb_data = data, \
- .lwi_interval = 0 \
+ .lwi_interval = 0, \
+ .lwi_allow_intr = 0 \
})
#define LWI_TIMEOUT_INTERVAL(time, interval, cb, data) \
})
#define LWI_TIMEOUT_INTERVAL(time, interval, cb, data) \
@@
-623,16
+627,28
@@
struct l_wait_info {
.lwi_timeout = time, \
.lwi_on_timeout = cb, \
.lwi_cb_data = data, \
.lwi_timeout = time, \
.lwi_on_timeout = cb, \
.lwi_cb_data = data, \
- .lwi_interval = interval \
+ .lwi_interval = interval, \
+ .lwi_allow_intr = 0 \
})
#define LWI_TIMEOUT_INTR(time, time_cb, sig_cb, data) \
((struct l_wait_info) { \
.lwi_timeout = time, \
.lwi_on_timeout = time_cb, \
})
#define LWI_TIMEOUT_INTR(time, time_cb, sig_cb, data) \
((struct l_wait_info) { \
.lwi_timeout = time, \
.lwi_on_timeout = time_cb, \
- .lwi_on_signal
= sig_cb,
\
+ .lwi_on_signal
= sig_cb,
\
.lwi_cb_data = data, \
.lwi_cb_data = data, \
- .lwi_interval = 0 \
+ .lwi_interval = 0, \
+ .lwi_allow_intr = 0 \
+})
+
+#define LWI_TIMEOUT_INTR_ALL(time, time_cb, sig_cb, data) \
+((struct l_wait_info) { \
+ .lwi_timeout = time, \
+ .lwi_on_timeout = time_cb, \
+ .lwi_on_signal = sig_cb, \
+ .lwi_cb_data = data, \
+ .lwi_interval = 0, \
+ .lwi_allow_intr = 1 \
})
#define LWI_INTR(cb, data) LWI_TIMEOUT_INTR(0, NULL, cb, data)
})
#define LWI_INTR(cb, data) LWI_TIMEOUT_INTR(0, NULL, cb, data)
@@
-648,6
+664,7
@@
do { \
cfs_waitlink_t __wait; \
cfs_duration_t __timeout = info->lwi_timeout; \
cfs_sigset_t __blocked; \
cfs_waitlink_t __wait; \
cfs_duration_t __timeout = info->lwi_timeout; \
cfs_sigset_t __blocked; \
+ int __allow_intr = info->lwi_allow_intr; \
\
ret = 0; \
if (condition) \
\
ret = 0; \
if (condition) \
@@
-660,7
+677,7
@@
do { \
cfs_waitq_add(&wq, &__wait); \
\
/* Block all signals (just the non-fatal ones if no timeout). */ \
cfs_waitq_add(&wq, &__wait); \
\
/* Block all signals (just the non-fatal ones if no timeout). */ \
- if (info->lwi_on_signal != NULL &&
__timeout == 0)
\
+ if (info->lwi_on_signal != NULL &&
(__timeout == 0 || __allow_intr))
\
__blocked = l_w_e_set_sigs(LUSTRE_FATAL_SIGS); \
else \
__blocked = l_w_e_set_sigs(0); \
__blocked = l_w_e_set_sigs(LUSTRE_FATAL_SIGS); \
else \
__blocked = l_w_e_set_sigs(0); \
@@
-698,7
+715,8
@@
do { \
if (condition) \
break; \
if (cfs_signal_pending()) { \
if (condition) \
break; \
if (cfs_signal_pending()) { \
- if (info->lwi_on_signal != NULL && __timeout == 0) { \
+ if (info->lwi_on_signal != NULL && \
+ (__timeout == 0 || __allow_intr)) { \
if (info->lwi_on_signal != LWI_ON_SIGNAL_NOOP) \
info->lwi_on_signal(info->lwi_cb_data);\
ret = -EINTR; \
if (info->lwi_on_signal != LWI_ON_SIGNAL_NOOP) \
info->lwi_on_signal(info->lwi_cb_data);\
ret = -EINTR; \