<feed xmlns='http://www.w3.org/2005/Atom'>
<title>teythoon/hurd.git/fatfs, branch master</title>
<subtitle>Personal Hurd development repository</subtitle>
<id>https://darnassus.sceen.net/cgit/teythoon/hurd.git/atom?h=master</id>
<link rel='self' href='https://darnassus.sceen.net/cgit/teythoon/hurd.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/hurd.git/'/>
<updated>2016-08-07T21:28:45Z</updated>
<entry>
<title>libpager: provide 'pager_create_alloc'</title>
<updated>2016-08-07T21:28:45Z</updated>
<author>
<name>Justus Winter</name>
<email>justus@gnupg.org</email>
</author>
<published>2016-05-22T17:35:10Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/hurd.git/commit/?id=0e3a795af98b6441d0a9928036e140978511e272'/>
<id>urn:sha1:0e3a795af98b6441d0a9928036e140978511e272</id>
<content type='text'>
Add a variant to 'pager_create' that allocates memory for the user
hook next to the pager data increasing locality.

* console/pager.c (pager_clear_user_data): Fix type of 'idx', do not
free 'upi'.
(user_pager_create): Use the new function.
* doc/hurd.texi: Document new function.
* ext2fs/pager.c (pager_clear_user_data): Don't free 'upi'.
(diskfs_get_filemap): Use the new function.
* fatfs/pager.c (pager_clear_user_data): Don't free 'upi'.
(diskfs_get_filemap): Use the new function.
* isofs/pager.c (pager_clear_user_data): Don't free 'upi'.
(diskfs_get_filemap): Use the new function.
* libpager/pager-create.c (_pager_create): New generic allocation
function.
(pager_create): Use the new generic function.
(pager_create_alloc): New function.
* libpager/pager.h (pager_create_alloc): New prototype.
</content>
</entry>
<entry>
<title>Drop OTHERLIBS and use LDLIBS exclusively</title>
<updated>2015-12-31T20:47:32Z</updated>
<author>
<name>Flavio Cruz</name>
<email>flaviocruz@gmail.com</email>
</author>
<published>2015-12-31T16:49:25Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/hurd.git/commit/?id=a70c7531ed3a6378dd527da005a1fe63fbb4871a'/>
<id>urn:sha1:a70c7531ed3a6378dd527da005a1fe63fbb4871a</id>
<content type='text'>
When cross-compiling, OTHERLIBS magically turns -lpthread into the path
to the host libpthread.so file, resulting in build issues. LDLIBS does
not suffer from this problem and it seems that is already being used in
other Makefiles. This patch removes OTHERLIBS entirely from the build
system.

* Makeconf: Remove references to OTHERLIBS
* auth/Makefile: Replace OTHERLIBS with LDLIBS.
* boot/Makefile: Likewise.
* console/Makefile: Likewise.
* exec/Makefile: Likewise.
* ext2fs/Makefile: Likewise.
* fatfs/Makefile: Likewise.
* ftpfs/Makefile: Likewise.
* hostmux/Makefile: Likewise.
* isofs/Makefile: Likewise.
* libhurd-slab/Makefile: Likewise.
* nfs/Makefile: Likewise.
* nfsd/Makefile: Likewise.
* pfinet/Makefile: Likewise.
* proc/Makefile: Likewise.
* procfs/Makefile: Likewise.
* random/Makefile: Likewise.
* storeio/Makefile: Likewise.
* term/Makefile: Likewise.
* tmpfs/Makefile: Likewise.
* usermux/Makefile: Likewise.
</content>
</entry>
<entry>
<title>fix compiler warnings in hurd/isofs</title>
<updated>2015-12-29T21:36:42Z</updated>
<author>
<name>Flavio Cruz</name>
<email>flaviocruz@gmail.com</email>
</author>
<published>2015-12-29T21:32:38Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/hurd.git/commit/?id=8b87e8c44466f6852c9544c908edef8075757dda'/>
<id>urn:sha1:8b87e8c44466f6852c9544c908edef8075757dda</id>
<content type='text'>
* fatfs/dir.c: Use casts to avoid warnings.
* fatfs/fat.c: Use unsigned char in fat_{from,to}_epoch.
* fatfs/fat.h: Change arguments accordingly.
* fatfs/fat.c (fat_read_sblock): Use size_t instead.
* fatfs/inode.c (diskfs_cached_lookup_in_dirbuf): Remove err variable.
* fatfs/inode.c (diskfs_user_read_node): Don't cast constant.
* fatfs/inode.c (write_node): Check for errors in vm_map.
</content>
</entry>
<entry>
<title>Remove unused variables</title>
<updated>2015-11-06T09:39:53Z</updated>
<author>
<name>Justus Winter</name>
<email>4winter@informatik.uni-hamburg.de</email>
</author>
<published>2015-11-06T09:39:53Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/hurd.git/commit/?id=a9eb3e9765a21f9903705e2b9f46694529af8155'/>
<id>urn:sha1:a9eb3e9765a21f9903705e2b9f46694529af8155</id>
<content type='text'>
* console/pager.c (user_pager_init): Remove unused variables.
* ext2fs/pager.c (create_disk_pager): Likewise.
* fatfs/pager.c (create_fat_pager): Likewise.
* storeio/pager.c (init_dev_paging): Likewise.
</content>
</entry>
<entry>
<title>Fix race condition in ext2fs when remounting</title>
<updated>2015-09-06T19:40:20Z</updated>
<author>
<name>James Clarke</name>
<email>jrtc27@jrtc27.com</email>
</author>
<published>2015-08-27T16:22:11Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/hurd.git/commit/?id=7a2c17fcbb789997421725d726340301ef35d84c'/>
<id>urn:sha1:7a2c17fcbb789997421725d726340301ef35d84c</id>
<content type='text'>
On some systems, ext2fs.static would regularly hang at startup, as a
race condition meant it would process paging requests while remounting.
To fix this, libpager has been altered to allow inhibiting and resuming
its worker threads, and ext2fs uses this to inhibit paging while
remounting.

