* round up the value put into st_blocks

* inject modification time of package folder into root folder of
  package-fs


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40230 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Oliver Tappe
2011-01-13 15:20:55 +00:00
parent 8dfd99a91c
commit 1f70af0957
4 changed files with 34 additions and 3 deletions
@@ -210,3 +210,18 @@ Directory::RemoveDirectoryIterator(DirectoryIterator* iterator)
{
fIterators.Remove(iterator);
}
RootDirectory::RootDirectory(ino_t id, const timespec& modifiedTime)
:
Directory(id),
fModifiedTime(modifiedTime)
{
}
timespec
RootDirectory::ModifiedTime() const
{
return fModifiedTime;
}
@@ -10,7 +10,6 @@
#include "PackageDirectory.h"
struct DirectoryIterator : DoublyLinkedListLinkImpl<DirectoryIterator> {
Node* node;
@@ -83,4 +82,16 @@ Directory::NextChild(Node* node) const
}
class RootDirectory : public Directory {
public:
RootDirectory(ino_t id,
const timespec& modifiedTime);
virtual timespec ModifiedTime() const;
private:
timespec fModifiedTime;
};
#endif // DIRECTORY_H
@@ -358,8 +358,13 @@ Volume::Mount(const char* parameterString)
RETURN_ERROR(B_BAD_VALUE);
}
struct stat st;
if (stat(packages, &st) < 0)
RETURN_ERROR(B_ERROR);
// create the root node
fRootDirectory = new(std::nothrow) Directory(kRootDirectoryID);
fRootDirectory
= new(std::nothrow) ::RootDirectory(kRootDirectoryID, st.st_mtim);
if (fRootDirectory == NULL)
RETURN_ERROR(B_NO_MEMORY);
fRootDirectory->Init(NULL, volumeName != NULL ? volumeName : "Package FS");
@@ -341,7 +341,7 @@ packagefs_read_stat(fs_volume* fsVolume, fs_vnode* fsNode, struct stat* st)
st->st_ctim = st->st_mtim;
// TODO: Perhaps manage a changed time (particularly for directories)?
st->st_crtim = st->st_mtim;
st->st_blocks = st->st_size / 512;
st->st_blocks = (st->st_size + 511) / 512;
return B_OK;
}