History log of /haiku/src/tests/system/kernel/file_corruption/fs/checksumfs.cpp
Revision Date Author Comments
# 9d242fb9 18-Nov-2021 Augustin Cavalier <waddlesplash@gmail.com>

file_systems & Tracker: Do not assume sizeof(dirent) contains 1 byte for the name.

At present, it does, but that is an oddity we have preserved from BeOS
that the next commit is going to remove. (This commit thus wastes 1 byte
without the following one.)

Most changes are pretty straightforward: only a +1 is needed,
and a few removed from sizing calculations. Some filesystems like UDF
originally passed back the length with the \0 included, so they have
been adjusted further. UFS2 had some other sizing problems which are also
corrected in this commit.


# f085f5b0 03-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* checksumfs_write_stat(): Actually add the node to the transaction as the
comment claims. Spotted by Axel.
* Added preallocate() slot to gCheckSumFSVnodeOps.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39283 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e82b1340 21-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* checksumfs_lookup(): The flags return parameter was never set, leading to
weird behavior when running in kernel.
* checksumfs_io(): Try to lock with timeout when the request is VIP. This
works around a potential quasi-deadlock: Most write support FS hooks
potentially allocate memory (e.g. in block_cache_get*()) while holding a
write lock to a node. When memory is low they have to wait for pages to
become available. The page writer might block on such node which in turn
would prevent modified pages from becoming eligible for recycling. Should
only in rare low memory cases have led to a problem.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37687 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4bfbcb53 21-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

