summaryrefslogtreecommitdiff
path: root/ext2fs/pager.c
AgeCommit message (Collapse)Author
2011-10-03Sync pager before clearing MAY_CACHE flagSergio López
Clearing MAY_CACHE flag on a pager initiates a memory object termination if this one is not referenced anymore. If the object has a significant number of dirty pages (i.e. a file recently created was unlinked before diskfs periodical sync) this operation generates a lot of stress on the translator. This is one of the most common sources for thread storms. Sync'ing the pager before clearing that flag ensures that there aren't dirty pages in the object before its termination. * ext2fs/pager.c (drop_pager_softrefs): Sync pager before clearing MAY_CACHE flag.
2011-08-20fix common misspellingsJonathan Neuschäfer
* Fix spelling with codespell[1] and manually review it. [1] http://git.profusion.mobi/cgit.cgi/lucas/codespell/
2005-07-12ext2fs/Marcus Brinkmann
fatfs/ 2005-07-12 Marcus Brinkmann <marcus@gnu.org> * pager.c (diskfs_get_filemap): Initialize upi->max_prot to PROT.
2002-06-112002-06-08 Roland McGrath <roland@frob.com>Roland McGrath
* 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.
2002-06-052002-04-05 Neal H Walfield <neal@cs.uml.edu>Marcus Brinkmann
* pager.c (diskfs_grow): Correctly recalculate NEW_SIZE.
2002-06-022002-05-29 Roland McGrath <roland@frob.com>Roland McGrath
* 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.
2002-04-012002-04-01 Neal H Walfield <neal@cs.uml.edu>Neal H. Walfield
* pager.c (diskfs_grow): Fix inverted logic.
2002-03-262001-11-20 Neal H Walfield <neal@cs.uml.edu>Neal H. Walfield
* 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.
2001-01-072000-12-21 Marcus Brinkmann <marcus@gnu.org>Marcus Brinkmann
* 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>.
2000-03-102000-03-09 Roland McGrath <roland@baalperazim.frob.com>Roland McGrath
* 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.
2000-01-162000-01-16 Mark Kettenis <kettenis@gnu.org>Mark Kettenis
* pager.c (file_pager_write_page): Lock NODE->dn->alloc_lock before accessing NODE->allocsize. Fixes Debian bug #40302.
1999-09-13Reverted changes related to io_map_segment.Roland McGrath
1999-09-081999-09-07 Thomas Bushnell, BSG <tb@mit.edu>Thomas Bushnell
* 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.
1999-09-041999-09-04 Thomas Bushnell, BSG <tb@mit.edu>Thomas Bushnell
* 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>.
1999-07-111999-07-11 Roland McGrath <roland@baalperazim.frob.com>Roland McGrath
* dir.c (diskfs_get_directs): Fix sloppy bugs in last change. * hyper.c (allocate_mod_map): Likewise. * pager.c (get_page_buf): Likewise.
1999-07-111999-07-06 Thomas Bushnell, BSG <tb@mit.edu>Thomas Bushnell
* 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.
1999-07-031999-07-03 Thomas Bushnell, BSG <tb@mit.edu>Thomas Bushnell
* 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.
1999-06-191999-06-19 Roland McGrath <roland@baalperazim.frob.com>Roland McGrath
* pager.c (free_page_buf): Fix type cast.
1999-06-16Tue Jun 15 21:51:58 1999 Thomas Bushnell, BSG <tb@mit.edu>Thomas Bushnell
* 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>.
1998-12-211998-12-20 Roland McGrath <roland@baalperazim.frob.com>Roland McGrath
* inode.c (diskfs_write_disknode): Add braces to silence warning. * pager.c (file_pager_read_page): Likewise.
1998-09-041998-09-04 Roland McGrath <roland@baalperazim.frob.com>Roland McGrath
* pager.c: strings.h -> string.h; gets strerror decl.
1997-08-20Wed Aug 20 14:28:00 1997 Thomas Bushnell, n/BSG <thomas@gnu.ai.mit.edu>Thomas Bushnell
* 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.
1997-06-20(disk_pager_read_page):Miles Bader
Initialize READ to 0 to force store_read to allocate a buffer.
1996-09-23(file_pager_read_page, pending_blocks_write, disk_pager_read_page,Miles Bader
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.
1996-08-29(file_pager_read_page): Use get_page_buf to get a free page.Miles Bader
(file_pager_read_page): Use free_page_buf to deallocate pages.
1996-08-02(diskfs_grow): Fix ext2_debug format strings.Miles Bader
1996-07-20(file_pager_read_page, file_pager_write_page, pager_unlock_page,Miles Bader
diskfs_grow): Don't record debugging info.
1996-07-20(file_pager_read_page):Miles Bader
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.
1996-07-19(file_pager_read_page, file_pager_write_page):Miles Bader
Pass NODE->dn, not &NODE->dn to RECORD_LAST.
1996-07-17(pager_unlock_page, diskfs_grow, file_pager_read_page,Miles Bader
file_pager_write_page): Record debugging info.
1996-06-25(diskfs_grow): Add call diskfs_check_readonly to clear clean bit.Miles Bader
1996-06-25(diskfs_shutdown_pager): Don't shutdown the disk pager, just sync it.Miles Bader
(diskfs_sync_everything): Call sync_global instead of pokel_sync. (final_sblock): Variable removed.
1996-04-11Replace references to the NUMBER field in a node's disknode structures withMiles Bader
references to the CACHE_ID field in the node.
1996-03-29(pager_unlock_page, diskfs_grow):Miles Bader
Try to make the logic a bit simpler and more robust.
1996-01-30(file_pager_read_page, file_pager_write_page): Check for a page offsetRoland McGrath
beyond the allocsize and return EIO.
1996-01-18(diskfs_file_update): Ext2fs doesn't require that the last block in the fileMiles Bader
always be allocated, so don't. (diskfs_grow, pager_unlock_page): Don't set last_block_allocated.
1996-01-06(pager_bucket): Made global.Roland McGrath
(create_disk_pager): Pass MAY_CACHE to disk_setup_pager.
1996-01-04(create_disk_pager): Use disk_pager_setup.Roland McGrath
1995-10-21(create_disk_pager, diskfs_get_filemap, pager_clear_user_data):Miles Bader
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.
1995-09-15u32 --> block_tMiles Bader
1995-09-05(diskfs_pager_users): Ignore the disk pager when seeing if there are anyMiles Bader
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.
1995-07-21(diskfs_get_filemap): Drop initial reference created by pager_create.Michael I. Bushnell
(pager_clear_user_data): Only clear UPI->node->dn->fileinfo if it still points to us.
1995-07-21(diskfs_get_filemap): Free initial reference created by pager_create.Michael I. Bushnell
1995-07-09(diskfs_pager_users): New function.Miles Bader
1995-06-27(pager_unlock_page): Declare BLOCK volatile.Michael I. Bushnell
1995-06-24(thread_function): New function.Miles Bader
(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).
1995-05-12(pager_unlock_page): Give an explanation of why the file system will shortlyMiles Bader
crash.
1995-05-09entered into RCSMiles Bader
1995-05-08Formerly pager.c.~29~Miles Bader
1995-05-03Formerly pager.c.~27~Miles Bader