Age | Commit message (Collapse) | Author |
|
|
|
* ext2fs/getblk.c (inode_getblk): Function is changed.
|
|
* ext2fs/ialloc.c (ext2_alloc_inode): Function is changed.
|
|
* ext2fs/inode.c (read_node): Function is changed.
|
|
* ext2fs/truncate.c (force_delayed_copies): Fix typo.
|
|
This commit is port of large store patch from debian repository.
Additionally this patch was changed to use new libpager interface.
The main idea behind this patch is to use special disk cache up to 2Gb size
instead of mapping the whole partition. This cache is used to map only those
pages of partitions that are used at the moment or were used recently. This
allows to map only up to 2Gb of memory, although partition could be much
bigger.
This commit does not bring support for large files, only for partitions!
* ext2fs/balloc.c (ext2_free_blocks): Function changed to access disk blocks
in a new way.
(ext2_new_block): Likewise.
(ext2_count_free_blocks): Likewise.
(ext2_check_blocks_bitmap): Likewise.
* ext2fs/ext2fs.c (main): As now not the whole image is being mapped, but
there is disk cache is being used, appropriately were changed some names of
functions and variables.
(diskfs_reload_global_state): Likewise.
* ext2fs/ext2fs.h (DISK_CACHE_BLOCKS): New macro. Sets size of disk cache.
(DC_INCORE, DC_UNTOUCHED, DC_FIXED, DC_DONT_REUSE, DC_NO_BLOCK): New macros,
used for keeping status of block in disk cache.
(DISK_CACHE_LAST_READ_XOR) [NDEBUG]: New macro for debugging purposes.
(struct disk_cache_info): Structure that keeps information about block in
disk cache.
(bptr_index): New macro for converting address in memory to index of block
in disk cache.
(boffs_ptr): Macro has been converted to function to take into account
presence of disk cache.
(bptr_offs): Likewise.
(dino -> dino_ref): Function has been renamed and changed to take into
account presence of disk cache.
(dino_deref): New function that releases dinode.
(record_global_poke): Function changed to access disk blocks in a new way.
(sync_global_ptr): Likewise.
(record_indir_poke): Likewise.
(sync_global): Add debugging macro.
* ext2fs/getblk.c (ext2_alloc_block): Function changed to access disk block
in a new way.
(block_getblk): Likewise.
* ext2fs/hyper.c (get_hypermetadata): Function has been changed because,
to read sblock on its own.
(map_hypermetadata): New function that sets sblock and group_desc_image as
pointers in disk cache.
(diskfs_set_hypermetadata): Increase reference count in disk cache for
sblock, when it is poked.
(diskfs_readonly_changed): Update function to use disk cache.
* ext2fs/ialloc.c (diskfs_free_node): Function changed to access disk blocks
in a new way.
(ext2_alloc_inode): Likewise.
(ext2_count_free_inodes): Likewise.
(ext2_check_inodes_bitmap): Likewise.
* ext2fs/inode.c (diskfs_cached_lookup): Use disk cache instead of disk
image.
(read_node): Function changed to access disk blocks using interface. Also
debugging macro has been added.
(write_node): Likewise.
(diskfs_set_translator): Function changed to access disk blocks using
interface.
(diskfs_set_translator): Likewise.
* ext2fs/pager.c (disk_image): Obsolete variable removed.
(STAT_ADD): New macro.
(FREE_PAGE_BUFS): Remove obsolete macro.
(get_page_buf -> get_buf): Function renamed and changed to return buffer of
asked size.
(free_page_buf -> free_buf): Function renamed and changed.
(file_pager_read_page -> file_pager_read): Function renamed and changed to
process several pages at once.
(file_pager_write_page -> file_pager_write): Likewise.
(disk_pager_read_page -> disk_pager_read): Likewise.
(disk_pager_write_page -> disk_pager_write): Likewise.
(pending_blocks_write): Function has been changed.
(ext2_pager_notify_evict): New function.
(pager_read_page -> ext2_read_pages): Function has been renamed and changed
to support new libpager interface.
(pager_write_page -> ext2_write_pages): Likewise.
(pager_unlock_page -> ext2_unlock_pages): Likewise.
(pager_report_extent -> ext2_report_extent): Likewise.
(pager_clear_user_data -> ext2_clear_user_data): Likewise.
(pager_dropweak): Remove obsolete function.
(ext2_ops): New variable.
(disk_cache): Likewise.
(disk_cache_size): Likewise.
(disk_cache_blocks): Likewise.
(disk_cache_bptr): Likewise.
(disk_cache_info): Likewise.
(disk_cache_hint): Likewise.
(disk_cache_lock): Likewise.
(disk_cache_reassociation): Likewise.
(disk_cache_init): New function.
(disk_cache_return_unused): Likewise.
(disk_cache_block_ref_no_block): Likewise.
(disk_cache_block_is_cached): Likewise.
(disk_cache_block_ref): Likewise.
(disk_cache_block_ref_hint_no_block): Likewise.
(disk_cache_block_ref_ptr): Likewise.
(disk_cache_block_deref): Likewise.
(disk_cache_block_is_ref): Likewise.
(create_disk_pager): Function has been changed to support both new
interfaces of libpager and disk cache.
(diskfs_get_filemap): Function has been changed to support new interface of
libpager.
* ext2fs/pokel.c (pokel_add): Function changed to take into account new way
of working with disk blocks.
(__pokel_exec): Likewise.
* ext2fs/truncate.c (trunc_indirect): Function changed to take into account
both new way of working with disk blocks and changes in libpager.
(force_delayed_copies): Function changed to support new libpager interface.
|
|
* ext2fs/ext2fs.h (trunc_block): Macro is changed.
(rount_block): Likewise.
(boffs): Likewise.
|
|
* ext2fs/ext2fs.c (diskfs_reload_global_state): Function changed.
|
|
Not all functions are replaced, but rest of them will be replaced in
future commits. This is done so, because these function are involved in
other changes and making intermediate changes just bring unnecessary
complication.
* ext2fs/ext2fs.c (parse_opt): Function changed.
* ext2fs/getblk.c (ext2_alloc_block): Likewise.
* ext2fs/inode.c (diskfs_set_translator): Likewise.
(write_symlink): Likewise.
(read_symlink): Likewise.
|
|
This commit removes compiling warnings when debug macros are enabled.
* ext2fs/getblk.c (ext2_discard_prealloc): Fix format.
* ext2fs/ialloc.c (diskfs_free_node): Likewise.
* ext2fs/inode.c (write_node): Likewise.
* ext2fs/pager.c (pending_blocks_write): Likewise.
(file_pager_write_page): Likewise.
(disk_pager_write_page): Likewise.
(diskfs_grow): Likewise.
|
|
*ext2fs/balloc.c (ext2_new_block): Function changed.
|
|
* ext2fs/balloc.c (ext2_new_block): Function changed.
* ext2fs/ialloc.c (ext2_alloc_inode): Function changed.
|
|
* storeio/pager.c (struct user_pager_info): New structure.
(store_read_pages): Function renamed. Old name was pager_read_page.
(store_write_pages): Function renamed. Old name was pager_write_page.
(store_unlock_pages): Function renamed. Old name was pager_unlock_page.
(store_report_extent): Function renamed. Old name was pager_report_extent.
(store_clear_user_data): Function renamed. Old name was pager_clear_user_data.
(pager_dropweak): Delete obsolete function.
(store_ops): New structure.
(dev_get_memory_object): Function changed.
|
|
This implementation transfers data by one page and uses inline functions.
* console/pager.c (cons_read_pages): Function renamed. Old name was
pager_read_page.
(cons_write_pages): Function renamed. Old name was pager_write_page.
(cons_report_extent): Function renamed. Old name was pager_report_extent.
(cons_clear_user_data): Function renamed. Old name was pager_clear_user_data.
(pager_dropweak): Delete obsolete function.
(pager_unlock_page): Likewise.
(console_ops): New structure.
(user_pager_create): Function changed.
|
|
* iso/pager.c (iso_read_pages): Function renamed. Old name was pager_read_page.
(iso_unlock_pages): Function renamed. Old name was pager_unlock_page.
(iso_report_extent): Function renamed. Old name was pager_report_extent.
(iso_clear_user_data): Function renamed. Old name was pager_clear_user_data.
(pager_dropweak): Delete obsolete function.
(pager_write_page): Likewise.
(iso_ops): New structure.
(create_disk_pager): Function changed.
(diskfs_get_filemap): Likewise.
|
|
This implementation transfers data by one page and uses nested functions.
* fatfs/pager.c (fat_read_page): Function renamed. Old name was pager_read_page.
(fat_write_page): Function renamed. Old name was pager_write_page.
(fat_unlock_page): Function renamed. Old name was pager_unlock_page.
(fat_report_extent): Function renamed. Old name was pager_report_extent.
(fat_clear_user_data): Function renamed. Old name was pager_clear_user_data.
(pager_dropweak): Delete obsolete function.
(fat_read_pages): New function.
(fat_write_pages): New function.
(fat_unlock_pages): New function.
(fat_ops): New structure.
(create_fat_pager): Function changed.
(diskfs_get_filemap): Likewise.
|
|
This implementation transfers data by one page and uses nested functions.
* ufs/pager.c (ufs_read_page): Function renamed. Old name was pager_read_page.
(ufs_write_page): Function renamed. Old name was pager_write_page.
(ufs_unlock_page): Function renamed. Old name was pager_unlock_page.
(ufs_report_extent): Function renamed. Old name was pager_report_extent.
(ufs_clear_user_data): Function renamed. Old name was pager_clear_user_data.
(pager_dropweak): Delete obsolete function.
(ufs_read_pages): New function.
(ufs_write_pages): New function.
(ufs_unlock_pages): New function.
(ufs_ops): New structure.
(create_disk_pager): Function changed.
(diskfs_get_filemap): Likewise.
* ufs/sizes.c (offer_data): Function changed.
|
|
* tmpfs/pager-stubs.c: Remove obsolete file.
* tmpfs/Makefile (SRCS): Update variable.
|
|
* mach-defpager/default_pager.c (pager_move_page): Function changed.
(default_write): Likewise.
* mach-defpager/file_io.h (page_write_file_direct): Prototype changed.
* mach-defpager/setup.c (page_write_file_direct): Function changed.
|
|
* mach-defpager/default_pager.c (pager_release_offset): Function accepts size
as new parameter.
(struct block): New structure for internal use in function default_read.
(struct send_range_parameters): Likewise.
(get_block_address): New function for internal use in function default_read.
(is_range_extendable): Likewise.
(upload_range): Likewise.
(get_data_for_range): Likewise.
(apply_to_ranges): Likewise.
(send_range): Likewise.
(default_read): Function changed.
(seqnos_memory_object_data_request): Likewise.
(start_default_pager_thread): Likewise.
(default_pager): Likewise.
(max_dpt_buffer_size): New variable.
* mach-defpager/default_pager.h (page_aligned): New function that has been
moved out of mach-defpager/setup.c.
* mach-defpager/setup.c (page_aligned): Function removed.
(page_read_file_direct): Function changed to be able to work with buffers,
not only of size vm_page_size.
|
|
* doc/hurd.texi: Update documentation.
|
|
* libdiskfs/disk-pager.c (diskfs_start_disk_pager): Function changed to
use new libpager interface.
* libdiskfs/disk-pager.h (diskfs_start_disk_pager): Prototype changed.
|
|
* libpager/priv.h (DEBUG): Fix macro.
|
|
* libpager/pager.h (pager_process_pages): New function.
|
|
* libpager/data-return.c (_pager_seqnos_memory_object_data_return):
Notify pager on data eviction.
* libpager/priv.h (struct pager): New field.
* libpager/pager.h (struct pager_ops): New field.
|
|
* pager.h (struct pager): Bring into scope. (struct
pager_ops): New structure. Contains the call backs: read,
write, unlock, report_extent, clear_user_data and dropweak.
Replaces the linker-time call backs: pager_read_page,
pager_write_page, pager_unlock_page, pager_report_extenet,
pager_clear_user_data and pager_drop_weak. Functions now
also have a multipage interface and take block, not byte,
offsets (i.e. off_t's, not vm_address_t's).
(pager_cleate): Take a struct pager_ops to support new interface.
Take the size of the desired user_page_info structure rather than
a user_pager_info structure to correspond with the new semantics.
(pager_get_error): Follow new semantics: take the page number
rather than a byte offset.
(pager_sync_come): Likewise.
(pager_flush_come): Likewise.
(pager_return_some): Likewise.
(pager_memcpy): Likewise.
(pager_offset_page): Remove obsolete function.
(pager_read_page): Removed in favor of call back in struct
pager_ops.
(pager_write_page): Likewise.
(pager_unlock_page): Likewise.
(pager_report_extent): Likewise.
(pager_clear_user_data): Likewise.
(pager_dropweak): Likewise.
(pager_data_supply): New function.
(pager_data_unavailable): Likewise.
(pager_data_read_error): Likewise.
(pager_data_write_error): Likewise.
(pager_data_unlock): Likewise.
(pager_data_unlock_error): Likewise.
* priv.h (struct pager): Change UPI from a struct user_pager_info
to a flex array at the end of the structure to match the new
pager_create semantics. Add the pager_ops call back structure.
(PM_PAGEINWAIT): Macro no longer used.
(PM_WRITEWAIT): Adjust value.
(PM_INIT): Likewise.
(PM_INCORE): Likewise.
(PM_PAGINGOUT): Likewise.
(_pager_pagemap_resize): Take a block offset, not a byte-offset.
(_pager_mark_next_request_error): Likewise.
(_pager_mark_object_error): Likewise.
(_pager_lock_object): Likewise. P->interlock is now expected to
already be held during the call.
* data-return.c (_pager_do_write_request) Remove obsolete
function.
* data-return.c (_pager_seqnos_memory_object_data_return):
Rewritten to work with the new paging interface.
* data-request.c (_pager_seqnos_memory_object_data_request):
Likewise.
* data-unlock.c (_pager_seqnos_memory_object_data_unlock):
Likewise.
* clean.c (_pager_clean): Use the new call backs in P->ops.
* dropweak.c (_pager_real_dropweak): Likewise.
* lock-completed.c (_pager_seqnos_memory_object_lock_completed):
Handle page offsets and not byte offsets.
* lock-object.c (_pager_lock_object): Handle page offsets and not
byte offsets. As per the new interface, do not lock P->interlock
anymore.
* mark-error.c (_pager_mark_next_request_error): Handle page
offsets and not byte offsets. Use vm_page_size, not
__vm_page_size. Doc fix.
(_pager_mark_object_error): Likewise.
(pager_get_error): Likewise.
* pagemap.c (VMCOPY_BETTER_THAN_MEMCPY): New macro.
(_pager_pagemap_resize): Handle page offsets and not byte
offsets. Use vm_page_size, not __vm_page_size. Allocate the
minimum number of pages. Check the result of mmap against
MAP_FAILED, not -1. Use mempcy, not bcopy. Use vm_copy when
appropriate.
* object-init.c (_pager_seqnos_memory_object_init): Use
vm_page_size, not __vm_page_size. Check the result of malloc.
* pager-attr.c (pager_change_attributes): Correct a typo. Add an
assert.
* pager-create.c (pager_create): Comform to the new semantics as
outlined in the pager.h changelog entry.
* pager-flush.c (pager_flush): Use the new call backs in P->ops.
Handle page offsets, not byte offsets. Call the corresponding
_some function rather than copy the code.
* pager-return.c (pager_return): Likewise.
* pager-sync.c (pager_sync): Likewise.
* pager-flush.c (pager_flush_some): Handle page offsets and not
byte offsets. Lock P->interlock around _pager_lock_object as per
the new semantics.
* pager-return.c (pager_return_some): Likewise.
* pager-sync.c (pager_sync_some: Likewise.
* pager-memcpy.c (pager_memcpy): Pass the pager offset, not the
byte offset to _pager_get_error. Change OFFSET to an off_t rather
than a vm_address_t as per the new semantics.
* Makefile (SRCS): Remove offer-pager.c. Add
pager-data-read-error.c pager-data-unavailable.c
pager-data-unlock.c pager-data-supply.c pager-data-unlock-error.c
pager-data-write-error.c.
* offer-page.c: Remove obsolete files.
* pager-data-read-error.c: New file.
* pager-data-supply.c: Likewise.
* pager-data-unavailable.c: Likewise.
* pager-data-unlock-error.c: Likewise.
* pager-data-unlock.c: Likewise.
* pager-data-write-error.c: Likewise.
|
|
|
|
* ext2fs/balloc.c (ext2_new_block): When J & 31 is 31, replace 32bit right
shift with 0;
|
|
* ext2fs/bitmap.c (find_next_zero_bit): Check whether TMP has a bit set before
calling ffz.
|
|
* sutils/MAKEDEV.sh (netdde, eth*): Add targets.
|
|
* libdiskfs/dir-link.c (diskfs_S_dir_link): When source node is a directory,
fail with EPERM instead of EISDIR.
|
|
* libpipe/pq.h (packet_peek): Declare new function.
* libpipe/pq.c (packet_read): Move code to new `packet_fetch' function, call it
with `remove' set to 1.
(packet_fetch): New function with code from `packet_read', but do not remove
data if `remove' is 0.
(packet_peek): New function, calls `packet_fetch' with `remove' set to 0.
* libpipe/dgram.c (dgram_read): When MSG_PEEK is in *flags, do not dequeue
and only peek data.
* libpipe/seqpack.c (seqpack_read): Likewise.
* libpipe/stream.c (stream_read): Likewise.
* pflocal/socket.c (S_socket_recv): Pass MSG_PEEK flag to libpipe.
|
|
* Makeconf (dist.tar): When $(dir) is ".", avoid adding "./" to the
resulting file name.
|
|
* Makeconf (dist.tar): Invoke `tar' with `--owner=0 --group=0'.
|
|
* doc/Makefile (targets): Add `version.texi'.
|
|
* Makeconf (lndist): Remove target.
(dist-hook, dist.tar): New targets.
* Makefile (dist): Rewrite this target's as well as accompanying rules.
(%-lndist, cp-linked-files, $(lf-inst)): Remove targets.
(%.bz2, %.gz, %/dist-hook): New targets.
(DISTFILES): Set.
* doc/Makefile (DISTFILES): Set.
* doc/Makefile (lndist, lndist-info-targets): Remove targets.
* include/Makefile (lndist): Remove target.
* libthreads/Makefile (lndist, lndist-i386-files, lndist-map-file): Remove
targets.
* pfinet/Makefile (lndist, lndist-linux-src-net-core-files)
(lndist-linux-src-net-ethernet-files, lndist-linux-src-net-ipv4-files)
(lndist-linux-src-net-ipv6-files, lndist-linux-src-asm-files)
(lndist-linux-src-include-linux-files, lndist-linux-src-include-net-files)
(lndist-linux-src-include-asm-files, lndist-glue-include-linux-files)
(lndist-glue-include-asm-files): Remove targets.
* auth/Makefile (LCLHDRS): Don't set.
* boot/Makefile (LCLHDRS, DIST_FILES): Likewise.
* bsdfsck/Makefile (LCLHDRS): Likewise.
* config/Makefile (DIST_FILES): Likewise.
* console-client/Makefile (LCLHDRS): Likewise.
* console/Makefile (LCLHDRS, DIST_FILES): Likewise.
* doc/Makefile (DIST_FILES): Likewise.
* exec/Makefile (LCLHDRS, DIST_FILES): Likewise.
* ext2fs/Makefile (LCLHDRS): Likewise.
* fatfs/Makefile (LCLHDRS): Likewise.
* ftpfs/Makefile (LCLHDRS): Likewise.
* hostmux/Makefile (LCLHDRS): Likewise.
* hurd/Makefile (DIST_FILES): Likewise.
* include/Makefile (LCLHDRS): Likewise.
* isofs/Makefile (LCLHDRS, DIST_FILES): Likewise.
* libcons/Makefile (LCLHDRS): Likewise.
* libdirmgt/Makefile (LCLHDRS): Likewise.
* libdiskfs/Makefile (LCLHDRS): Likewise.
* libfshelp/Makefile (LCLHDRS): Likewise.
* libftpconn/Makefile (LCLHDRS): Likewise.
* libihash/Makefile (LCLHDRS): Likewise.
* libiohelp/Makefile (LCLHDRS): Likewise.
* libnetfs/Makefile (LCLHDRS): Likewise.
* libpager/Makefile (LCLHDRS): Likewise.
* libpipe/Makefile (LCLHDRS): Likewise.
* libports/Makefile (LCLHDRS): Likewise.
* libps/Makefile (LCLHDRS): Likewise.
* libshouldbeinlibc/Makefile (LCLHDRS): Likewise.
* libstore/Makefile (LCLHDRS, DIST_FILES): Likewise.
* libthreads/Makefile (LCLHDRS): Likewise.
* libtreefs/Makefile (LCLHDRS): Likewise.
* libtrivfs/Makefile (LCLHDRS): Likewise.
* mach-defpager/Makefile (LCLHDRS): Likewise.
* nfs/Makefile (LCLHDRS): Likewise.
* nfsd/Makefile (LCLHDRS): Likewise.
* pfinet/Makefile (LCLHDRS): Likewise.
* pflocal/Makefile (LCLHDRS): Likewise.
* proc/Makefile (LCLHDRS, DIST_FILES): Likewise.
* release/Makefile (DIST_FILES): Likewise.
* storeio/Makefile (LCLHDRS): Likewise.
* sutils/Makefile (LCLHDRS): Likewise.
* term/Makefile (LCLHDRS, DIST_FILES): Likewise.
* tmpfs/Makefile (LCLHDRS): Likewise.
* ufs-fsck/Makefile (LCLHDRS): Likewise.
* ufs/Makefile (LCLHDRS): Likewise.
* usermux/Makefile (LCLHDRS): Likewise.
* utils/Makefile (LCLHDRS): Likewise.
|
|
* configure: Remove file.
* .gitignore: Update.
* doc/version.texi: Remove file.
* doc/.gitignore: Update.
|
|
* Makefile (configure, config.status, config.make): New targets.
|
|
|
|
Follow-up to 05f5cc229323a61799388fbb52da84ca8cb502c9 (»configure: Use modern
`AC_INIT' invocation.«).
* Makeconf (%: %.sh): Depend on config.make.
* Makefile (version.h): Use a stamp file.
(stamp-version): Depend on config.make.
* doc/Makefile (stamp-version): Likewise.
* Makeconf (make-deps): Take additional target-specific dependencies, $*-DEPS.
* console-client/Makefile (driver-DEPS): Depend on config.make.
* libstore/Makefile (module-DEPS): Likewise.
|
|
* hurd/configure: Remove file.
* hurd/configure.ac: Likewise.
* hurd/install-headers.in: Likewise.
|
|
* Makeconf ($(INSTALLED_LOCAL_HEADERS)): Just depend on the Makefile.
The include/ hierarchy does not depend on anything but the local Makefile;
especially it does not depend on how the package has been configured, which is
what config.make records.
|
|
|
|
|
|
* tmpfs/dir.c (struct dirstat): New field.
(diskfs_lookup_hard): Record whether type is SPEC_DOTDOT in dotdot field of
ds.
(diskfs_dirrewrite_hard): If ds->dotdot is true, set dp->dn->u.dir.dotdot
insteead of (ds->prevp)->dn.
|
|
* mach-defpager/default_pager.c (pager_get_direct_map): New function.
(pager_alloc): Initialize map field to NULL.
(pager_allocated, pager_pages, pager_extend, pager_write_offset): Use
pager_get_direct_map to access to pager's map.
|
|
* mach-defpager/default_pager.c (pager_truncate): Do not optimize by using
partial kfree.
|
|
* mach-defpager/default_pager.c (pager_truncate): Use new_size instead of
old_size in memcpy.
|
|
* mach-defpager/default_pager.c (pager_truncate): Do not set old_size to
PAGEMAP_ENTRIES, to avoid freeing again just below.
|
|
sparse.
* mach-defpager/default_pager.c (pager_truncate, pager_read_offset,
pager_release_offset, pager_dealloc, pager_realloc): Add checks for map
field being NULL.
(pager_dealloc): Set map pointer to zero.
|