svn commit: r234523 - projects/nand/sys/fs/nandfs
Grzegorz Bernacki
gber at FreeBSD.org
Sat Apr 21 00:51:28 UTC 2012
Author: gber
Date: Sat Apr 21 00:51:28 2012
New Revision: 234523
URL: http://svn.freebsd.org/changeset/base/234523
Log:
nandfs: run syncer and cleaner as kernel threads instead of processes
Obtained from: Semihalf
Supported by: FreeBSD Foundation, Juniper Networks
Modified:
projects/nand/sys/fs/nandfs/nandfs.h
projects/nand/sys/fs/nandfs/nandfs_cleaner.c
projects/nand/sys/fs/nandfs/nandfs_vfsops.c
Modified: projects/nand/sys/fs/nandfs/nandfs.h
==============================================================================
--- projects/nand/sys/fs/nandfs/nandfs.h Sat Apr 21 00:32:56 2012 (r234522)
+++ projects/nand/sys/fs/nandfs/nandfs.h Sat Apr 21 00:51:28 2012 (r234523)
@@ -153,8 +153,8 @@ struct nandfs_device {
struct vnode *nd_devvp;
struct g_consumer *nd_gconsumer;
- struct proc *nd_syncer;
- struct proc *nd_cleaner;
+ struct thread *nd_syncer;
+ struct thread *nd_cleaner;
int nd_syncer_exit;
int nd_cleaner_exit;
Modified: projects/nand/sys/fs/nandfs/nandfs_cleaner.c
==============================================================================
--- projects/nand/sys/fs/nandfs/nandfs_cleaner.c Sat Apr 21 00:32:56 2012 (r234522)
+++ projects/nand/sys/fs/nandfs/nandfs_cleaner.c Sat Apr 21 00:51:28 2012 (r234523)
@@ -79,7 +79,7 @@ nandfs_start_cleaner(struct nandfs_devic
fsdev->nd_cleaner_exit = 0;
- error = kproc_create((void(*)(void *))nandfs_cleaner, fsdev,
+ error = kthread_add((void(*)(void *))nandfs_cleaner, fsdev, NULL,
&fsdev->nd_cleaner, 0, 0, "nandfs_cleaner");
if (error)
printf("nandfs: could not start cleaner: %d\n", error);
@@ -461,7 +461,7 @@ nandfs_cleaner(struct nandfs_device *fsd
}
DPRINTF(CLEAN, ("%s: exiting\n", __func__));
- kproc_exit(0);
+ kthread_exit();
}
static int
Modified: projects/nand/sys/fs/nandfs/nandfs_vfsops.c
==============================================================================
--- projects/nand/sys/fs/nandfs/nandfs_vfsops.c Sat Apr 21 00:32:56 2012 (r234522)
+++ projects/nand/sys/fs/nandfs/nandfs_vfsops.c Sat Apr 21 00:51:28 2012 (r234523)
@@ -1103,7 +1103,7 @@ nandfs_gc_finished(struct nandfs_device
}
static void
-nandfs_procbody(struct nandfsmount *nmp)
+nandfs_syncer(struct nandfsmount *nmp)
{
struct nandfs_device *nffsdev;
struct mount *mp;
@@ -1135,17 +1135,7 @@ nandfs_procbody(struct nandfsmount *nmp)
nffsdev->nd_syncer = NULL;
MPASS(nffsdev->nd_free_base == NULL);
- /*
- * A bit of explanation:
- * kproc_exit() reparents thread to init process so it can be
- * properly reaped, however when NANDFS was a root filesystem
- * vnode for init process is reclaimed and we dont want to let
- * init run again so it is safer to call just exit() in this case.
- */
- if ((mp->mnt_flag & MNT_ROOTFS) && mp->mnt_kern_flag & MNTK_UNMOUNT)
- exit1(curthread, 0);
- else
- kproc_exit(0);
+ kthread_exit();
}
static int
@@ -1159,7 +1149,7 @@ start_syncer(struct nandfsmount *nmp)
nmp->nm_nandfsdev->nd_syncer_exit = 0;
- error = kproc_create((void(*)(void *))nandfs_procbody, nmp,
+ error = kthread_add((void(*)(void *))nandfs_syncer, nmp, NULL,
&nmp->nm_nandfsdev->nd_syncer, 0, 0, "nandfs_syncer");
if (error)
More information about the svn-src-projects
mailing list