From 49924de149b7c520f0296a0f246bc8932b90d340 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Michal=20Voc=C5=AF?= Date: Thu, 2 Apr 2009 10:03:54 +0000 Subject: [PATCH] fix build --- org.glite.lb.logger/src/event_store.c | 55 +++++++++++++++++++---------------- org.glite.lb.logger/src/interlogd.h | 3 +- 2 files changed, 31 insertions(+), 27 deletions(-) diff --git a/org.glite.lb.logger/src/event_store.c b/org.glite.lb.logger/src/event_store.c index 318a0b6..1594997 100644 --- a/org.glite.lb.logger/src/event_store.c +++ b/org.glite.lb.logger/src/event_store.c @@ -30,6 +30,8 @@ static char *file_prefix = NULL; struct event_store_list { struct event_store *es; struct event_store_list *next; // LL of event_store's + struct event_store_list *jobid_next; /* double LL of rotated stores - forward */ + struct event_store_list *jobid_prev; /* double LL of rotated stores - backward */ }; @@ -451,18 +453,18 @@ int event_store_recover_jobid(struct event_store *es) { // es is locked for use already - struct event_store *p = es; + struct event_store_list *p = es->le; do { event_store_recover(p); - if(p != es ) { + if(p != es->le ) { event_store_release(p); } if(pthread_rwlock_rdlock(&store_list_lock)) abort(); p = p->jobid_next; - if(p != es) { + if(p != es->le) { if(pthread_rwlock_rdlock(&p->use_lock)) abort(); } @@ -470,7 +472,9 @@ event_store_recover_jobid(struct event_store *es) abort(); - } while(p != es); + } while(p != es->le); + + return 0; } @@ -1018,8 +1022,8 @@ event_store_clean(struct event_store *es) struct event_store * event_store_find(char *job_id_s, const char *filename) { - struct event_store_list *p, *d; - struct event_store *es, *q; + struct event_store_list *q, *p, *d; + struct event_store *es; if(pthread_rwlock_wrlock(&store_list_lock)) { abort(); @@ -1062,6 +1066,7 @@ event_store_find(char *job_id_s, const char *filename) return(NULL); } p->es = es; + es->le = p; if(filename != NULL && d != NULL) { // there is another event store for this jobid; @@ -1072,17 +1077,17 @@ event_store_find(char *job_id_s, const char *filename) p->next = d->next; d->next = p; // insert behind d in jobid LL - p->es->jobid_next = d->es->jobid_next; - p->es->jobid_prev = d->es; - d->es->jobid_next->jobid_prev = p->es; - d->es->jobid_next = p->es; + p->jobid_next = d->jobid_next; + p->jobid_prev = d; + d->jobid_next->jobid_prev = p; + d->jobid_next = p; } else { - struct event_store *r; + struct event_store_list *r; q = NULL; - for(r = d->es->jobid_next; r != d->es->jobid_next; r = r->jobid_next) { - if(p->es->rotate_index < r->rotate_index) + for(r = d->jobid_next; r != d->jobid_next; r = r->jobid_next) { + if(p->es->rotate_index < r->es->rotate_index) break; - if(r->rotate_index > 0) + if(r->es->rotate_index > 0) q = r; } // q has the last lesser non-zero index than p @@ -1090,18 +1095,18 @@ event_store_find(char *job_id_s, const char *filename) p->next = store_list; store_list = p; // insert behind d - p->es->jobid_next = d->es->jobid_next; - p->es->jobid_prev = d->es; - d->es->jobid_next->jobid_prev = p->es; - d->es->jobid_next = p->es; + p->jobid_next = d->jobid_next; + p->jobid_prev = d; + d->jobid_next->jobid_prev = p; + d->jobid_next = p; } else { p->next = q->next; q->next = p; // insert behind q - p->es->jobid_next = q->jobid_next; - p->es->jobid_prev = q; - q->jobid_next->jobid_prev = p->es; - q->jobid_next = p->es; + p->jobid_next = q->jobid_next; + p->jobid_prev = q; + q->jobid_next->jobid_prev = p; + q->jobid_next = p; } } } else { @@ -1473,9 +1478,9 @@ event_store_cleanup() /* remove this event store from LL */ (*prev) = slnext; /* remove this event store from jobid's LL */ - if(sl->es->jobid_next != sl->es) { - sl->es->jobid_prev->jobid_next = sl->es->jobid_next; - sl->es->jobid_next->jobid_prev = sl->es->jobid_prev; + if(sl->jobid_next != sl) { + sl->jobid_prev->jobid_next = sl->jobid_next; + sl->jobid_next->jobid_prev = sl->jobid_prev; } event_store_free(sl->es); free(sl); diff --git a/org.glite.lb.logger/src/interlogd.h b/org.glite.lb.logger/src/interlogd.h index 7ce683f..d168835 100644 --- a/org.glite.lb.logger/src/interlogd.h +++ b/org.glite.lb.logger/src/interlogd.h @@ -126,8 +126,7 @@ struct event_store { time_t last_modified; /* time of the last file modification */ int generation; /* cleanup counter, scopes the offset */ int rotate_index; /* rotation counter */ - struct event_store *jobid_next; /* double LL of rotated stores - forward */ - struct event_store *jobid_prev; /* double LL of rotated stores - backward */ + struct event_store_list *le /* points back to the list */ pthread_rwlock_t commit_lock; /* lock to prevent simultaneous updates to last_committed_* */ pthread_rwlock_t offset_lock; /* lock to prevent simultaneous updates offset */ pthread_rwlock_t use_lock; /* lock to prevent struct deallocation */ -- 1.8.2.3