* console/pager.c (pager_requests): New variable.
(user_pager_init): Updated call to pager_start_workers to use new
pager_requests variable.
* daemons/runsystem.sh: Removed artificial delay working around the race
condition.
* ext2fs/ext2fs.c (diskfs_reload_global_state): Call new
inhibit_ext2_pager and resume_ext2_pager functions, and leave sblock as
non-NULL so it will be munmapped.
* ext2fs/ext2fs.h (inhibit_ext2_pager,resume_ext2_pager): New functions.
* ext2fs/pager.c (file_pager_requests): New variable.
(create_disk_pager): Updated call to pager_start_workers to use new
file_pager_requests variable.
(inhibit_ext2_pager,resume_ext2_pager): New functions.
* fatfs/fatfs.h (inhibit_fat_pager,resume_fat_pager): New functions.
* fatfs/pager.c (file_pager_requests): New variable.
(create_fat_pager): Updated call to pager_start_workers to use new
file_pager_requests variable.
(inhibit_fat_pager,resume_fat_pager): New functions.
* libdiskfs/disk-pager.c (diskfs_disk_pager_requests): New variable.
(diskfs_start_disk_pager): Updated call to pager_start_workers to use
new diskfs_disk_pager_requests variable.
* libdiskfs/diskfs-pager.h (diskfs_disk_pager_requests): New variable.
* libpager/demuxer.c (struct pager_requests): Renamed struct requests to
struct pager_requests. Replaced queue with queue_in and queue_out
pointers. Added inhibit_wakeup field.
(pager_demuxer): Updated to use new queue_in/queue_out pointers. Only
wake up workers if not inhibited.
(worker_func): Updated to use new queue_in/queue_out pointers. Final
worker thread to sleep notifies the inhibit_wakeup condition variable.
(pager_start_workers): Added out parameter for the requests instance.
Allocate heap space shared by both queues. Initialise new inhibit_wakeup
condition.
(pager_inhibit_workers,pager_resume_workers): New functions.
* libpager/pager.h (struct pager_requests): Public forward definition.
(pager_start_workers): Added out parameter for the requests instance.
(pager_inhibit_workers,pager_resume_workers): New functions.
* libpager/queue.h (queue_empty): New function.
* storeio/pager.c (pager_requests): New variable.
(init_dev_paging): Updated call to pager_start_workers to use new
pager_requests variable.
</content>
</entry>
<entry>
<title>fatfs: fix error handling</title>
<updated>2015-05-19T17:21:53Z</updated>
<author>
<name>Justus Winter</name>
<email>4winter@informatik.uni-hamburg.de</email>
</author>
<published>2015-05-19T16:52:58Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/hurd.git/commit/?id=3ffb892a5db5ad64b87261fa01478401806894cf'/>
<id>urn:sha1:3ffb892a5db5ad64b87261fa01478401806894cf</id>
<content type='text'>
* fatfs/dir.c (diskfs_dirrewrite_hard): Fix error handling.
</content>
</entry>
<entry>
<title>fatfs: port to libdiskfs' node cache</title>
<updated>2015-04-17T20:16:14Z</updated>
<author>
<name>Justus Winter</name>
<email>4winter@informatik.uni-hamburg.de</email>
</author>
<published>2015-04-16T14:12:05Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/hurd.git/commit/?id=b497f1613187c142ad6d0b76761a49811c37da80'/>
<id>urn:sha1:b497f1613187c142ad6d0b76761a49811c37da80</id>
<content type='text'>
* fatfs/inode.c: Drop all cache-related code.
(diskfs_user_make_node): New function.
(diskfs_cached_lookup_in_dirbuf): Reimplement using the `lookup_context'.
(read_node): Rename to diskfs_user_read_node and adopt accordingly.
(diskfs_try_dropping_softrefs): Rename to `diskfs_user_try_dropping_softrefs'.
(diskfs_node_reload): Pass context to `diskfs_user_read_node'.
(diskfs_alloc_node): Pass `dir' via context to `diskfs_user_read_node'.
* fatfs/fatfs.h (struct disknode): Drop fields `hnext', `hprevp'.
(struct lookup_context): New definition.
(ifind): Drop declaration.
* fatfs/dir.c (diskfs_lookup_hard): Adjust accordingly.
* fatfs/main.c (fetch_root): Likewise.
</content>
</entry>
<entry>
<title>libdiskfs: lock-less reference counting of nodes</title>
<updated>2015-04-17T12:06:46Z</updated>
<author>
<name>Justus Winter</name>
<email>4winter@informatik.uni-hamburg.de</email>
</author>
<published>2014-05-14T09:19:35Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/hurd.git/commit/?id=c16eed2cb64089bf7d958db0fe85352f4ceefb4d'/>
<id>urn:sha1:c16eed2cb64089bf7d958db0fe85352f4ceefb4d</id>
<content type='text'>
* libdiskfs/diskfs.h (struct node): Use refcounts_t for reference counting.
(diskfs_node_refcnt_lock): Remove.
(diskfs_node_norefs,diskfs_drop_node): Change comments accordingly.
* libdiskfs/init-init.c: Adjust accordingly.
* libdiskfs/node-drop.c: Likewise.
* libdiskfs/node-make.c: Likewise.
* libdiskfs/node-nput.c: Likewise.
* libdiskfs/node-nputl.c: Likewise.
* libdiskfs/node-nref.c: Likewise.
* libdiskfs/node-nrefl.c: Likewise.
* libdiskfs/node-nrele.c: Likewise.
* libdiskfs/node-nrelel.c: Likewise.
* ext2fs/inode.c: Likewise.
* fatfs/inode.c: Likewise.
* isofs/inode.c: Likewise.
* tmpfs/node.c: Likewise.
* doc/hurd.texi: Likewise.
</content>
</entry>
<entry>
<title>fatfs: use a seperate lock to protect nodehash</title>
<updated>2015-04-11T16:42:46Z</updated>
<author>
<name>Justus Winter</name>
<email>4winter@informatik.uni-hamburg.de</email>
</author>
<published>2014-05-13T13:14:53Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/hurd.git/commit/?id=e17366f09a6003dcc95633ce312aa3753f056e28'/>
<id>urn:sha1:e17366f09a6003dcc95633ce312aa3753f056e28</id>
<content type='text'>
Previously, fatfs used diskfs_node_refcnt_lock to serialize access to
the nodehash.

