2004-09-12  Ulrich Drepper  <drepper@redhat.com>

	* nscd/pwdcache.c (cache_addpw): Sync also negative results to disk.
	* nscd/grpcache.c (cache_addgr): Likewise.
	* nscd/hstcache.c (cache_addhst): Likewise.
This commit is contained in:
Ulrich Drepper 2004-09-12 10:10:48 +00:00
parent 8c89236fd3
commit cf244b74a0
3 changed files with 27 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2004-09-12 Ulrich Drepper <drepper@redhat.com>
* nscd/pwdcache.c (cache_addpw): Sync also negative results to disk.
* nscd/grpcache.c (cache_addgr): Likewise.
* nscd/hstcache.c (cache_addhst): Likewise.
2004-09-11 Roland McGrath <roland@frob.com> 2004-09-11 Roland McGrath <roland@frob.com>
* sysdeps/mach/hurd/i386/init-first.c (init1) [! SHARED]: * sysdeps/mach/hurd/i386/init-first.c (init1) [! SHARED]:

View File

@ -128,6 +128,16 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req,
/* Copy the key data. */ /* Copy the key data. */
memcpy (dataset->strdata, key, req->key_len); memcpy (dataset->strdata, key, req->key_len);
/* If necessary, we also propagate the data to disk. */
if (db->persistent)
{
// XXX async OK?
uintptr_t pval = (uintptr_t) dataset & ~pagesize_m1;
msync ((void *) pval,
((uintptr_t) dataset & pagesize_m1)
+ sizeof (struct dataset) + req->key_len, MS_ASYNC);
}
/* Now get the lock to safely insert the records. */ /* Now get the lock to safely insert the records. */
pthread_rwlock_rdlock (&db->lock); pthread_rwlock_rdlock (&db->lock);

View File

@ -135,6 +135,16 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
/* Copy the key data. */ /* Copy the key data. */
char *key_copy = memcpy (dataset->strdata, key, req->key_len); char *key_copy = memcpy (dataset->strdata, key, req->key_len);
/* If necessary, we also propagate the data to disk. */
if (db->persistent)
{
// XXX async OK?
uintptr_t pval = (uintptr_t) dataset & ~pagesize_m1;
msync ((void *) pval,
((uintptr_t) dataset & pagesize_m1)
+ sizeof (struct dataset) + req->key_len, MS_ASYNC);
}
/* Now get the lock to safely insert the records. */ /* Now get the lock to safely insert the records. */
pthread_rwlock_rdlock (&db->lock); pthread_rwlock_rdlock (&db->lock);
@ -245,7 +255,7 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req,
&& memcmp (&dataset->resp, dh->data, && memcmp (&dataset->resp, dh->data,
dh->allocsize - offsetof (struct dataset, resp)) == 0) dh->allocsize - offsetof (struct dataset, resp)) == 0)
{ {
/* The sata has not changed. We will just bump the /* The data has not changed. We will just bump the
timeout value. Note that the new record has been timeout value. Note that the new record has been
allocated on the stack and need not be freed. */ allocated on the stack and need not be freed. */
dh->timeout = dataset->head.timeout; dh->timeout = dataset->head.timeout;