Age | Commit message (Collapse) | Author |
|
fatfs/
2005-07-12 Marcus Brinkmann <marcus@gnu.org>
* pager.c (diskfs_get_filemap): Initialize upi->max_prot to PROT.
|
|
* ialloc.c (diskfs_free_node): Use %Ld format for ino_t/off_t values.
* pager.c (diskfs_grow, pager_unlock_page): Likewise.
* inode.c (read_node): Likewise.
* dir.c (diskfs_get_directs): Likewise.
|
|
* pager.c (diskfs_grow): Correctly recalculate NEW_SIZE.
|
|
* dir.c (dirscanblock): Use %z format.
(diskfs_get_directs): Likewise.
* ext2fs.c (main): Likewise.
* hyper.c (get_hypermetadata): Likewise.
* pager.c (pager_unlock_page): Likewise.
|
|
* pager.c (diskfs_grow): Fix inverted logic.
|
|
* pager.c (MAX_FREE_PAGE_BUFS): Remove obsolete macro.
(FREE_PAGE_BUFS): New macro.
(free_page_bufs_lock): Make this global variable local to
get_page_buf.
(free_page_bufs): Likewise.
(num_free_page_bufs): Likewise.
(get_page_buf): Reimplement using a new caching algorithm
based on preallocation of COW zero pages.
(free_page_buf): Likewise.
(find_block): Documentation fixes.
|
|
* pager.c: Include <errno.h>.
(create_disk_pager): Panic if malloc fails.
Reported by Igor Khavkine <i_khavki@alcor.concordia.ca>.
* inode.c (diskfs_get_translator): If malloc fails, set err to ENOMEM.
Initialize err with 0, and return it at the end of the function.
Reported by Igor Khavkine <i_khavki@alcor.concordia.ca>.
|
|
* balloc.c (ext2_free_blocks, ext2_new_block): Fix formats to avoid
-Wformat warnings.
* getblk.c (ext2_alloc_block, inode_getblk, ext2_getblk): Likewise.
* ialloc.c (ext2_count_free_inodes): Likewise.
* truncate.c (trunc_direct): Likewise.
* pager.c (pending_blocks_write, diskfs_grow): Likewise.
|
|
* pager.c (file_pager_write_page): Lock NODE->dn->alloc_lock
before accessing NODE->allocsize. Fixes Debian bug #40302.
|
|
|
|
* dir.c (diskfs_lookup_hard): Pass additional parameter to
diskfs_get_filemap.
(diskfs_dirempty): Likewise.
* truncate.c (force_delayed_copies): Likewise.
* pager.c (diskfs_get_filemap): Accept additional parameter.
|
|
* pager.c (file_pager_write_page): Don't report errors on writes
that extend past NODE->allocsize. This avoids a race between sync
and truncate. Reported by Mark Kettenis <kettenis@wins.uva.nl>.
|
|
* dir.c (diskfs_get_directs): Fix sloppy bugs in last change.
* hyper.c (allocate_mod_map): Likewise.
* pager.c (get_page_buf): Likewise.
|
|
* dir.c (diskfs_get_directs): Use mmap instead of vm_allocate.
* hyper.c (allocate_mod_map): Likewise.
(get_hypermetadata): Likewise.
* pager.c (get_page_buf): Likewise.
* hyper.c (diskfs_readonly_changed): Use mprotect instead of
vm_protect.
|
|
* dir.c (diskfs_lookup_hard): Use munmap instead of vm_deallocate.
(diskfs_direnter_hard): Likewise.
(diskfs_dirremove_hard): Likewise.
(diskfs_dirrewrite_hard): Likewise.
(diskfs_dirempty): Likewise.
(diskfs_drop_dirstat): Likewise.
(diskfs_get_directs): Likewise.
* hyper.c (allocate_mod_map): Likewise.
(get_hypermetadata): Likewise.
* pager.c (free_page_buf): Likewise.
* truncate.c (poke_pages): Likewise.
|
|
* pager.c (free_page_buf): Fix type cast.
|
|
* pager.c: Clamp the number of free pages we keep around to some
reasonably small value. Patch from Mark Kettenis
<kettenis@wins.uva.nl>.
1999-06-15 Thomas Bushnell, BSG <tb@mit.edu>
* inode.c (diskfs_validate_flags_change): Invert sense of test wrt
bits that haven't yet been defined. Reported by Kalle Olavi
Niemitalo <tosi@ees2.oulu.fi>.
|
|
* inode.c (diskfs_write_disknode): Add braces to silence warning.
* pager.c (file_pager_read_page): Likewise.
|
|
* pager.c: strings.h -> string.h; gets strerror decl.
|
|
* dir.c (diskfs_lookup_hard): Cope with error return from
diskfs_get_filemap.
(diskfs_dirempty): Cope (poorly) with error return from
diskfs_get_filemap.
* truncate.c (force_delayed_copies): Likewise.
* pager.c (diskfs_get_filemap): If pager_create fails, return
error to caller.
|
|
Initialize READ to 0 to force store_read to allocate a buffer.
|
|
disk_pager_read_page, disk_pager_write_page, pager_report_extent,
find_block, pager_unlock_page, diskfs_grow):
Use store_ operations instead of the old device ones, and some store
fields instead of globals.
(file_pager_read_page):
Make BUF void **, NEW_BUF void *, and LENGTH size_t.
Pass &LENGTH to store_read, not LENGTH.
(free_page_bufs, free_page_bufs_lock):
New variables.
(create_disk_pager):
Create PAGER_BUCKET.
Pass in new args to diskfs_pager_setup (renamed from disk_pager_setup).
(service_paging_request):
Function removed.
(struct pending_blocks):
Make BUF void *.
(disk_pager_write_page):
Make BUF void *, and LENGTH size_t.
Check amount written, and return EIO if it's wrong.
(disk_image):
New variable.
(get_page_buf, free_page_buf):
New functions.
(disk_pager_read_page):
Make BUF void **, and LENGTH size_t.
Check amount read, and return EIO if it's wrong.
(file_pager_write_pager):
Make BUF void *.
(diskfs_shutdown_pager):
Use DISKFS_DISK_PAGER instead of DISK_PAGER.
(pager_read_page, pager_read_page):
Convert BUF to a pointer when calling work functions.
(file_pager_read_page:do_pending_reads, pager_unlock_page,
pending_blocks_write, diskfs_grow, find_block):
Use filesystem blocks, not device blocks, in block<->offset/size
conversions.
(pending_blocks_write):
Make PAGE_BUF void *, and LENGTH size_t.
Check amount written, and return EIO if it's wrong.
<hurd/store.h>:
New include.
|
|
(file_pager_read_page): Use free_page_buf to deallocate pages.
|
|
|
|
diskfs_grow): Don't record debugging info.
|
|
Set NODE->dn->last_page_partially_writable if we return such a page.
(diskfs_grow):
Rename OLD_END_BLOCK to END_BLOCK.
Correctly determine whether to set DN->last_page_partially_writable
after allocating new blocks.
|
|
Pass NODE->dn, not &NODE->dn to RECORD_LAST.
|
|
file_pager_write_page):
Record debugging info.
|
|
|
|
(diskfs_sync_everything): Call sync_global instead of pokel_sync.
(final_sblock): Variable removed.
|
|
references to the CACHE_ID field in the node.
|
|
Try to make the logic a bit simpler and more robust.
|
|
beyond the allocsize and return EIO.
|
|
always be allocated, so don't.
(diskfs_grow, pager_unlock_page): Don't set last_block_allocated.
|
|
(create_disk_pager): Pass MAY_CACHE to disk_setup_pager.
|
|
|
|
Don't use the p field in a upi.
(diskfs_get_filemap): Update/initialize the max_prot field. Add the prot arg.
(drop_pager_softrefs): Declare PAGER, not UPI.
(enable_caching): The disk node is upi->node, not upi->np.
(diskfs_get_filemap_pager_struct, flush_node_pager,
diskfs_file_update, pager_clear_user_data, drop_pager_softrefs):
Use pager field, not fileinfo.
(flush_node_pager): New function.
(create_disk_pager): Store the actual pager into DISK_PAGER.
(diskfs_shutdown_pager, diskfs_sync_everything):
Use DISK_PAGER directly, not ->p.
|
|
|
|
active pagers.
(diskfs_shutdown_pager): shutdown_one gets passed a pager, not a upi.
(diskfs_sync_everything): sync_one gets passed a pager, not a upi.
|
|
(pager_clear_user_data): Only clear UPI->node->dn->fileinfo if it still
points to us.
|
|
|
|
|
|
|
|
(create_disk_pager): Make a new thread to service paging requests.
(pager_bucket): New variable.
(pager_list_lock, file_pager_list): Variables deleted.
(create_disk_pager): Create pager_bucket.
(create_disk_pager, diskfs_get_filemap): Pass pager_bucket to pager_create.
(pager_traverse): Function deleted.
(diskfs_get_filemap, pager_clear_user_data): Don't add/remove UPI to/from the
pager list, as there isn't any.
(diskfs_shutdown_pager, diskfs_sync_everything): Use ports_bucket_iterate on
pager_bucket to go through all the pagers, instead of pager_traverse.
(diskfs_file_update, pager_traverse, allow_pager_softrefs,
drop_pager_softrefs): Change pager [un]ref calls to use the new ports ref
calls directly instead.
(pager_dropweak): New function (does nothing).
|
|
crash.
|
|
|
|
|
|
|
|
|
|
|