checksumfs_io(): We are responsible for calling notify_io_request() when we
decide to fail for some reason.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37662 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8794d8c4 20-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* Volume::Create{File,Directory,SymLink}():
- Simplified by using the new common _CreateNode(). Changed the constructors
slightly -- the block index is now set via a separate SetBlockIndex()
method.
- The block allocated for the node was not cleared. At least for directories
that is required, though.
* Added attribute support:
- Refactored/extended {open,create}_file() and DirCookie a bit, so they can
also be used for attributes/attribute directories.
- Implemented all relevant attribute FS hooks.
- Node::DeletingNode(): Changed interface (it creates the transaction(s) as
needed, now and doesn't return the error code anymore. The base class
implementation frees the attribute directory, the Directory implementation
also unlinks all entries and frees the entry tree.
* checksumfs_write_stat(): B_STAT_MODE was not handled.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37626 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e8282312 19-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Added node monitoring support.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37601 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4b53c2ba 19-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Implemented hooks write_fs_info(), sync(), set_flags(), fsync(), access().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37595 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 470934be 19-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Implemented link() hook.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37582 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 69d34a50 19-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Implemented rename() hook.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37579 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a628d236 18-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Prevent creation of entries in unlinked directories.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37563 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 87c30de7 13-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added a File class for representing regular files. We use a simple block tree
for the data management. Reading/writing (using file cache and file map) is
implemented, but not exactly well tested yet.
* Renamed SymLink::{Read,Write}() to {Read,Write}SymLink().
* Implemented FS hooks write_stat(), create(), read(), write(), io().
* Added O_TRUNC support to open() hook.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37507 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 06b318ef 12-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Added symlink support.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37481 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a2e7c741 12-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added Transaction class which wraps a block cache transaction and performs
all other operations required to roll back a transaction. Transactions are
fully serialized -- due to limitations of our block cache and also to keep
things simple.
* Use a transaction for all write operations.
* Implemented the directory entry management code (a simple tree algorithm).
* Finished/implemented the FS hooks for directory entry lookup, directory
iteration, creation, and removal.
* Added non-persistent support for node access times.
* Set the user and group IDs on node creation.
* Added permission checks to several FS hooks.
* BlockAllocator::_Free(): The number of freed blocks was subtracted from
fFreeBlocks instead of added.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37478 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 74956f43 05-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added the beginnings of node support.
* Added the bare minimum of file system hooks to mount the file system. Can't
do anything more than listing the (empty) root directory yet, though.
* Added Jamfile for building the file system for the userlandfs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37406 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 952d6c8c 29-Jun-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* Moved the checksum device driver to subdir "driver".
* Created a file system module and a disk system add-on. Currently only
initializing and identifying/scanning is supported.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37300 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f085f5b0126f62c957f1a6925c49655a4edd7c4d 03-Nov-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* checksumfs_write_stat(): Actually add the node to the transaction as the
comment claims. Spotted by Axel.
* Added preallocate() slot to gCheckSumFSVnodeOps.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39283 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e82b1340a79a1341d5d1e72cf85287756ded837c 21-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* checksumfs_lookup(): The flags return parameter was never set, leading to
weird behavior when running in kernel.
* checksumfs_io(): Try to lock with timeout when the request is VIP. This
works around a potential quasi-deadlock: Most write support FS hooks
potentially allocate memory (e.g. in block_cache_get*()) while holding a
write lock to a node. When memory is low they have to wait for pages to
become available. The page writer might block on such node which in turn
would prevent modified pages from becoming eligible for recycling. Should
only in rare low memory cases have led to a problem.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37687 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4bfbcb535d20372f6b27214f10dd442a834c36f1 21-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

checksumfs_io(): We are responsible for calling notify_io_request() when we
decide to fail for some reason.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37662 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 8794d8c48f3c595cf42a9ae36fe661e38c019f34 20-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* Volume::Create{File,Directory,SymLink}():
- Simplified by using the new common _CreateNode(). Changed the constructors
slightly -- the block index is now set via a separate SetBlockIndex()
method.
- The block allocated for the node was not cleared. At least for directories
that is required, though.
* Added attribute support:
- Refactored/extended {open,create}_file() and DirCookie a bit, so they can
also be used for attributes/attribute directories.
- Implemented all relevant attribute FS hooks.
- Node::DeletingNode(): Changed interface (it creates the transaction(s) as
needed, now and doesn't return the error code anymore. The base class
implementation frees the attribute directory, the Directory implementation
also unlinks all entries and frees the entry tree.
* checksumfs_write_stat(): B_STAT_MODE was not handled.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37626 a95241bf-73f2-0310-859d-f6bbb57e9c96


# e828231248036363167313f7cad872c2bb5676e4 19-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Added node monitoring support.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37601 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4b53c2ba4f0b774030e369fc2ec522309b12d1f7 19-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Implemented hooks write_fs_info(), sync(), set_flags(), fsync(), access().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37595 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 470934be8c62e27f1c8b93a2a72e4aebcdf2f779 19-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Implemented link() hook.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37582 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 69d34a505bc1f59887dd5a0e94e93a58e81c182e 19-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Implemented rename() hook.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37579 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a628d23613699afef9360db89f98413164b5860d 18-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Prevent creation of entries in unlinked directories.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37563 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 87c30de7897d6a056d56edeb149e4d04b70db7be 13-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added a File class for representing regular files. We use a simple block tree
for the data management. Reading/writing (using file cache and file map) is
implemented, but not exactly well tested yet.
* Renamed SymLink::{Read,Write}() to {Read,Write}SymLink().
* Implemented FS hooks write_stat(), create(), read(), write(), io().
* Added O_TRUNC support to open() hook.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37507 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 06b318ef9b2c6fb2effe50155f2238c3e9d9078b 12-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Added symlink support.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37481 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a2e7c7417b968392fd1756b6b097eb047003e6c7 12-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added Transaction class which wraps a block cache transaction and performs
all other operations required to roll back a transaction. Transactions are
fully serialized -- due to limitations of our block cache and also to keep
things simple.
* Use a transaction for all write operations.
* Implemented the directory entry management code (a simple tree algorithm).
* Finished/implemented the FS hooks for directory entry lookup, directory
iteration, creation, and removal.
* Added non-persistent support for node access times.
* Set the user and group IDs on node creation.
* Added permission checks to several FS hooks.
* BlockAllocator::_Free(): The number of freed blocks was subtracted from
fFreeBlocks instead of added.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37478 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 74956f4385f2640f6de361d13e0cbe4f966ee1c7 05-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added the beginnings of node support.
* Added the bare minimum of file system hooks to mount the file system. Can't
do anything more than listing the (empty) root directory yet, though.
* Added Jamfile for building the file system for the userlandfs.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37406 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 952d6c8cc4d74029cf3a29cc84ebb313f6656aec 29-Jun-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

* Moved the checksum device driver to subdir "driver".
* Created a file system module and a disk system add-on. Currently only
initializing and identifying/scanning is supported.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37300 a95241bf-73f2-0310-859d-f6bbb57e9c96