+ zebra_mutex_lock(&h->p->file_mutex);
+ if (h->p->no_file_write_lock == 0)
+ do_lock = 1;
+ h->p->no_file_write_lock++;
+ zebra_mutex_unlock(&h->p->file_mutex);
+ if (do_lock)
+ {
+ yaz_log(log_level, "zebra_lock_w fd=%d p=%p fname=%s 2",
+ h->p->fd, h, h->p->fname);
+ /* if there is already a read lock.. upgrade to write lock */
+ r = unixLock(h->p->fd, F_WRLCK, F_SETLKW);
+ }
+ yaz_log(log_level, "zebra_lock_w fd=%d p=%p fname=%s 3",
+ h->p->fd, h, h->p->fname);
+
+ zebra_lock_rdwr_wlock(&h->p->rdwr_lock);
+ h->write_flag = 1;
+ yaz_log(log_level, "zebra_lock_w fd=%d p=%p fname=%s end",
+ h->p->fd, h, h->p->fname);