Date: Fri, 20 Apr 2007 06:07:21 GMT From: Kip Macy <kmacy@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 118450 for review Message-ID: <200704200607.l3K67LKa011495@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=118450 Change 118450 by kmacy@kmacy_vt-x:opentoe_init on 2007/04/20 06:07:14 IFC Affected files ... .. //depot/projects/opentoe/UPDATING#4 integrate .. //depot/projects/opentoe/etc/mtree/BSD.include.dist#2 integrate .. //depot/projects/opentoe/lib/libc/stdio/fputs.3#2 integrate .. //depot/projects/opentoe/libexec/ftpd/ftpcmd.y#2 integrate .. //depot/projects/opentoe/libexec/ftpd/ftpd.8#2 integrate .. //depot/projects/opentoe/libexec/ftpd/ftpd.c#2 integrate .. //depot/projects/opentoe/share/man/man7/hier.7#4 integrate .. //depot/projects/opentoe/sys/bsm/audit.h#2 integrate .. //depot/projects/opentoe/sys/bsm/audit_internal.h#2 integrate .. //depot/projects/opentoe/sys/bsm/audit_kevents.h#2 integrate .. //depot/projects/opentoe/sys/bsm/audit_record.h#2 integrate .. //depot/projects/opentoe/sys/cam/cam_periph.c#3 integrate .. //depot/projects/opentoe/sys/cam/cam_periph.h#3 integrate .. //depot/projects/opentoe/sys/cam/cam_sim.c#3 integrate .. //depot/projects/opentoe/sys/cam/cam_sim.h#3 integrate .. //depot/projects/opentoe/sys/cam/cam_xpt.c#3 integrate .. //depot/projects/opentoe/sys/cam/scsi/scsi_da.c#3 integrate .. //depot/projects/opentoe/sys/cam/scsi/scsi_pt.c#3 integrate .. //depot/projects/opentoe/sys/cam/scsi/scsi_sa.c#3 integrate .. //depot/projects/opentoe/sys/compat/opensolaris/kern/opensolaris_vfs.c#2 integrate .. //depot/projects/opentoe/sys/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c#2 integrate .. //depot/projects/opentoe/sys/dev/aic7xxx/aic79xx.c#3 integrate .. //depot/projects/opentoe/sys/dev/aic7xxx/aic79xx.h#3 integrate .. //depot/projects/opentoe/sys/dev/aic7xxx/aic7xxx.c#3 integrate .. //depot/projects/opentoe/sys/dev/aic7xxx/aic7xxx.h#3 integrate .. //depot/projects/opentoe/sys/dev/aic7xxx/aic7xxx_inline.h#2 integrate .. //depot/projects/opentoe/sys/dev/ath/if_ath.c#2 integrate .. //depot/projects/opentoe/sys/dev/cxgb/cxgb_sge.c#7 integrate .. //depot/projects/opentoe/sys/dev/cxgb/sys/uipc_mvec.c#2 integrate .. //depot/projects/opentoe/sys/dev/hwpmc/hwpmc_logging.c#2 integrate .. //depot/projects/opentoe/sys/dev/hwpmc/hwpmc_mod.c#2 integrate .. //depot/projects/opentoe/sys/dev/hwpmc/hwpmc_piv.c#2 integrate .. //depot/projects/opentoe/sys/dev/ral/rt2560.c#2 integrate .. //depot/projects/opentoe/sys/dev/sound/pci/envy24.c#2 integrate .. //depot/projects/opentoe/sys/dev/sound/pci/envy24ht.c#2 integrate .. //depot/projects/opentoe/sys/dev/sound/pcm/ac97.c#2 integrate .. //depot/projects/opentoe/sys/dev/sound/pcm/ac97.h#2 integrate .. //depot/projects/opentoe/sys/dev/sound/pcm/ac97_patch.c#2 integrate .. //depot/projects/opentoe/sys/dev/sound/pcm/ac97_patch.h#2 integrate .. //depot/projects/opentoe/sys/dev/usb/if_ural.c#3 integrate .. //depot/projects/opentoe/sys/dev/wi/if_wi.c#2 integrate .. //depot/projects/opentoe/sys/fs/devfs/devfs_vnops.c#4 integrate .. //depot/projects/opentoe/sys/i386/i386/bios.c#2 integrate .. //depot/projects/opentoe/sys/kern/kern_intr.c#2 integrate .. //depot/projects/opentoe/sys/kern/sched_ule.c#3 integrate .. //depot/projects/opentoe/sys/kern/subr_witness.c#5 integrate .. //depot/projects/opentoe/sys/kern/uipc_syscalls.c#4 integrate .. //depot/projects/opentoe/sys/netinet/sctp_indata.c#6 integrate .. //depot/projects/opentoe/sys/netinet/sctp_input.c#6 integrate .. //depot/projects/opentoe/sys/netinet/sctp_lock_bsd.h#2 integrate .. //depot/projects/opentoe/sys/netinet/sctp_output.c#6 integrate .. //depot/projects/opentoe/sys/netinet/sctp_pcb.c#6 integrate .. //depot/projects/opentoe/sys/netinet/sctp_structs.h#5 integrate .. //depot/projects/opentoe/sys/netinet/sctp_uio.h#5 integrate .. //depot/projects/opentoe/sys/netinet/sctp_usrreq.c#6 integrate .. //depot/projects/opentoe/sys/netinet/sctp_var.h#4 integrate .. //depot/projects/opentoe/sys/netinet/sctputil.c#6 integrate .. //depot/projects/opentoe/sys/netinet/sctputil.h#4 integrate .. //depot/projects/opentoe/sys/pci/intpm.c#2 integrate .. //depot/projects/opentoe/sys/powerpc/powerpc/nexus.c#2 integrate .. //depot/projects/opentoe/sys/sys/interrupt.h#2 integrate .. //depot/projects/opentoe/sys/sys/socket.h#2 integrate .. //depot/projects/opentoe/sys/vm/vm_contig.c#2 integrate .. //depot/projects/opentoe/sys/vm/vm_param.h#2 integrate .. //depot/projects/opentoe/tools/regression/sockets/sendfile/Makefile#2 integrate .. //depot/projects/opentoe/tools/regression/sockets/sendfile/sendfile.c#2 integrate .. //depot/projects/opentoe/usr.bin/lastcomm/lastcomm.1#3 integrate .. //depot/projects/opentoe/usr.bin/lastcomm/lastcomm.c#3 integrate .. //depot/projects/opentoe/usr.bin/tar/test/test-basic.sh#4 integrate .. //depot/projects/opentoe/usr.bin/tar/util.c#2 integrate Differences ... ==== //depot/projects/opentoe/UPDATING#4 (text+ko) ==== @@ -21,6 +21,17 @@ developers choose to disable these features on build machines to maximize performance. +20070418: + A new acct(5) format is imminent. If you want to maintain access + to your accounting files, use the new lastcomm(1) -X functionality to + export them into text format, and keep around a copy of the lastcomm + binary. An updated lastcomm(1) program will allow you to import + the text files into the new acct(5) format. The change will also + invalidate the condensed summary files /var/account/savacct and + /var/account/usracct. If your process accounting system relies + on them, you will need to save their contents in a readable format + before the switch. + 20070417: The new trunk(4) driver has been renamed to lagg(4) as it better reflects its purpose. ifconfig will need to be recompiled. @@ -767,4 +778,4 @@ Contact Warner Losh if you have any questions about your use of this document. -$FreeBSD: src/UPDATING,v 1.486 2007/04/17 00:41:59 thompsa Exp $ +$FreeBSD: src/UPDATING,v 1.487 2007/04/18 17:34:59 dds Exp $ ==== //depot/projects/opentoe/etc/mtree/BSD.include.dist#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/etc/mtree/BSD.include.dist,v 1.111 2007/02/27 04:01:57 mjacob Exp $ +# $FreeBSD: src/etc/mtree/BSD.include.dist,v 1.112 2007/04/18 10:16:42 trhodes Exp $ # # Please see the file src/etc/mtree/README before making changes to this file. # @@ -209,8 +209,6 @@ .. pccard .. - posix4 - .. protocols .. readline ==== //depot/projects/opentoe/lib/libc/stdio/fputs.3#2 (text+ko) ==== @@ -30,7 +30,7 @@ .\" SUCH DAMAGE. .\" .\" @(#)fputs.3 8.1 (Berkeley) 6/4/93 -.\" $FreeBSD: src/lib/libc/stdio/fputs.3,v 1.12 2007/01/09 00:28:06 imp Exp $ +.\" $FreeBSD: src/lib/libc/stdio/fputs.3,v 1.13 2007/04/19 09:38:31 phk Exp $ .\" .Dd June 4, 1993 .Dt FPUTS 3 @@ -66,12 +66,9 @@ to the stream .Dv stdout . .Sh RETURN VALUES -The +The functions .Fn fputs -function -returns 0 on success and -.Dv EOF -on error; +and .Fn puts returns a nonnegative integer on success and .Dv EOF ==== //depot/projects/opentoe/libexec/ftpd/ftpcmd.y#2 (text+ko) ==== @@ -47,7 +47,7 @@ #endif /* not lint */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/libexec/ftpd/ftpcmd.y,v 1.65 2006/06/05 15:50:34 yar Exp $"); +__FBSDID("$FreeBSD: src/libexec/ftpd/ftpcmd.y,v 1.66 2007/04/18 22:43:39 yar Exp $"); #include <sys/param.h> #include <sys/socket.h> @@ -95,6 +95,7 @@ extern int usedefault; extern char tmpline[]; extern int readonly; +extern int assumeutf8; extern int noepsv; extern int noretr; extern int noguestretr; @@ -135,7 +136,7 @@ ABOR DELE CWD LIST NLST SITE STAT HELP NOOP MKD RMD PWD CDUP STOU SMNT SYST SIZE MDTM - LPRT LPSV EPRT EPSV + LPRT LPSV EPRT EPSV FEAT UMASK IDLE CHMOD MDFIVE @@ -687,6 +688,25 @@ if ($4 != NULL) free($4); } + | FEAT CRLF + { + lreply(211, "Extensions supported:"); +#if 0 + /* XXX these two keywords are non-standard */ + printf(" EPRT\r\n"); + if (!noepsv) + printf(" EPSV\r\n"); +#endif + printf(" MDTM\r\n"); + printf(" REST STREAM\r\n"); + printf(" SIZE\r\n"); + if (assumeutf8) { + /* TVFS requires UTF8, see RFC 3659 */ + printf(" TVFS\r\n"); + printf(" UTF8\r\n"); + } + reply(211, "End."); + } | SYST check_login CRLF { if ($2) { @@ -1112,6 +1132,7 @@ { "NLST", NLST, OSTR, 1, "[ <sp> path-name ]" }, { "SITE", SITE, SITECMD, 1, "site-cmd [ <sp> arguments ]" }, { "SYST", SYST, ARGS, 1, "(get type of operating system)" }, + { "FEAT", FEAT, ARGS, 1, "(get extended features)" }, { "STAT", STAT, OSTR, 1, "[ <sp> path-name ]" }, { "HELP", HELP, OSTR, 1, "[ <sp> <string> ]" }, { "NOOP", NOOP, ARGS, 1, "" }, ==== //depot/projects/opentoe/libexec/ftpd/ftpd.8#2 (text+ko) ==== @@ -30,7 +30,7 @@ .\" SUCH DAMAGE. .\" .\" @(#)ftpd.8 8.2 (Berkeley) 4/19/94 -.\" $FreeBSD: src/libexec/ftpd/ftpd.8,v 1.71 2006/01/29 13:10:38 yar Exp $ +.\" $FreeBSD: src/libexec/ftpd/ftpd.8,v 1.72 2007/04/18 22:43:39 yar Exp $ .\" .Dd January 21, 2006 .Dt FTPD 8 @@ -40,7 +40,7 @@ .Nd Internet File Transfer Protocol server .Sh SYNOPSIS .Nm -.Op Fl 46ADdEhMmOoRrSUvW +.Op Fl 468ADdEhMmOoRrSUvW .Op Fl l Op Fl l .Op Fl a Ar address .Op Fl P Ar port @@ -78,6 +78,21 @@ is specified, accept connections via .Dv AF_INET6 socket. +.It Fl 8 +The server is running in transparent UTF-8 mode. +That is, it just encourages RFC\ 2640 compliant clients to send +paths encoded in UTF-8 in their commands. +In particular, the names of files uploaded by such clients will +have UTF-8 encoding. +The clients will also assume that server replies and existing file +names have UTF-8 encoding, too. +The names of files preloaded to the server should meet this expectation +for the clients to present the correct file names to their users. +Own messages of +.Nm +are always encoded in ASCII, which in fact is a subset of UTF-8. +.Pp +Note that this option does not make the server do any encoding conversion. .It Fl A Allow only anonymous ftp access. .It Fl a @@ -250,6 +265,7 @@ .It DELE Ta "delete a file [RW]" .It EPRT Ta "specify data connection port, multiprotocol" .It EPSV Ta "prepare for server-to-server transfer, multiprotocol" +.It FEAT Ta "give information on extended features of server" .It HELP Ta "give help information" .It LIST Ta "give list files in a directory" Pq Dq Li "ls -lgA" .It LPRT Ta "specify data connection port, multiprotocol" ==== //depot/projects/opentoe/libexec/ftpd/ftpd.c#2 (text+ko) ==== @@ -46,7 +46,7 @@ #endif /* not lint */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/libexec/ftpd/ftpd.c,v 1.211 2007/02/09 17:18:39 yar Exp $"); +__FBSDID("$FreeBSD: src/libexec/ftpd/ftpd.c,v 1.212 2007/04/18 22:43:39 yar Exp $"); /* * FTP server. @@ -128,6 +128,7 @@ int restricted_data_ports = 1; int paranoid = 1; /* be extra careful about security */ int anon_only = 0; /* Only anonymous ftp allowed */ +int assumeutf8 = 0; /* Assume that server file names are in UTF-8 */ int guest; int dochroot; char *chrootdir; @@ -308,7 +309,7 @@ openlog("ftpd", LOG_PID | LOG_NDELAY, LOG_FTP); while ((ch = getopt(argc, argv, - "46a:AdDEhlmMoOp:P:rRSt:T:u:UvW")) != -1) { + "468a:AdDEhlmMoOp:P:rRSt:T:u:UvW")) != -1) { switch (ch) { case '4': family = (family == AF_INET6) ? AF_UNSPEC : AF_INET; @@ -318,6 +319,10 @@ family = (family == AF_INET) ? AF_UNSPEC : AF_INET6; break; + case '8': + assumeutf8 = 1; + break; + case 'a': bindname = optarg; break; ==== //depot/projects/opentoe/share/man/man7/hier.7#4 (text+ko) ==== @@ -30,9 +30,9 @@ .\" SUCH DAMAGE. .\" .\" @(#)hier.7 8.1 (Berkeley) 6/5/93 -.\" $FreeBSD: src/share/man/man7/hier.7,v 1.125 2007/04/04 00:14:36 chinsan Exp $ +.\" $FreeBSD: src/share/man/man7/hier.7,v 1.126 2007/04/18 10:16:43 trhodes Exp $ .\" -.Dd April 3, 2007 +.Dd April 18, 2007 .Dt HIER 7 .Os .Sh NAME @@ -349,10 +349,6 @@ OpenSSL (Cryptography/SSL toolkit) headers .It Pa pccard/ PC-CARD controllers -.It Pa posix4/ -POSIX real-time extensions includes; -see -.Xr p1003_1b 9 .It Pa protocols/ C include files for Berkeley service protocols .It Pa readline/ ==== //depot/projects/opentoe/sys/bsm/audit.h#2 (text) ==== @@ -30,8 +30,8 @@ * * @APPLE_BSD_LICENSE_HEADER_END@ * - * $P4: //depot/projects/trustedbsd/audit3/sys/bsm/audit.h#34 $ - * $FreeBSD: src/sys/bsm/audit.h,v 1.6 2006/09/21 07:27:02 rwatson Exp $ + * P4: //depot/projects/trustedbsd/audit3/sys/bsm/audit.h#36 + * $FreeBSD: src/sys/bsm/audit.h,v 1.8 2007/04/17 12:27:08 rwatson Exp $ */ #ifndef _BSM_AUDIT_H ==== //depot/projects/opentoe/sys/bsm/audit_internal.h#2 (text) ==== @@ -34,8 +34,8 @@ * * @APPLE_BSD_LICENSE_HEADER_END@ * - * $P4: //depot/projects/trustedbsd/audit3/sys/bsm/audit_internal.h#14 $ - * $FreeBSD: src/sys/bsm/audit_internal.h,v 1.5 2006/09/21 07:27:02 rwatson Exp $ + * P4: //depot/projects/trustedbsd/audit3/sys/bsm/audit_internal.h#16 + * $FreeBSD: src/sys/bsm/audit_internal.h,v 1.7 2007/04/17 12:27:08 rwatson Exp $ */ #ifndef _AUDIT_INTERNAL_H ==== //depot/projects/opentoe/sys/bsm/audit_kevents.h#2 (text) ==== @@ -30,8 +30,8 @@ * * @APPLE_BSD_LICENSE_HEADER_END@ * - * $P4: //depot/projects/trustedbsd/audit3/sys/bsm/audit_kevents.h#29 $ - * $FreeBSD: src/sys/bsm/audit_kevents.h,v 1.9 2006/09/25 12:22:07 rwatson Exp $ + * P4: //depot/projects/trustedbsd/audit3/sys/bsm/audit_kevents.h#32 + * $FreeBSD: src/sys/bsm/audit_kevents.h,v 1.11 2007/04/17 12:27:08 rwatson Exp $ */ #ifndef _BSM_AUDIT_KEVENTS_H_ @@ -475,6 +475,28 @@ #define AUE_READDIR 43118 /* Linux. */ #define AUE_IOPL 43119 /* Linux. */ #define AUE_VM86 43120 /* Linux. */ +#define AUE_MAC_GET_PROC 43121 /* FreeBSD. */ +#define AUE_MAC_SET_PROC 43122 /* FreeBSD. */ +#define AUE_MAC_GET_FD 43123 /* FreeBSD. */ +#define AUE_MAC_GET_FILE 43124 /* FreeBSD. */ +#define AUE_MAC_SET_FD 43125 /* FreeBSD. */ +#define AUE_MAC_SET_FILE 43126 /* FreeBSD. */ +#define AUE_MAC_SYSCALL 43127 /* FreeBSD. */ +#define AUE_MAC_GET_PID 43128 /* FreeBSD. */ +#define AUE_MAC_GET_LINK 43129 /* FreeBSD. */ +#define AUE_MAC_SET_LINK 43130 /* FreeBSD. */ +#define AUE_MAC_EXECVE 43131 /* FreeBSD. */ +#define AUE_GETPATH_FROMFD 43132 /* FreeBSD. */ +#define AUE_GETPATH_FROMADDR 43133 /* FreeBSD. */ +#define AUE_MQ_OPEN 43134 /* FreeBSD. */ +#define AUE_MQ_SETATTR 43135 /* FreeBSD. */ +#define AUE_MQ_TIMEDRECEIVE 43136 /* FreeBSD. */ +#define AUE_MQ_TIMEDSEND 43137 /* FreeBSD. */ +#define AUE_MQ_NOTIFY 43138 /* FreeBSD. */ +#define AUE_MQ_UNLINK 43139 /* FreeBSD. */ +#define AUE_LISTEN 43140 /* FreeBSD/Darwin/Linux. */ +#define AUE_MLOCKALL 43141 /* FreeBSD. */ +#define AUE_MUNLOCKALL 43142 /* FreeBSD. */ /* * Darwin BSM uses a number of AUE_O_* definitions, which are aliased to the @@ -572,16 +594,13 @@ #define AUE_GETSOCKOPT AUE_NULL #define AUE_GTSOCKOPT AUE_GETSOCKOPT /* XXX: Typo in Darwin. */ #define AUE_ISSETUGID AUE_NULL -#define AUE_LISTEN AUE_NULL #define AUE_LSTATV AUE_NULL #define AUE_MADVISE AUE_NULL #define AUE_MINCORE AUE_NULL #define AUE_MKCOMPLEX AUE_NULL -#define AUE_MLOCKALL AUE_NULL #define AUE_MODWATCH AUE_NULL #define AUE_MSGCL AUE_NULL #define AUE_MSYNC AUE_NULL -#define AUE_MUNLOCKALL AUE_NULL #define AUE_PREAD AUE_NULL #define AUE_PWRITE AUE_NULL #define AUE_PREADV AUE_NULL ==== //depot/projects/opentoe/sys/bsm/audit_record.h#2 (text) ==== @@ -30,8 +30,8 @@ * * @APPLE_BSD_LICENSE_HEADER_END@ * - * $P4: //depot/projects/trustedbsd/audit3/sys/bsm/audit_record.h#21 $ - * $FreeBSD: src/sys/bsm/audit_record.h,v 1.6 2006/09/21 07:27:02 rwatson Exp $ + * P4: //depot/projects/trustedbsd/audit3/sys/bsm/audit_record.h#24 + * $FreeBSD: src/sys/bsm/audit_record.h,v 1.9 2007/04/17 12:27:08 rwatson Exp $ */ #ifndef _BSM_AUDIT_RECORD_H_ @@ -86,6 +86,7 @@ /* XXXRW: Additional X11 tokens not defined? */ #define AUT_CMD 0x51 #define AUT_EXIT 0x52 +#define AUT_ZONENAME 0x60 /* XXXRW: OpenBSM AUT_HOST 0x70? */ #define AUT_ARG64 0x71 #define AUT_RETURN64 0x72 @@ -247,6 +248,8 @@ token_t *au_to_header32_tm(int rec_size, au_event_t e_type, au_emod_t e_mod, struct timeval tm); +token_t *au_to_header64_tm(int rec_size, au_event_t e_type, au_emod_t e_mod, + struct timeval tm); #if !defined(KERNEL) && !defined(_KERNEL) token_t *au_to_header(int rec_size, au_event_t e_type, au_emod_t e_mod); token_t *au_to_header32(int rec_size, au_event_t e_type, au_emod_t e_mod); @@ -329,6 +332,7 @@ token_t *au_to_text(char *text); token_t *au_to_kevent(struct kevent *kev); token_t *au_to_trailer(int rec_size); +token_t *au_to_zonename(char *zonename); __END_DECLS ==== //depot/projects/opentoe/sys/cam/cam_periph.c#3 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/cam/cam_periph.c,v 1.66 2007/04/16 19:42:23 scottl Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/cam_periph.c,v 1.68 2007/04/19 23:34:51 scottl Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -131,7 +131,6 @@ lun_id_t lun_id; cam_status status; u_int init_level; - int s; init_level = 0; /* @@ -200,7 +199,6 @@ if (status != CAM_REQ_CMP) goto failure; - s = splsoftcam(); cur_periph = TAILQ_FIRST(&(*p_drv)->units); while (cur_periph != NULL && cur_periph->unit_number < periph->unit_number) @@ -213,8 +211,6 @@ (*p_drv)->generation++; } - splx(s); - init_level++; status = periph_ctor(periph, arg); @@ -228,9 +224,7 @@ /* Initialized successfully */ break; case 3: - s = splsoftcam(); TAILQ_REMOVE(&(*p_drv)->units, periph, unit_links); - splx(s); xpt_remove_periph(periph); /* FALLTHROUGH */ case 2: @@ -258,24 +252,25 @@ { struct periph_driver **p_drv; struct cam_periph *periph; - int s; + xpt_lock_buses(); for (p_drv = periph_drivers; *p_drv != NULL; p_drv++) { if (name != NULL && (strcmp((*p_drv)->driver_name, name) != 0)) continue; - s = splsoftcam(); TAILQ_FOREACH(periph, &(*p_drv)->units, unit_links) { if (xpt_path_comp(periph->path, path) == 0) { - splx(s); + xpt_unlock_buses(); return(periph); } } - splx(s); - if (name != NULL) + if (name != NULL) { + xpt_unlock_buses(); return(NULL); + } } + xpt_unlock_buses(); return(NULL); } @@ -372,11 +367,9 @@ { struct cam_periph *periph; char *periph_name; - int s; int i, val, dunit, r; const char *dname, *strval; - s = splsoftcam(); periph_name = p_drv->driver_name; for (;;newunit++) { @@ -422,7 +415,6 @@ if (r != 0) break; } - splx(s); return (newunit); } @@ -480,8 +472,7 @@ /* * We only call this routine the first time a peripheral is - * invalidated. The oninvalidate() routine is always called at - * splsoftcam(). + * invalidated. */ if (((periph->flags & CAM_PERIPH_INVALID) == 0) && (periph->periph_oninval != NULL)) @@ -550,26 +541,6 @@ } /* - * Wait interruptibly for an exclusive lock. - */ -void -cam_periph_lock(struct cam_periph *periph) -{ - - mtx_lock(periph->sim->mtx); -} - -/* - * Unlock and wake up any waiters. - */ -void -cam_periph_unlock(struct cam_periph *periph) -{ - - mtx_unlock(periph->sim->mtx); -} - -/* * Map user virtual pointers into kernel virtual address space, so we can * access the memory. This won't work on physical pointers, for now it's * up to the caller to check for that. (XXX KDM -- should we do that here @@ -808,9 +779,7 @@ { struct mtx *mtx; struct cam_sim *sim; - int s; - s = splsoftcam(); sim = xpt_path_sim(ccb->ccb_h.path); if (sim->mtx == &Giant) mtx = NULL; @@ -819,8 +788,6 @@ if ((ccb->ccb_h.pinfo.index != CAM_UNQUEUED_INDEX) || ((ccb->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_INPROG)) msleep(&ccb->ccb_h.cbfcnp, mtx, PRIBIO, "cbwait", 0); - - splx(s); } int @@ -1225,11 +1192,8 @@ { struct timeval delta; struct timeval duration_tv; - int s; - s = splclock(); microtime(&delta); - splx(s); timevalsub(&delta, event_time); duration_tv.tv_sec = duration_ms / 1000; duration_tv.tv_usec = (duration_ms % 1000) * 1000; ==== //depot/projects/opentoe/sys/cam/cam_periph.h#3 (text+ko) ==== @@ -25,13 +25,14 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/cam/cam_periph.h,v 1.17 2007/04/15 08:49:09 scottl Exp $ + * $FreeBSD: src/sys/cam/cam_periph.h,v 1.18 2007/04/19 22:46:26 scottl Exp $ */ #ifndef _CAM_CAM_PERIPH_H #define _CAM_CAM_PERIPH_H 1 #include <sys/queue.h> +#include <cam/cam_sim.h> #ifdef _KERNEL @@ -138,8 +139,6 @@ char *name, cam_periph_type type, struct cam_path *, ac_callback_t *, ac_code, void *arg); struct cam_periph *cam_periph_find(struct cam_path *path, char *name); -void cam_periph_lock(struct cam_periph *periph); -void cam_periph_unlock(struct cam_periph *periph); cam_status cam_periph_acquire(struct cam_periph *periph); void cam_periph_release(struct cam_periph *periph); int cam_periph_hold(struct cam_periph *periph, int priority); @@ -177,5 +176,17 @@ int cam_periph_error(union ccb *ccb, cam_flags camflags, u_int32_t sense_flags, union ccb *save_ccb); +static __inline void +cam_periph_lock(struct cam_periph *periph) +{ + mtx_lock(periph->sim->mtx); +} + +static __inline void +cam_periph_unlock(struct cam_periph *periph) +{ + mtx_unlock(periph->sim->mtx); +} + #endif /* _KERNEL */ #endif /* _CAM_CAM_PERIPH_H */ ==== //depot/projects/opentoe/sys/cam/cam_sim.c#3 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/cam/cam_sim.c,v 1.10 2007/04/15 08:49:09 scottl Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/cam_sim.c,v 1.11 2007/04/19 14:28:43 scottl Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -95,6 +95,7 @@ } SLIST_INIT(&sim->ccb_freeq); + TAILQ_INIT(&sim->sim_doneq); return (sim); } ==== //depot/projects/opentoe/sys/cam/cam_sim.h#3 (text+ko) ==== @@ -25,7 +25,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/cam/cam_sim.h,v 1.7 2007/04/15 08:49:09 scottl Exp $ + * $FreeBSD: src/sys/cam/cam_sim.h,v 1.8 2007/04/19 14:28:43 scottl Exp $ */ #ifndef _CAM_CAM_SIM_H @@ -92,6 +92,8 @@ const char *sim_name; void *softc; struct mtx *mtx; + TAILQ_HEAD(, ccb_hdr) sim_doneq; + TAILQ_ENTRY(cam_sim) links; u_int32_t path_id;/* The Boot device may set this to 0? */ u_int32_t unit_number; u_int32_t bus_id; @@ -100,6 +102,7 @@ u_int32_t flags; #define CAM_SIM_REL_TIMEOUT_PENDING 0x01 #define CAM_SIM_MPSAFE 0x02 +#define CAM_SIM_ON_DONEQ 0x04 struct callout callout; struct cam_devq *devq; /* Device Queue to use for this SIM */ ==== //depot/projects/opentoe/sys/cam/cam_xpt.c#3 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.178 2007/04/18 04:58:52 scottl Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.182 2007/04/19 23:34:51 scottl Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -665,8 +665,9 @@ /* Queues for our software interrupt handler */ typedef TAILQ_HEAD(cam_isrq, ccb_hdr) cam_isrq_t; -static cam_isrq_t cam_bioq; -static struct mtx cam_bioq_lock; +typedef TAILQ_HEAD(cam_simq, cam_sim) cam_simq_t; +static cam_simq_t cam_simq; +static struct mtx cam_simq_lock; /* Pointers to software interrupt handlers */ static void *cambio_ih; @@ -821,6 +822,7 @@ static void xptaction(struct cam_sim *sim, union ccb *work_ccb); static void xptpoll(struct cam_sim *sim); static void camisr(void *); +static void camisr_runqueue(void *); static dev_match_ret xptbusmatch(struct dev_match_pattern *patterns, u_int num_patterns, struct cam_eb *bus); static dev_match_ret xptdevicematch(struct dev_match_pattern *patterns, @@ -1208,7 +1210,7 @@ * we never return a status of CAM_GDEVLIST_LIST_CHANGED. It is * (or rather should be) impossible for the device peripheral driver * list to change since we look at the whole thing in one pass, and - * we do it with splcam protection. + * we do it with lock protection. * */ case CAMGETPASSTHRU: { @@ -1220,13 +1222,12 @@ u_int cur_generation; int base_periph_found; int splbreaknum; - int s; ccb = (union ccb *)addr; unit = ccb->cgdl.unit_number; name = ccb->cgdl.periph_name; /* - * Every 100 devices, we want to drop our spl protection to + * Every 100 devices, we want to drop our lock protection to * give the software interrupt handler a chance to run. * Most systems won't run into this check, but this should * avoid starvation in the software interrupt handler in @@ -1248,7 +1249,7 @@ } /* Keep the list from changing while we traverse it */ - s = splcam(); + mtx_lock(&xsoftc.xpt_topo_lock); ptstartover: cur_generation = xsoftc.xpt_generation; @@ -1258,7 +1259,7 @@ break; if (*p_drv == NULL) { - splx(s); + mtx_unlock(&xsoftc.xpt_topo_lock); ccb->ccb_h.status = CAM_REQ_CMP_ERR; ccb->cgdl.status = CAM_GDEVLIST_ERROR; *ccb->cgdl.periph_name = '\0'; @@ -1280,8 +1281,8 @@ if (periph->unit_number == unit) { break; } else if (--splbreaknum == 0) { - splx(s); - s = splcam(); + mtx_unlock(&xsoftc.xpt_topo_lock); + mtx_lock(&xsoftc.xpt_topo_lock); splbreaknum = 100; if (cur_generation != xsoftc.xpt_generation) goto ptstartover; @@ -1370,7 +1371,7 @@ "your kernel config file\n"); } } - splx(s); + mtx_unlock(&xsoftc.xpt_topo_lock); break; } default: @@ -1426,7 +1427,7 @@ TAILQ_REMOVE(&queue, &ccb->ccb_h, sim_links.tqe); sim = ccb->ccb_h.path->bus->sim; - mtx_lock(sim->mtx); + CAM_SIM_LOCK(sim); ccb->ccb_h.func_code = XPT_SCAN_BUS; ccb->ccb_h.cbfcnp = xptdone; @@ -1434,7 +1435,7 @@ cam_periph_runccb(ccb, NULL, 0, 0, NULL); xpt_free_path(ccb->ccb_h.path); xpt_free_ccb(ccb); - mtx_unlock(sim->mtx); + CAM_SIM_UNLOCK(sim); } } } @@ -1472,12 +1473,12 @@ cam_status status; TAILQ_INIT(&xsoftc.xpt_busses); - TAILQ_INIT(&cam_bioq); + TAILQ_INIT(&cam_simq); TAILQ_INIT(&xsoftc.ccb_scanq); STAILQ_INIT(&xsoftc.highpowerq); xsoftc.num_highpower = CAM_MAX_HIGHPOWER; - mtx_init(&cam_bioq_lock, "CAM BIOQ lock", NULL, MTX_DEF); + mtx_init(&cam_simq_lock, "CAM SIMQ lock", NULL, MTX_DEF); mtx_init(&xsoftc.xpt_lock, "XPT lock", NULL, MTX_DEF); mtx_init(&xsoftc.xpt_topo_lock, "XPT topology lock", NULL, MTX_DEF); @@ -1551,7 +1552,7 @@ printf("xpt_init: failed to create rescan thread\n"); } /* Install our software interrupt handlers */ - swi_add(NULL, "cambio", camisr, &cam_bioq, SWI_CAMBIO, INTR_MPSAFE, &cambio_ih); + swi_add(NULL, "cambio", camisr, NULL, SWI_CAMBIO, INTR_MPSAFE, &cambio_ih); return (0); } @@ -1590,25 +1591,22 @@ status = CAM_REQ_CMP; if (device != NULL) { - int s; - /* * Make room for this peripheral * so it will fit in the queue * when it's scheduled to run */ - s = splsoftcam(); status = camq_resize(&device->drvq, device->drvq.array_size + 1); device->generation++; SLIST_INSERT_HEAD(periph_head, periph, periph_links); - - splx(s); } - atomic_add_int(&xsoftc.xpt_generation, 1); + mtx_lock(&xsoftc.xpt_topo_lock); + xsoftc.xpt_generation++; + mtx_unlock(&xsoftc.xpt_topo_lock); return (status); } @@ -1623,24 +1621,21 @@ device = periph->path->device; if (device != NULL) { - int s; struct periph_list *periph_head; periph_head = &device->periphs; /* Release the slot for this peripheral */ - s = splsoftcam(); camq_resize(&device->drvq, device->drvq.array_size - 1); device->generation++; SLIST_REMOVE(periph_head, periph, cam_periph, periph_links); - - splx(s); } - atomic_add_int(&xsoftc.xpt_generation, 1); - + mtx_lock(&xsoftc.xpt_topo_lock); + xsoftc.xpt_generation++; + mtx_unlock(&xsoftc.xpt_topo_lock); } @@ -1653,7 +1648,6 @@ u_int speed; u_int freq; u_int mb; - int s; mtx_assert(periph->sim->mtx, MA_OWNED); @@ -1662,7 +1656,6 @@ * To ensure that this is printed in one piece, * mask out CAM interrupts. */ - s = splsoftcam(); printf("%s%d at %s%d bus %d target %d lun %d\n", periph->periph_name, periph->unit_number, path->bus->sim->sim_name, @@ -1778,7 +1771,6 @@ if (announce_string != NULL) printf("%s%d: %s\n", periph->periph_name, periph->unit_number, announce_string); - splx(s); } static dev_match_ret @@ -2659,9 +2651,9 @@ next_bus = TAILQ_NEXT(bus, links); mtx_unlock(&xsoftc.xpt_topo_lock); - mtx_lock(bus->sim->mtx); + CAM_SIM_LOCK(bus->sim); retval = tr_func(bus, arg); - mtx_unlock(bus->sim->mtx); + CAM_SIM_UNLOCK(bus->sim); if (retval == 0) return(retval); mtx_lock(&xsoftc.xpt_topo_lock); @@ -2982,13 +2974,11 @@ void xpt_action(union ccb *start_ccb) { - int iopl; CAM_DEBUG(start_ccb->ccb_h.path, CAM_DEBUG_TRACE, ("xpt_action\n")); start_ccb->ccb_h.status = CAM_REQ_INPROG; - iopl = splsoftcam(); switch (start_ccb->ccb_h.func_code) { case XPT_SCSI_IO: { @@ -3042,18 +3032,15 @@ { struct cam_path *path; struct cam_sim *sim; - int s; int runq; path = start_ccb->ccb_h.path; - s = splsoftcam(); sim = path->bus->sim; if (SIM_DEAD(sim)) { /* The SIM has gone; just execute the CCB directly. */ cam_ccbq_send_ccb(&path->device->ccbq, start_ccb); (*(sim->sim_action))(sim, start_ccb); - splx(s); break; } @@ -3062,7 +3049,6 @@ runq = xpt_schedule_dev_sendq(path->bus, path->device); else runq = 0; - splx(s); if (runq != 0) xpt_run_dev_sendq(path->bus); break; @@ -3109,7 +3095,6 @@ case XPT_ABORT: { union ccb* abort_ccb; - int s; abort_ccb = start_ccb->cab.abort_ccb; if (XPT_FC_IS_DEV_QUEUED(abort_ccb)) { @@ -3122,9 +3107,7 @@ abort_ccb->ccb_h.status = CAM_REQ_ABORTED|CAM_DEV_QFRZN; xpt_freeze_devq(abort_ccb->ccb_h.path, 1); >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200704200607.l3K67LKa011495>