Use a separate lock to protect nodehash.  Adjust the reference
counting accordingly.  Every node in the nodehash carries a light
reference.  When we are asked to give up that light reference, we
reacquire our lock momentarily to check whether someone else
reacquired a reference through the nodehash.

* fatfs/inode.c (nodecache_lock): New lock.
(diskfs_cached_lookup): Use a separate lock to protect nodehash.
Adjust the reference counting accordingly.
(ifind): Likewise.
(diskfs_node_iterate): Likewise.
(diskfs_node_norefs): Move the code removing the node from nodehash...
(diskfs_try_dropping_softrefs): ... here, where we check whether
someone reacquired a reference, and if so hold on to our light
reference.
</content>
</entry>
<entry>
<title>misc: Fix typos in comments (found by codespell)</title>
<updated>2015-01-03T12:10:08Z</updated>
<author>
<name>Stefan Weil</name>
<email>sw@weilnetz.de</email>
</author>
<published>2015-01-03T09:16:09Z</published>
<link rel='alternate' type='text/html' href='https://darnassus.sceen.net/cgit/teythoon/hurd.git/commit/?id=bd1d3a48415cb6a7c24c45a899ce38b3ce34956d'/>
<id>urn:sha1:bd1d3a48415cb6a7c24c45a899ce38b3ce34956d</id>
<content type='text'>
Signed-off-by: Stefan Weil &lt;sw@weilnetz.de&gt;
</content>
</entry>
</feed>
