#
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
|