[openbeos] BFS directory nodes / last_modified / write_stat

  • From: Robert Szeleney <skyos@xxxxxxxxx>
  • To: openbeos@xxxxxxxxxxxxx
  • Date: Wed, 25 Oct 2006 16:00:01 +0200 (CEST)

Hi again

Experienced another real minor problem. Not sure if this occures in your 
current SVN version too.

If you create a directory node it is not inserted into the 'last_modified' 
index. Ok, no problem so far.

But if you now call write_stat on this directory (touch -c -a -m <directory>) 
the write_stat function calls:

index.UpdateLastModified(transaction, inode, (bigtime_t)stat->st_mtime << 
INODE_TIME_SHIFT); which will try to remove and reinsert it into the index.
The remove operation (BPlusTree::Remove) will return with an error at

// first round, check for duplicate entries
status_t status = FindKey(node, key, keyLength, &nodeAndKey.keyIndex);
if (status < B_OK)
    RETURN_ERROR(status);

and prints a warning/error. (Could not find value in index "last_modified"!)

Wouldn't it be better to not update/insert the key for the last_modified index 
for directories? (else using write_stat one will add directory nodes to the 
last_modified index).

Thanks,
Robert


Other related posts: