rem: if (status < B_OK) FATAL(("Could not trim preallocated blocks!"));
add: if (status < B_OK) { FATAL(("Could not trim preallocated blocks: inode %Ld, transaction %ld: %s!\n", inode->ID(), transaction.ID(), strerror(status)));   status = B_OK; }
context: bfs_free_cookie(void *_ns, void *_node, void *_cookie){	FUNCTION();	if (_ns == NULL || _node == NULL || _cookie == NULL)		return B_BAD_VALUE;	file_cookie *cookie = (file_cookie *)_cookie;	Volume *volume = (Volume *)_ns;	Inode *inode = (Inode *)_node;	bool needsTrimming = inode->NeedsTrimming();	if ((cookie->open_mode & O_RWMASK) != 0		&& !inode->IsDeleted()		&& (needsTrimming			|| inode->OldLastModified() != inode->LastModified()			|| inode->OldSize() != inode->Size())) {#ifdef UNSAFE_GET_VNODE		RecursiveLocker locker(volume->Lock());#endif		ReadLocked locked(inode->Lock());		// trim the preallocated blocks and update the size,		// and last_modified indices if needed		Transaction transaction(volume, inode->BlockNumber());		status_t status = B_OK;		bool changedSize = false, changedTime = false;		Index index(volume);		if (needsTrimming) {			status = inode->TrimPreallocation(transaction);			if (status < B_OK)				FATAL(("Could not trim preallocated blocks!"));		}		if (needsTrimming || inode->OldSize() != inode->Size()) {			index.UpdateSize(transaction, inode);			changedSize = true;		}		if (inode->OldLastModified() != inode->LastModified()) {			index.UpdateLastModified(transaction, inode, inode->LastModified());			changedTime = true;			// updating the index doesn't write back the inode			inode->WriteBack(transaction);		}		if (status == B_OK)			transaction.Done();		if (changedSize || changedTime) {			notify_stat_changed(volume->ID(), inode->ID(),				(changedTime ? B_STAT_MODIFICATION_TIME : 0) | (changedSize ? B_STAT_SIZE : 0));		}	}	if (inode->Flags() & INODE_CHKBFS_RUNNING) {		// "chkbfs" exited abnormally, so we have to stop it here...		FATAL(("check process was aborted!\n"));		volume->Allocator().StopChecking(NULL);	}	return B_OK;}