Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 8 Jun 2014 10:55:06 +0000 (UTC)
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r267226 - in head/sys: conf kern modules/ufs ufs/ffs
Message-ID:  <201406081055.s58At6gC002430@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: kib
Date: Sun Jun  8 10:55:06 2014
New Revision: 267226
URL: http://svnweb.freebsd.org/changeset/base/267226

Log:
  Initialize the pbuf counter for directio using SYSINIT, instead of
  using a direct hook called from kern_vfs_bio_buffer_alloc().
  Mark ffs_rawread.c as requiring both ffs and directio options to be
  compiled into the kernel.  Add ffs_rawread.c to the list of ufs.ko
  module' sources.
  
  In addition to stopping breaking the layering violation, it also
  allows to link kernel when FFS is configured as module and DIRECTIO is
  enabled.
  
  One consequence of the change is that ffs_rawread.o is always linked
  into the module regardless of the DIRECTIO option.  This is similar to
  the option QUOTA and ufs_quota.c.
  
  Sponsored by:	The FreeBSD Foundation
  MFC after:	1 week

Modified:
  head/sys/conf/files
  head/sys/kern/vfs_bio.c
  head/sys/modules/ufs/Makefile
  head/sys/ufs/ffs/ffs_rawread.c

Modified: head/sys/conf/files
==============================================================================
--- head/sys/conf/files	Sun Jun  8 10:22:03 2014	(r267225)
+++ head/sys/conf/files	Sun Jun  8 10:55:06 2014	(r267226)
@@ -3883,7 +3883,7 @@ ufs/ffs/ffs_subr.c		optional ffs
 ufs/ffs/ffs_tables.c		optional ffs
 ufs/ffs/ffs_vfsops.c		optional ffs
 ufs/ffs/ffs_vnops.c		optional ffs
-ufs/ffs/ffs_rawread.c		optional directio
+ufs/ffs/ffs_rawread.c		optional ffs directio
 ufs/ffs/ffs_suspend.c		optional ffs
 ufs/ufs/ufs_acl.c		optional ffs
 ufs/ufs/ufs_bmap.c		optional ffs

Modified: head/sys/kern/vfs_bio.c
==============================================================================
--- head/sys/kern/vfs_bio.c	Sun Jun  8 10:22:03 2014	(r267225)
+++ head/sys/kern/vfs_bio.c	Sun Jun  8 10:55:06 2014	(r267226)
@@ -77,7 +77,6 @@ __FBSDID("$FreeBSD$");
 #include <vm/vm_extern.h>
 #include <vm/vm_map.h>
 #include "opt_compat.h"
-#include "opt_directio.h"
 #include "opt_swap.h"
 
 static MALLOC_DEFINE(M_BIOBUF, "biobuf", "BIO buffer");
@@ -382,10 +381,6 @@ sysctl_bufspace(SYSCTL_HANDLER_ARGS)
 }
 #endif
 
-#ifdef DIRECTIO
-extern void ffs_rawread_setup(void);
-#endif /* DIRECTIO */
-
 /*
  *	bqlock:
  *
@@ -770,9 +765,6 @@ kern_vfs_bio_buffer_alloc(caddr_t v, lon
 	if (nswbuf < NSWBUF_MIN)
 		nswbuf = NSWBUF_MIN;
 #endif
-#ifdef DIRECTIO
-	ffs_rawread_setup();
-#endif
 
 	/*
 	 * Reserve space for the buffer cache buffers

Modified: head/sys/modules/ufs/Makefile
==============================================================================
--- head/sys/modules/ufs/Makefile	Sun Jun  8 10:22:03 2014	(r267225)
+++ head/sys/modules/ufs/Makefile	Sun Jun  8 10:55:06 2014	(r267226)
@@ -6,9 +6,9 @@ KMOD=	ufs
 SRCS=	opt_ddb.h opt_directio.h opt_ffs.h opt_quota.h opt_suiddir.h opt_ufs.h \
 	vnode_if.h ufs_acl.c ufs_bmap.c ufs_dirhash.c ufs_extattr.c \
 	ufs_gjournal.c ufs_inode.c ufs_lookup.c ufs_quota.c ufs_vfsops.c \
-	ufs_vnops.c ffs_alloc.c ffs_balloc.c ffs_inode.c ffs_snapshot.c \
-	ffs_softdep.c ffs_subr.c ffs_suspend.c ffs_tables.c ffs_vfsops.c \
-	ffs_vnops.c
+	ufs_vnops.c ffs_alloc.c ffs_balloc.c ffs_inode.c ffs_rawread.c \
+	ffs_snapshot.c ffs_softdep.c ffs_subr.c ffs_suspend.c ffs_tables.c \
+	ffs_vfsops.c ffs_vnops.c
 
 .if !defined(KERNBUILDDIR)
 CFLAGS+= -DSOFTUPDATES -DUFS_DIRHASH

Modified: head/sys/ufs/ffs/ffs_rawread.c
==============================================================================
--- head/sys/ufs/ffs/ffs_rawread.c	Sun Jun  8 10:22:03 2014	(r267225)
+++ head/sys/ufs/ffs/ffs_rawread.c	Sun Jun  8 10:55:06 2014	(r267226)
@@ -71,8 +71,6 @@ static int ffs_rawread_sync(struct vnode
 
 int ffs_rawread(struct vnode *vp, struct uio *uio, int *workdone);
 
-void ffs_rawread_setup(void);
-
 SYSCTL_DECL(_vfs_ffs);
 
 static int ffsrawbufcnt = 4;
@@ -87,13 +85,13 @@ static int rawreadahead = 1;
 SYSCTL_INT(_vfs_ffs, OID_AUTO, rawreadahead, CTLFLAG_RW, &rawreadahead, 0,
 	   "Flag to enable readahead for long raw reads");
 
-
-void
-ffs_rawread_setup(void)
+static void
+ffs_rawread_setup(void *arg __unused)
 {
+
 	ffsrawbufcnt = (nswbuf > 100 ) ? (nswbuf - (nswbuf >> 4)) : nswbuf - 8;
 }
-
+SYSINIT(ffs_raw, SI_SUB_VM_CONF, SI_ORDER_ANY, ffs_rawread_setup, NULL);
 
 static int
 ffs_rawread_sync(struct vnode *vp)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201406081055.s58At6gC002430>