Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff --git a/src/Cache_inode/cache_inode_commit.c b/src/Cache_inode/cache_inode_
- index 3e335f2..1f6e795 100644
- --- a/src/Cache_inode/cache_inode_commit.c
- +++ b/src/Cache_inode/cache_inode_commit.c
- @@ -106,7 +106,7 @@ cache_inode_commit(cache_entry_t *entry,
- the filesystem write buffer so execute a normal fsal_commit()
- call. */
- if (stability == CACHE_INODE_UNSAFE_WRITE_TO_FS_BUFFER) {
- - if (!is_open_for_write(entry)) {
- + while (!is_open_for_write(entry)) {
- PTHREAD_RWLOCK_UNLOCK(&entry->content_lock);
- PTHREAD_RWLOCK_WRLOCK(&entry->content_lock);
- if (!is_open_for_write(entry)) {
- @@ -120,6 +120,8 @@ cache_inode_commit(cache_entry_t *entry,
- }
- opened = TRUE;
- }
- + PTHREAD_RWLOCK_UNLOCK(&entry->content_lock);
- + PTHREAD_RWLOCK_RDLOCK(&entry->content_lock);
- }
- fsal_status = FSAL_commit(&(entry->object.file.open_fd.fd),
- diff --git a/src/Cache_inode/cache_inode_rdwr.c b/src/Cache_inode/cache_inode_rd
- index c21608c..571a471 100644
- --- a/src/Cache_inode/cache_inode_rdwr.c
- +++ b/src/Cache_inode/cache_inode_rdwr.c
- @@ -185,8 +185,8 @@ cache_inode_rdwr(cache_entry_t *entry,
- PTHREAD_RWLOCK_RDLOCK(&entry->content_lock);
- content_locked = TRUE;
- loflags = entry->object.file.open_fd.openflags;
- - if ((!cache_inode_fd(entry)) ||
- - (loflags && loflags != FSAL_O_RDWR && loflags != openflags)) {
- + while ((!cache_inode_fd(entry)) ||
- + (loflags && loflags != FSAL_O_RDWR && loflags != openflags)) {
- PTHREAD_RWLOCK_UNLOCK(&entry->content_lock);
- PTHREAD_RWLOCK_WRLOCK(&entry->content_lock);
- loflags = entry->object.file.open_fd.openflags;
- @@ -203,6 +203,8 @@ cache_inode_rdwr(cache_entry_t *entry,
- }
- opened = TRUE;
- }
- + PTHREAD_RWLOCK_UNLOCK(&entry->content_lock);
- + PTHREAD_RWLOCK_RDLOCK(&entry->content_lock);
- }
- /* Call FSAL_read or FSAL_write */
Add Comment
Please, Sign In to add comment