From owner-svn-src-projects@FreeBSD.ORG Sat Apr 21 00:51:28 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id AEB4F106566B; Sat, 21 Apr 2012 00:51:28 +0000 (UTC) (envelope-from gber@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8EFFA8FC0C; Sat, 21 Apr 2012 00:51:28 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q3L0pSh9063581; Sat, 21 Apr 2012 00:51:28 GMT (envelope-from gber@svn.freebsd.org) Received: (from gber@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q3L0pSPE063577; Sat, 21 Apr 2012 00:51:28 GMT (envelope-from gber@svn.freebsd.org) Message-Id: <201204210051.q3L0pSPE063577@svn.freebsd.org> From: Grzegorz Bernacki Date: Sat, 21 Apr 2012 00:51:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r234523 - projects/nand/sys/fs/nandfs X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 21 Apr 2012 00:51:28 -0000 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)