From 467b075b577be60caecb366dc8701c21a38349bd Mon Sep 17 00:00:00 2001 From: Vladislav Bolkhovitin Date: Tue, 27 Jan 2009 18:50:33 +0000 Subject: [PATCH] Sync with IET revisions 156-159: fix for compilation on glibc 2.8 git-svn-id: http://svn.code.sf.net/p/scst/svn/trunk@644 d57e44dd-8a1f-0410-8b47-8ef2f437770f --- iscsi-scst/usr/Makefile | 1 + iscsi-scst/usr/iscsid.h | 10 +++++----- iscsi-scst/usr/isns.c | 4 ++-- iscsi-scst/usr/misc.h | 14 +++++++------- iscsi-scst/usr/plain.c | 20 ++++++++++---------- iscsi-scst/usr/target.c | 2 +- 6 files changed, 26 insertions(+), 25 deletions(-) diff --git a/iscsi-scst/usr/Makefile b/iscsi-scst/usr/Makefile index a3b0c8e55..876705bbd 100644 --- a/iscsi-scst/usr/Makefile +++ b/iscsi-scst/usr/Makefile @@ -22,6 +22,7 @@ SRCS_ADM = iscsi_adm.c param.c OBJS_ADM = $(SRCS_ADM:.c=.o) CFLAGS += -O2 -fno-inline -Wall -Wstrict-prototypes -g -I../include +CFLAGS += -D_GNU_SOURCE # required for glibc >= 2.8 PROGRAMS = iscsi-scstd # iscsi-scst-adm LIBS = -lcrypto diff --git a/iscsi-scst/usr/iscsid.h b/iscsi-scst/usr/iscsid.h index 55809fcb9..5371890ce 100644 --- a/iscsi-scst/usr/iscsid.h +++ b/iscsi-scst/usr/iscsid.h @@ -42,7 +42,7 @@ struct PDU { #define KEY_STATE_DONE 2 struct session { - struct qelem slist; + struct __qelem slist; char *initiator; struct target *target; @@ -132,9 +132,9 @@ struct connection { #define INCOMING_BUFSIZE 8192 struct target { - struct qelem tlist; + struct __qelem tlist; - struct qelem sessions_list; + struct __qelem sessions_list; u32 tid; char name[ISCSI_NAME_LEN]; @@ -143,7 +143,7 @@ struct target { int max_nr_sessions; int nr_sessions; - struct qelem isns_head; + struct __qelem isns_head; }; extern struct config_operations plain_ops; @@ -197,7 +197,7 @@ extern void session_create(struct connection *conn); extern void session_remove(struct session *session); /* target.c */ -extern struct qelem targets_list; +extern struct __qelem targets_list; extern int target_add(u32 *, char *); extern int target_del(u32); extern u32 target_find_by_name(const char *name); diff --git a/iscsi-scst/usr/isns.c b/iscsi-scst/usr/isns.c index 039d8d9ca..b6ddec3cd 100644 --- a/iscsi-scst/usr/isns.c +++ b/iscsi-scst/usr/isns.c @@ -46,12 +46,12 @@ struct isns_io { struct isns_qry_mgmt { char name[ISCSI_NAME_LEN]; uint16_t transaction; - struct qelem qlist; + struct __qelem qlist; }; struct isns_initiator { char name[ISCSI_NAME_LEN]; - struct qelem ilist; + struct __qelem ilist; }; static LIST_HEAD(qry_list); diff --git a/iscsi-scst/usr/misc.h b/iscsi-scst/usr/misc.h index d76305513..625ad407c 100644 --- a/iscsi-scst/usr/misc.h +++ b/iscsi-scst/usr/misc.h @@ -16,9 +16,9 @@ #ifndef MISC_H #define MISC_H -struct qelem { - struct qelem *q_forw; - struct qelem *q_back; +struct __qelem { + struct __qelem *q_forw; + struct __qelem *q_back; }; /* stolen list stuff from Linux kernel */ @@ -32,20 +32,20 @@ struct qelem { #define LIST_HEAD_INIT(name) { &(name), &(name) } #define LIST_HEAD(name) \ - struct qelem name = LIST_HEAD_INIT(name) + struct __qelem name = LIST_HEAD_INIT(name) #define INIT_LIST_HEAD(ptr) do { \ (ptr)->q_forw = (ptr); (ptr)->q_back = (ptr); \ } while (0) -static inline int list_empty(const struct qelem *head) +static inline int list_empty(const struct __qelem *head) { return head->q_forw == head; } -static inline int list_length_is_one(const struct qelem *head) +static inline int list_length_is_one(const struct __qelem *head) { - return head->q_forw == head->q_back; + return (!list_empty(head) && head->q_forw == head->q_back); } #define container_of(ptr, type, member) ({ \ diff --git a/iscsi-scst/usr/plain.c b/iscsi-scst/usr/plain.c index 08db4679e..d23e15145 100644 --- a/iscsi-scst/usr/plain.c +++ b/iscsi-scst/usr/plain.c @@ -41,7 +41,7 @@ */ struct user { - struct qelem ulist; + struct __qelem ulist; u32 tid; char *name; @@ -72,18 +72,18 @@ static struct iscsi_key user_keys[] = { {NULL,}, }; -static struct qelem discovery_users_in = LIST_HEAD_INIT(discovery_users_in); -static struct qelem discovery_users_out = LIST_HEAD_INIT(discovery_users_out); +static struct __qelem discovery_users_in = LIST_HEAD_INIT(discovery_users_in); +static struct __qelem discovery_users_out = LIST_HEAD_INIT(discovery_users_out); #define HASH_ORDER 4 #define acct_hash(x) ((x) & ((1 << HASH_ORDER) - 1)) -static struct qelem trgt_acct_in[1 << HASH_ORDER]; -static struct qelem trgt_acct_out[1 << HASH_ORDER]; +static struct __qelem trgt_acct_in[1 << HASH_ORDER]; +static struct __qelem trgt_acct_out[1 << HASH_ORDER]; -static struct qelem *account_list_get(u32 tid, int dir) +static struct __qelem *account_list_get(u32 tid, int dir) { - struct qelem *list = NULL; + struct __qelem *list = NULL; if (tid) { list = (dir == AUTH_DIR_INCOMING) ? @@ -139,7 +139,7 @@ static int plain_account_init(char *filename) /* Return the first account if the length of name is zero */ static struct user *account_lookup_by_name(u32 tid, int dir, char *name) { - struct qelem *list = account_list_get(tid, dir); + struct __qelem *list = account_list_get(tid, dir); struct user *user = NULL; list_for_each_entry(user, list, ulist) { @@ -210,7 +210,7 @@ static int plain_account_add(u32 tid, int dir, char *name, char *pass) { int err = -ENOMEM; struct user *user; - struct qelem *list; + struct __qelem *list; if (!name || !pass) return -EINVAL; @@ -241,7 +241,7 @@ static int plain_account_add(u32 tid, int dir, char *name, char *pass) " Replacing the old one.\n", tid ? "target" : "discovery"); - old = (struct user *) list->q_forw; + old = list_entry(list->q_forw, struct user, ulist); account_destroy(old); } diff --git a/iscsi-scst/usr/target.c b/iscsi-scst/usr/target.c index 7505ab25f..0f754082f 100644 --- a/iscsi-scst/usr/target.c +++ b/iscsi-scst/usr/target.c @@ -24,7 +24,7 @@ #include "iscsid.h" -struct qelem targets_list = LIST_HEAD_INIT(targets_list); +struct __qelem targets_list = LIST_HEAD_INIT(targets_list); void target_list_build(struct connection *conn, char *addr, char *name) {