Changeset 770 for Whitix/branches/fs/fs/vfs/bcache.c
- Timestamp:
- 07/09/08 18:46:57 (5 months ago)
- Files:
-
- 1 modified
-
Whitix/branches/fs/fs/vfs/bcache.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
Whitix/branches/fs/fs/vfs/bcache.c
r752 r770 95 95 INIT_WAITQUEUE_ENTRY(bufferWait); 96 96 97 WaitAddToQueue(&buffer->waitQueue, &bufferWait);98 99 97 do 100 98 { 99 WaitAddToQueue(&buffer->waitQueue, &bufferWait); 101 100 ThrSuspendThread(currThread); 102 103 if (!BufferLocked(buffer))104 break;105 106 101 ThrSchedule(); 107 102 }while (BufferLocked(buffer)); … … 157 152 158 153 INIT_WAITQUEUE_HEAD(&buff->waitQueue); 154 BufferLock(buff); 159 155 BlockAddToHashTable(buff); 160 156 … … 259 255 return -EFAULT; 260 256 261 /* The buffer will be unlocked in StorageEndRequest */ 262 BufferLock(buff); 257 /* Buffer should already be locked if we're coming from BlockRead */ 263 258 264 259 err=BlockSendRequestRaw(device,request); … … 308 303 309 304 request=StorageBuildRequest(buff, REQUEST_READ); 310 311 BufferLock(buff);312 305 313 306 StorageDoRequest(device,request); … … 479 472 { 480 473 struct ListHead* head=BUFFER_HASH(device, blockNum); 481 struct Buffer* curr; 474 struct Buffer* curr, *ret=NULL; 475 476 PreemptDisable(); 482 477 483 478 ListForEachEntry(curr, head, list) … … 485 480 { 486 481 BufferGet(curr); 487 return curr; 482 ret=curr; 483 goto out; 488 484 } 489 485 490 return NULL; 486 out: 487 PreemptEnable(); 488 return ret; 491 489 } 492 490