X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Finclude%2Flustre_lib.h;h=6be3c111cd11beb97c66bfa7db2282fd1a37a3d1;hp=c99450e2bbcf9c887c5fd3cfc93e3374d3b1b474;hb=ef88362a67b329923da062fe4a82b6a9ff9764f0;hpb=10b262f66705857a157f4faee8e6d2b908d09fac diff --git a/lustre/include/lustre_lib.h b/lustre/include/lustre_lib.h index c99450e..6be3c11 100644 --- 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; -struct recovd_data; -struct recovd_obd; struct obd_export; +struct lu_target; #include #include #include @@ -77,6 +76,11 @@ 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 do_set_info_async(struct obd_import *imp, + int opcode, int version, + 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); @@ -89,8 +93,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); -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, @@ -113,15 +115,15 @@ struct obd_client_handle { #define OBD_CLIENT_HANDLE_MAGIC 0xd15ea5ed /* statfs_pack.c */ -void statfs_pack(struct obd_statfs *osfs, struct kstatfs *sfs); -void statfs_unpack(struct kstatfs *sfs, struct obd_statfs *osfs); +void statfs_pack(struct obd_statfs *osfs, cfs_kstatfs_t *sfs); +void statfs_unpack(cfs_kstatfs_t *sfs, struct obd_statfs *osfs); /* l_lock.c */ struct lustre_lock { int l_depth; cfs_task_t *l_owner; - struct semaphore l_sem; - spinlock_t l_spin; + cfs_semaphore_t l_sem; + cfs_spinlock_t l_spin; }; void l_lock_init(struct lustre_lock *); @@ -129,7 +131,6 @@ void l_lock(struct lustre_lock *); void l_unlock(struct lustre_lock *); int l_has_lock(struct lustre_lock *); - /* * OBD IOCTLS */ @@ -190,11 +191,11 @@ struct obd_ioctl_hdr { static inline int obd_ioctl_packlen(struct obd_ioctl_data *data) { - int len = size_round(sizeof(struct obd_ioctl_data)); - len += size_round(data->ioc_inllen1); - len += size_round(data->ioc_inllen2); - len += size_round(data->ioc_inllen3); - len += size_round(data->ioc_inllen4); + int len = cfs_size_round(sizeof(struct obd_ioctl_data)); + len += cfs_size_round(data->ioc_inllen1); + len += cfs_size_round(data->ioc_inllen2); + len += cfs_size_round(data->ioc_inllen3); + len += cfs_size_round(data->ioc_inllen4); return len; } @@ -343,7 +344,7 @@ static inline int obd_ioctl_getdata(char **buf, int *len, void *arg) int offset = 0; ENTRY; - err = copy_from_user(&hdr, (void *)arg, sizeof(hdr)); + err = cfs_copy_from_user(&hdr, (void *)arg, sizeof(hdr)); if (err) RETURN(err); @@ -374,7 +375,7 @@ static inline int obd_ioctl_getdata(char **buf, int *len, void *arg) *len = hdr.ioc_len; data = (struct obd_ioctl_data *)*buf; - err = copy_from_user(*buf, (void *)arg, hdr.ioc_len); + err = cfs_copy_from_user(*buf, (void *)arg, hdr.ioc_len); if (err) { OBD_VFREE(*buf, hdr.ioc_len); RETURN(err); @@ -388,17 +389,17 @@ static inline int obd_ioctl_getdata(char **buf, int *len, void *arg) if (data->ioc_inllen1) { data->ioc_inlbuf1 = &data->ioc_bulk[0]; - offset += size_round(data->ioc_inllen1); + offset += cfs_size_round(data->ioc_inllen1); } if (data->ioc_inllen2) { data->ioc_inlbuf2 = &data->ioc_bulk[0] + offset; - offset += size_round(data->ioc_inllen2); + offset += cfs_size_round(data->ioc_inllen2); } if (data->ioc_inllen3) { data->ioc_inlbuf3 = &data->ioc_bulk[0] + offset; - offset += size_round(data->ioc_inllen3); + offset += cfs_size_round(data->ioc_inllen3); } if (data->ioc_inllen4) { @@ -410,7 +411,7 @@ static inline int obd_ioctl_getdata(char **buf, int *len, void *arg) static inline int obd_ioctl_popdata(void *arg, void *data, int len) { - int err = copy_to_user(arg, data, len); + int err = cfs_copy_to_user(arg, data, len); if (err) err = -EFAULT; return err; @@ -485,6 +486,7 @@ static inline void obd_ioctl_freedata(char *buf, int len) #define OBD_IOC_CLOSE_UUID _IOWR ('f', 147, OBD_IOC_DATA_TYPE) +#define OBD_IOC_CHANGELOG_SEND _IOW ('f', 148, OBD_IOC_DATA_TYPE) #define OBD_IOC_GETDEVICE _IOWR ('f', 149, OBD_IOC_DATA_TYPE) #define OBD_IOC_FID2PATH _IOWR ('f', 150, OBD_IOC_DATA_TYPE) #define OBD_IOC_CHANGELOG_REG _IOW ('f', 151, OBD_IOC_DATA_TYPE) @@ -524,6 +526,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 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 */ @@ -604,6 +608,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; + int lwi_allow_intr; int (*lwi_on_timeout)(void *); void (*lwi_on_signal)(void *); void *lwi_cb_data; @@ -615,7 +620,8 @@ struct l_wait_info { .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) \ @@ -623,16 +629,28 @@ struct l_wait_info { .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, \ - .lwi_on_signal = sig_cb, \ + .lwi_on_signal = sig_cb, \ .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) @@ -648,6 +666,7 @@ do { \ 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) \ @@ -660,13 +679,13 @@ do { \ 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); \ \ for (;;) { \ - set_current_state(TASK_INTERRUPTIBLE); \ + cfs_set_current_state(CFS_TASK_INTERRUPTIBLE); \ \ if (condition) \ break; \ @@ -698,7 +717,8 @@ do { \ 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; \ @@ -717,7 +737,7 @@ do { \ \ cfs_block_sigs(__blocked); \ \ - set_current_state(TASK_RUNNING); \ + cfs_set_current_state(CFS_TASK_RUNNING); \ cfs_waitq_del(&wq, &__wait); \ } while (0) @@ -787,7 +807,7 @@ do { \ __ret; \ }) -#define cfs_wait_event(wq, condition) \ +#define l_cfs_wait_event(wq, condition) \ ({ \ struct l_wait_info lwi = { 0 }; \ l_wait_event(wq, condition, &lwi); \