Guest User

Untitled

a guest
Jan 21st, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.17 KB | None | 0 0
  1. diff --git a/src/Cache_inode/cache_inode_commit.c b/src/Cache_inode/cache_inode_
  2. index 3e335f2..1f6e795 100644
  3. --- a/src/Cache_inode/cache_inode_commit.c
  4. +++ b/src/Cache_inode/cache_inode_commit.c
  5. @@ -106,7 +106,7 @@ cache_inode_commit(cache_entry_t *entry,
  6. the filesystem write buffer so execute a normal fsal_commit()
  7. call. */
  8. if (stability == CACHE_INODE_UNSAFE_WRITE_TO_FS_BUFFER) {
  9. - if (!is_open_for_write(entry)) {
  10. + while (!is_open_for_write(entry)) {
  11. PTHREAD_RWLOCK_UNLOCK(&entry->content_lock);
  12. PTHREAD_RWLOCK_WRLOCK(&entry->content_lock);
  13. if (!is_open_for_write(entry)) {
  14. @@ -120,6 +120,8 @@ cache_inode_commit(cache_entry_t *entry,
  15. }
  16. opened = TRUE;
  17. }
  18. + PTHREAD_RWLOCK_UNLOCK(&entry->content_lock);
  19. + PTHREAD_RWLOCK_RDLOCK(&entry->content_lock);
  20. }
  21.  
  22. fsal_status = FSAL_commit(&(entry->object.file.open_fd.fd),
  23. diff --git a/src/Cache_inode/cache_inode_rdwr.c b/src/Cache_inode/cache_inode_rd
  24. index c21608c..571a471 100644
  25. --- a/src/Cache_inode/cache_inode_rdwr.c
  26. +++ b/src/Cache_inode/cache_inode_rdwr.c
  27. @@ -185,8 +185,8 @@ cache_inode_rdwr(cache_entry_t *entry,
  28. PTHREAD_RWLOCK_RDLOCK(&entry->content_lock);
  29. content_locked = TRUE;
  30. loflags = entry->object.file.open_fd.openflags;
  31. - if ((!cache_inode_fd(entry)) ||
  32. - (loflags && loflags != FSAL_O_RDWR && loflags != openflags)) {
  33. + while ((!cache_inode_fd(entry)) ||
  34. + (loflags && loflags != FSAL_O_RDWR && loflags != openflags)) {
  35. PTHREAD_RWLOCK_UNLOCK(&entry->content_lock);
  36. PTHREAD_RWLOCK_WRLOCK(&entry->content_lock);
  37. loflags = entry->object.file.open_fd.openflags;
  38. @@ -203,6 +203,8 @@ cache_inode_rdwr(cache_entry_t *entry,
  39. }
  40. opened = TRUE;
  41. }
  42. + PTHREAD_RWLOCK_UNLOCK(&entry->content_lock);
  43. + PTHREAD_RWLOCK_RDLOCK(&entry->content_lock);
  44. }
  45.  
  46. /* Call FSAL_read or FSAL_write */
Add Comment
Please, Sign In to add comment