Re: svn commit: r218603 - head/sbin/tunefs

2011-02-13 Thread Bruce Evans

On Sat, 12 Feb 2011, Konstantin Belousov wrote:


Log:
 When creating a directory entry for the journal, always read at least
 the fragment, and write the full block. Reading less might not work
 due to device sector size bigger then size of direntries in the
 last directory fragment.


I think it should always write full fragments too (and the kernel should
always read/write in units of fragments, not sectors of any size).


Modified: head/sbin/tunefs/tunefs.c
==
--- head/sbin/tunefs/tunefs.c   Sat Feb 12 12:52:12 2011(r218602)
+++ head/sbin/tunefs/tunefs.c   Sat Feb 12 13:12:45 2011(r218603)
@@ -733,16 +740,19 @@ dir_extend(ufs2_daddr_t blk, ufs2_daddr_
{
char block[MAXBSIZE];

-   if (bread(&disk, fsbtodb(&sblock, blk), block, size) <= 0) {
+   if (bread(&disk, fsbtodb(&sblock, blk), block,
+   roundup(size, sblock.fs_fsize)) <= 0) {


Rounding up to a fragment boundary is spelled fragroundup(fs, size) in
ffs.  This use fs->fs_qfmask and fs->fs_fmask for optimality.  It is
unclear if the kernel macros work in userland, but here we already
use fsbtodb() which uses fs->fsbtodb for optimality.

[I've just learned again about fragroundup() after trying to fix rounding
in cluster_read().  See blksize().  Since cluster_read() doesn't know
about the fragment size or the fs dependencies in blksize(), it cannot
read ahead correctly across i/o size boundaries (exactly one of which
occurs near EOF for almost all files with fragments in ffs).  This bug is
missing in old breadn() -- it can even handle multiple i/o size boundaries,
since it is passed a separate size for every block.]

Bruce
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


Re: svn commit: r218604 - head/sbin/fsck_ffs

2011-02-13 Thread Bruce Evans

On Sat, 12 Feb 2011, Konstantin Belousov wrote:


Log:
 In checker, read journal by sectors.

 Due to UFS insistence to pretend that device sector size is 512 bytes,


Do you mean that ffs_fsck does this?  UFS doesn't exist, and ffs in the
kernel didn't use device sectors at all until recently (it used DEV_BSIZE
units, but those are not sectors but are the units for bread() and friends).
newfs uses a hack to do this.  When handling kernel sizes in units of
DEV_BSIZE (not a sector size!), ffs_fsck should use DEV_BSIZE (or maybe
just fsbtodb()) instead of `dev_bsize' or `sectorsize' and not
pretend that DEV_BSIZE (or the corresponding superblock value for the
conversion macro) is the sector size.


 sector size is obtained from ioctl(DIOCGSECTORSIZE) for real devices,
 and from the label otherwise. The file images without label have to
 be made with 512 sector size.



Modified: head/sbin/fsck_ffs/fsck.h
==
--- head/sbin/fsck_ffs/fsck.h   Sat Feb 12 13:12:45 2011(r218603)
+++ head/sbin/fsck_ffs/fsck.h   Sat Feb 12 13:17:14 2011(r218604)
@@ -268,6 +268,7 @@ charsnapname[BUFSIZ];   /* when doing sna
char*cdevname;  /* name of device being checked */
longdev_bsize;  /* computed value of DEV_BSIZE */
longsecsize;/* actual disk sector size */
+long   real_dev_bsize;


If `secsize' is the actual disk sector size, then we don't need another
variable giving the real sector size.

The new variable has no comment.  What is the difference between a sector
size and a dev_bsize?  There is enough confusion between DEV_BSIZE and
sector sizes already.  DEV_BSIZE has come to means nothing to do with
sectors and little to do with devices or block sizes.  It is just a minimal
i/o sizes for use in old interfaces (ones that didn't want to use more than
32 bits for disk addresses, but now use 64 bits anyway, so that they can
address 72 bits after multiplication by DEV_BSIZE).

These variables are named and documented slightly better in mkfs:

% extern intsectorsize; /* bytes/sector */
% extern intrealsectorsize; /* bytes/sector in hardware*/

At lease the fake sector size variable doesn't claim to be actual, and
the real sector size variable doesn't have extra underscores and claims
to be a sector size variable.


Modified: head/sbin/fsck_ffs/setup.c
==
--- head/sbin/fsck_ffs/setup.c  Sat Feb 12 13:12:45 2011(r218603)
+++ head/sbin/fsck_ffs/setup.c  Sat Feb 12 13:17:14 2011(r218604)
@@ -446,7 +446,7 @@ sblock_init(void)
if (sblk.b_un.b_buf == NULL || asblk.b_un.b_buf == NULL)
errx(EEXIT, "cannot allocate space for superblock");
if ((lp = getdisklabel(NULL, fsreadfd)))
-   dev_bsize = secsize = lp->d_secsize;
+   real_dev_bsize = dev_bsize = secsize = lp->d_secsize;
else
dev_bsize = secsize = DEV_BSIZE;
}


Both the variables are real enough here, provided getdisklabel() works.
Otherwise, you are in trouble and should fail instead of defaulting the
size unless the size is set by another means.  newfs seems to fail, and
I'm sure newfs_msdos does fail if the sector size is unknown.


Modified: head/sbin/fsck_ffs/suj.c
==
--- head/sbin/fsck_ffs/suj.cSat Feb 12 13:12:45 2011(r218603)
+++ head/sbin/fsck_ffs/suj.cSat Feb 12 13:17:14 2011(r218604)
@@ -28,6 +28,7 @@
__FBSDID("$FreeBSD$");

#include 
+#include 
#include 
#include 
#include 
@@ -201,6 +202,11 @@ opendisk(const char *devnam)
disk->d_error);
}
fs = &disk->d_fs;
+   if (real_dev_bsize == 0 && ioctl(disk->d_fd, DIOCGSECTORSIZE,
+   &real_dev_bsize) == -1)
+   real_dev_bsize = secsize;
+   if (debug)
+   printf("dev_bsize %ld\n", real_dev_bsize);
}

/*


If this gives a different "real_dev_bsize", and this is different from the
sector size in the label or defaulted-to, then the latter is presumably
wrong, and we're left with a `secsize' that is not the "actual sector size".

It is a bug to replace the sector size in the label with the one obtained
here.  The former should be correct, and it is the only one under user
control.  It might need to be changed if one given by the ioctl is wrong
or just if it is fake.  (Labels only have 32-bit disk addresses, so fake
sector sizes are needed to address more than 41 bits if the physical sector
size has is 512.)

newfs doesn't have the  precedence that I want:
- sectorsize set on the command line (-S option) has precedence.  [Bug;
  -S 0 is needed to cancel any previous setting of sectorsize on the
  command line by -S or maybe by -T, but it is treated as an error.]
  fsck_ffs unfortunately doesn't seem to have any -S or -T option.

Re: svn commit: r218604 - head/sbin/fsck_ffs

2011-02-13 Thread Bjoern A. Zeeb

On Sun, 13 Feb 2011, Bruce Evans wrote:


On Sat, 12 Feb 2011, Konstantin Belousov wrote:


Log:
 In checker, read journal by sectors.

 Due to UFS insistence to pretend that device sector size is 512 bytes,


[long explanation stripped]

I don't claim to understand a word; all I know is that you can now put
a su+j on top of say: mdconfig -s 128M -S 4096
or a geli on top of a real disk as given in the first example in
geli(8).

Previously either would panic as fast as:
newfs ..
tunefs -j eanble ..
mount .. /mnt
mkdir /mnt/x
*kaboom*

If you want to change the names and macros and arithmetics I am all
fine if it's (as I try to understand) unified, but then make sure the
above works well and that all cases on top of it work again
afterwards.  Thanks:)

--
Bjoern A. Zeeb You have to have visions!
 Stop bit received. Insert coin for new address family.
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r218637 - head/tools/tools/ath/ath_ee_v14_print

2011-02-13 Thread Adrian Chadd
Author: adrian
Date: Sun Feb 13 13:11:00 2011
New Revision: 218637
URL: http://svn.freebsd.org/changeset/base/218637

Log:
  * add in new EEPROM fields from later revisions
  * add in printing futureBase

Modified:
  head/tools/tools/ath/ath_ee_v14_print/ath_ee_v14_print.c

Modified: head/tools/tools/ath/ath_ee_v14_print/ath_ee_v14_print.c
==
--- head/tools/tools/ath/ath_ee_v14_print/ath_ee_v14_print.cSun Feb 13 
11:10:57 2011(r218636)
+++ head/tools/tools/ath/ath_ee_v14_print/ath_ee_v14_print.cSun Feb 13 
13:11:00 2011(r218637)
@@ -87,6 +87,7 @@ eeprom_v14_base_print(uint16_t *buf)
 {
HAL_EEPROM_v14 *eep = (HAL_EEPROM_v14 *) buf;
BASE_EEP_HEADER *eh = &eep->ee_base.baseEepHeader;
+   int i;
 
printf("| Version: 0x%.4x   | Length: 0x%.4x | Checksum: 0x%.4x ",
eh->version, eh->length, eh->checksum);
@@ -104,14 +105,22 @@ eeprom_v14_base_print(uint16_t *buf)
(int) eh->pwdclkind, (int) eh->fastClk5g, (int) eh->divChain,
(int) eh->rxGainType);
 
-   printf("| dacHiPwrMode: 0x%.2x | openLoopPwrCntl: 0x%.2x | dacLpMode: 
0x%.2x ",
-   (int) eh->dacHiPwrMode, (int) eh->openLoopPwrCntl, (int) 
eh->dacLpMode);
+   printf("| dacHiPwrMode_5G: 0x%.2x | openLoopPwrCntl: 0x%.2x | 
dacLpMode: 0x%.2x ",
+   (int) eh->dacHiPwrMode_5G, (int) eh->openLoopPwrCntl, (int) 
eh->dacLpMode);
printf("| txGainType: 0x%.2x | rcChainMask: 0x%.2x |\n",
(int) eh->txGainType, (int) eh->rcChainMask);
 
+   printf("| desiredScaleCCK: 0x%.2x | pwr_table_offset: 0x%.2x | 
frac_n_5g: %.2x\n",
+   (int) eh->desiredScaleCCK, (int) eh->pwr_table_offset, (int) 
eh->frac_n_5g);
+
/* because it's convienent */
printf("| antennaGainMax[0]: 0x%.2x antennaGainMax[1]: 0x%.2x |\n",
eep->ee_antennaGainMax[0], eep->ee_antennaGainMax[1]);
+
+   printf(" | futureBase:");
+   for (i = 0; i < sizeof(eh->futureBase) / sizeof(uint8_t); i++) 
+   printf(" %.2x", (int) eh->futureBase[i]);
+   printf("\n");
 }
 
 static void
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


Re: svn commit: r218604 - head/sbin/fsck_ffs

2011-02-13 Thread Kostik Belousov
On Sun, Feb 13, 2011 at 11:30:56PM +1100, Bruce Evans wrote:
> On Sat, 12 Feb 2011, Konstantin Belousov wrote:
> 
> >Log:
> > In checker, read journal by sectors.
> >
> > Due to UFS insistence to pretend that device sector size is 512 bytes,
> 
> Do you mean that ffs_fsck does this?  UFS doesn't exist, and ffs in the
> kernel didn't use device sectors at all until recently (it used DEV_BSIZE
> units, but those are not sectors but are the units for bread() and friends).
Yes, the journal writer started using DEV_BSIZE as _sector_ size to
write the journal blocks, and fixing this was the point of the series
of commits. Journal was unoperable on the providers with non-512 byte
sectors.

> newfs uses a hack to do this.  When handling kernel sizes in units of
> DEV_BSIZE (not a sector size!), ffs_fsck should use DEV_BSIZE (or maybe
> just fsbtodb()) instead of `dev_bsize' or `sectorsize' and not
> pretend that DEV_BSIZE (or the corresponding superblock value for the
> conversion macro) is the sector size.
> 
> > sector size is obtained from ioctl(DIOCGSECTORSIZE) for real devices,
> > and from the label otherwise. The file images without label have to
> > be made with 512 sector size.
> 
> >Modified: head/sbin/fsck_ffs/fsck.h
> >==
> >--- head/sbin/fsck_ffs/fsck.hSat Feb 12 13:12:45 2011
> >(r218603)
> >+++ head/sbin/fsck_ffs/fsck.hSat Feb 12 13:17:14 2011
> >(r218604)
> >@@ -268,6 +268,7 @@ char snapname[BUFSIZ];   /* when doing sna
> >char *cdevname;  /* name of device being checked */
> >long dev_bsize;  /* computed value of DEV_BSIZE */
> >long secsize;/* actual disk sector size */
> >+longreal_dev_bsize;
> 
> If `secsize' is the actual disk sector size, then we don't need another
> variable giving the real sector size.
> 
> The new variable has no comment.  What is the difference between a sector
> size and a dev_bsize?  There is enough confusion between DEV_BSIZE and
> sector sizes already.  DEV_BSIZE has come to means nothing to do with
> sectors and little to do with devices or block sizes.  It is just a minimal
> i/o sizes for use in old interfaces (ones that didn't want to use more than
> 32 bits for disk addresses, but now use 64 bits anyway, so that they can
> address 72 bits after multiplication by DEV_BSIZE).
There is no "actual" difference (I tired of the word actual when debugging
the patches), they are all DEV_BSIZE.

> 
> These variables are named and documented slightly better in mkfs:
> 
> % extern int  sectorsize; /* bytes/sector */
> % extern int  realsectorsize; /* bytes/sector in hardware*/
> 
> At lease the fake sector size variable doesn't claim to be actual, and
> the real sector size variable doesn't have extra underscores and claims
> to be a sector size variable.
> 
> >Modified: head/sbin/fsck_ffs/setup.c
> >==
> >--- head/sbin/fsck_ffs/setup.c   Sat Feb 12 13:12:45 2011 (r218603)
> >+++ head/sbin/fsck_ffs/setup.c   Sat Feb 12 13:17:14 2011 (r218604)
> >@@ -446,7 +446,7 @@ sblock_init(void)
> > if (sblk.b_un.b_buf == NULL || asblk.b_un.b_buf == NULL)
> > errx(EEXIT, "cannot allocate space for superblock");
> > if ((lp = getdisklabel(NULL, fsreadfd)))
> >-dev_bsize = secsize = lp->d_secsize;
> >+real_dev_bsize = dev_bsize = secsize = lp->d_secsize;
> > else
> > dev_bsize = secsize = DEV_BSIZE;
> >}
> 
> Both the variables are real enough here, provided getdisklabel() works.
> Otherwise, you are in trouble and should fail instead of defaulting the
> size unless the size is set by another means.  newfs seems to fail, and
> I'm sure newfs_msdos does fail if the sector size is unknown.
> 
> >Modified: head/sbin/fsck_ffs/suj.c
> >==
> >--- head/sbin/fsck_ffs/suj.c Sat Feb 12 13:12:45 2011(r218603)
> >+++ head/sbin/fsck_ffs/suj.c Sat Feb 12 13:17:14 2011(r218604)
> >@@ -28,6 +28,7 @@
> >__FBSDID("$FreeBSD$");
> >
> >#include 
> >+#include 
> >#include 
> >#include 
> >#include 
> >@@ -201,6 +202,11 @@ opendisk(const char *devnam)
> > disk->d_error);
> > }
> > fs = &disk->d_fs;
> >+if (real_dev_bsize == 0 && ioctl(disk->d_fd, DIOCGSECTORSIZE,
> >+&real_dev_bsize) == -1)
> >+real_dev_bsize = secsize;
> >+if (debug)
> >+printf("dev_bsize %ld\n", real_dev_bsize);
> >}
> >
> >/*
> 
> If this gives a different "real_dev_bsize", and this is different from the
> sector size in the label or defaulted-to, then the latter is presumably
> wrong, and we're left with a `secsize' that is not the "actual sector size".
Yes, secsize is not the "actual sector size", it is equal to DEV_BSIZE,
see setup.c:sblock_init().

> 
> It is a bug to replace th

svn commit: r218639 - head/sys/netinet

2011-02-13 Thread Michael Tuexen
Author: tuexen
Date: Sun Feb 13 13:53:28 2011
New Revision: 218639
URL: http://svn.freebsd.org/changeset/base/218639

Log:
  Fix several bugs related to stream scheduling.
  
  Obtained from: Robin Seggelmann
  MFC after: 3 months.

Modified:
  head/sys/netinet/sctp_ss_functions.c

Modified: head/sys/netinet/sctp_ss_functions.c
==
--- head/sys/netinet/sctp_ss_functions.cSun Feb 13 13:21:55 2011
(r218638)
+++ head/sys/netinet/sctp_ss_functions.cSun Feb 13 13:53:28 2011
(r218639)
@@ -59,11 +59,9 @@ sctp_ss_default_init(struct sctp_tcb *st
 * stream queues to the wheel.
 */
for (i = 0; i < stcb->asoc.streamoutcnt; i++) {
-   if (!TAILQ_EMPTY(&stcb->asoc.strmout[i].outqueue)) {
-   sctp_ss_default_add(stcb, &stcb->asoc,
-   &stcb->asoc.strmout[i],
-   NULL, holds_lock);
-   }
+   stcb->asoc.ss_functions.sctp_ss_add_to_stream(stcb, &stcb->asoc,
+   &stcb->asoc.strmout[i],
+   NULL, holds_lock);
}
return;
 }
@@ -72,14 +70,19 @@ static void
 sctp_ss_default_clear(struct sctp_tcb *stcb, struct sctp_association *asoc,
 int clear_values, int holds_lock)
 {
-   uint16_t i;
+   if (holds_lock == 0) {
+   SCTP_TCB_SEND_LOCK(stcb);
+   }
+   while (!TAILQ_EMPTY(&asoc->ss_data.out_wheel)) {
+   struct sctp_stream_out *strq = 
TAILQ_FIRST(&asoc->ss_data.out_wheel);
 
-   for (i = 0; i < stcb->asoc.streamoutcnt; i++) {
-   if (!TAILQ_EMPTY(&stcb->asoc.strmout[i].outqueue)) {
-   sctp_ss_default_remove(stcb, &stcb->asoc,
-   &stcb->asoc.strmout[i],
-   NULL, holds_lock);
-   }
+   TAILQ_REMOVE(&asoc->ss_data.out_wheel, 
TAILQ_FIRST(&asoc->ss_data.out_wheel), ss_params.rr.next_spoke);
+   strq->ss_params.rr.next_spoke.tqe_next = NULL;
+   strq->ss_params.rr.next_spoke.tqe_prev = NULL;
+   }
+   asoc->last_out_stream = NULL;
+   if (holds_lock == 0) {
+   SCTP_TCB_SEND_UNLOCK(stcb);
}
return;
 }
@@ -100,7 +103,9 @@ sctp_ss_default_add(struct sctp_tcb *stc
if (holds_lock == 0) {
SCTP_TCB_SEND_LOCK(stcb);
}
-   if ((strq->ss_params.rr.next_spoke.tqe_next == NULL) &&
+   /* Add to wheel if not already on it and stream queue not empty */
+   if (!TAILQ_EMPTY(&strq->outqueue) &&
+   (strq->ss_params.rr.next_spoke.tqe_next == NULL) &&
(strq->ss_params.rr.next_spoke.tqe_prev == NULL)) {
TAILQ_INSERT_TAIL(&asoc->ss_data.out_wheel,
strq, ss_params.rr.next_spoke);
@@ -126,11 +131,16 @@ sctp_ss_default_remove(struct sctp_tcb *
 struct sctp_stream_out *strq,
 struct sctp_stream_queue_pending *sp, int holds_lock)
 {
-   /* take off and then setup so we know it is not on the wheel */
if (holds_lock == 0) {
SCTP_TCB_SEND_LOCK(stcb);
}
-   if (TAILQ_EMPTY(&strq->outqueue)) {
+   /*
+* Remove from wheel if stream queue is empty and actually is on the
+* wheel
+*/
+   if (TAILQ_EMPTY(&strq->outqueue) &&
+   (strq->ss_params.rr.next_spoke.tqe_next != NULL ||
+   strq->ss_params.rr.next_spoke.tqe_prev != NULL)) {
if (asoc->last_out_stream == strq) {
asoc->last_out_stream = 
TAILQ_PREV(asoc->last_out_stream,
sctpwheel_listhead,
@@ -244,7 +254,8 @@ sctp_ss_rr_add(struct sctp_tcb *stcb, st
if (holds_lock == 0) {
SCTP_TCB_SEND_LOCK(stcb);
}
-   if ((strq->ss_params.rr.next_spoke.tqe_next == NULL) &&
+   if (!TAILQ_EMPTY(&strq->outqueue) &&
+   (strq->ss_params.rr.next_spoke.tqe_next == NULL) &&
(strq->ss_params.rr.next_spoke.tqe_prev == NULL)) {
if (TAILQ_EMPTY(&asoc->ss_data.out_wheel)) {
TAILQ_INSERT_HEAD(&asoc->ss_data.out_wheel, strq, 
ss_params.rr.next_spoke);
@@ -271,48 +282,20 @@ sctp_ss_rr_add(struct sctp_tcb *stcb, st
  * Always interates the streams in ascending order and
  * only fills messages of the same stream in a packet.
  */
-static void
-sctp_ss_rrp_add(struct sctp_tcb *stcb, struct sctp_association *asoc,
-struct sctp_stream_out *strq,
-struct sctp_stream_queue_pending *sp, int holds_lock)
+static struct sctp_stream_out *
+sctp_ss_rrp_select(struct sctp_tcb *stcb, struct sctp_nets *net,
+struct sctp_association *asoc)
 {
-   struct sctp_stream_out *strqt;
-
-   if (holds_lock == 0) {
-   SCTP_TCB_SEND_LOCK(stcb);
-   }
-   if ((strq->ss_params.rr.next_spoke.tqe_next == NULL) &&
-   (strq->ss_params.rr.next_spoke.tqe_prev == NULL)) {
-  

svn commit: r218640 - head/sys/fs/tmpfs

2011-02-13 Thread Alan Cox
Author: alc
Date: Sun Feb 13 14:46:39 2011
New Revision: 218640
URL: http://svn.freebsd.org/changeset/base/218640

Log:
  Eliminate tn_reg.tn_aobj_pages.  Instead, correctly maintain the vm
  object's size field.  Previously, that field was always zero, even
  when the object tn_reg.tn_aobj contained numerous pages.
  
  Apply style fixes to tmpfs_reg_resize().
  
  In collaboration with:kib

Modified:
  head/sys/fs/tmpfs/tmpfs.h
  head/sys/fs/tmpfs/tmpfs_subr.c

Modified: head/sys/fs/tmpfs/tmpfs.h
==
--- head/sys/fs/tmpfs/tmpfs.h   Sun Feb 13 13:53:28 2011(r218639)
+++ head/sys/fs/tmpfs/tmpfs.h   Sun Feb 13 14:46:39 2011(r218640)
@@ -283,7 +283,6 @@ struct tmpfs_node {
 * issue the required page ins or page outs whenever
 * a position within the file is accessed. */
vm_object_t tn_aobj;
-   size_t  tn_aobj_pages;
 
}tn_reg;
 

Modified: head/sys/fs/tmpfs/tmpfs_subr.c
==
--- head/sys/fs/tmpfs/tmpfs_subr.c  Sun Feb 13 13:53:28 2011
(r218639)
+++ head/sys/fs/tmpfs/tmpfs_subr.c  Sun Feb 13 14:46:39 2011
(r218640)
@@ -146,7 +146,6 @@ tmpfs_alloc_node(struct tmpfs_mount *tmp
nnode->tn_reg.tn_aobj =
vm_pager_allocate(OBJT_SWAP, NULL, 0, VM_PROT_DEFAULT, 0,
NULL /* XXXKIB - tmpfs needs swap reservation */);
-   nnode->tn_reg.tn_aobj_pages = 0;
break;
 
default:
@@ -184,7 +183,7 @@ tmpfs_alloc_node(struct tmpfs_mount *tmp
 void
 tmpfs_free_node(struct tmpfs_mount *tmp, struct tmpfs_node *node)
 {
-   size_t pages = 0;
+   vm_object_t uobj;
 
 #ifdef INVARIANTS
TMPFS_NODE_LOCK(node);
@@ -220,9 +219,13 @@ tmpfs_free_node(struct tmpfs_mount *tmp,
break;
 
case VREG:
-   if (node->tn_reg.tn_aobj != NULL)
-   vm_object_deallocate(node->tn_reg.tn_aobj);
-   pages = node->tn_reg.tn_aobj_pages;
+   uobj = node->tn_reg.tn_aobj;
+   if (uobj != NULL) {
+   TMPFS_LOCK(tmp);
+   tmp->tm_pages_used -= uobj->size;
+   TMPFS_UNLOCK(tmp);
+   vm_object_deallocate(uobj);
+   }
break;
 
default:
@@ -231,10 +234,6 @@ tmpfs_free_node(struct tmpfs_mount *tmp,
 
free_unr(tmp->tm_ino_unr, node->tn_id);
uma_zfree(tmp->tm_node_pool, node);
-
-   TMPFS_LOCK(tmp);
-   tmp->tm_pages_used -= pages;
-   TMPFS_UNLOCK(tmp);
 }
 
 /* - */
@@ -884,16 +883,20 @@ tmpfs_dir_whiteout_remove(struct vnode *
 int
 tmpfs_reg_resize(struct vnode *vp, off_t newsize)
 {
-   int error;
-   size_t newpages, oldpages;
struct tmpfs_mount *tmp;
struct tmpfs_node *node;
+   vm_object_t uobj;
+   vm_page_t m;
+   vm_pindex_t newpages, oldpages;
off_t oldsize;
+   size_t zerolen;
+   int error;
 
MPASS(vp->v_type == VREG);
MPASS(newsize >= 0);
 
node = VP_TO_TMPFS_NODE(vp);
+   uobj = node->tn_reg.tn_aobj;
tmp = VFS_TO_TMPFS(vp->v_mount);
 
/* Convert the old and new sizes to the number of pages needed to
@@ -901,9 +904,9 @@ tmpfs_reg_resize(struct vnode *vp, off_t
 * because the last allocated page can accommodate the change on
 * its own. */
oldsize = node->tn_size;
-   oldpages = round_page(oldsize) / PAGE_SIZE;
-   MPASS(oldpages == node->tn_reg.tn_aobj_pages);
-   newpages = round_page(newsize) / PAGE_SIZE;
+   oldpages = OFF_TO_IDX(oldsize + PAGE_MASK);
+   MPASS(oldpages == uobj->size);
+   newpages = OFF_TO_IDX(newsize + PAGE_MASK);
 
if (newpages > oldpages &&
newpages - oldpages > TMPFS_PAGES_AVAIL(tmp)) {
@@ -911,48 +914,39 @@ tmpfs_reg_resize(struct vnode *vp, off_t
goto out;
}
 
-   node->tn_reg.tn_aobj_pages = newpages;
-
TMPFS_LOCK(tmp);
tmp->tm_pages_used += (newpages - oldpages);
TMPFS_UNLOCK(tmp);
 
node->tn_size = newsize;
vnode_pager_setsize(vp, newsize);
+   VM_OBJECT_LOCK(uobj);
if (newsize < oldsize) {
-   size_t zerolen = round_page(newsize) - newsize;
-   vm_object_t uobj = node->tn_reg.tn_aobj;
-   vm_page_t m;
-
/*
 * free "backing store"
 */
-   VM_OBJECT_LOCK(uobj);
if (newpages < oldpages) {
-   swap_pager_freespace(uobj,
-   newpages, oldpages - newpages);
-   vm_obj

svn commit: r218641 - head/sys/netinet

2011-02-13 Thread Randall Stewart
Author: rrs
Date: Sun Feb 13 14:48:11 2011
New Revision: 218641
URL: http://svn.freebsd.org/changeset/base/218641

Log:
  Fix a bug reported by Jonathan Leighton in his web-sctp testing
  at the Univ-of-Del. Basically when a 1-to-1 socket did a
  socket/bind/send(data)/close. If the timing was right
  we would dereference a socket that is NULL.
  
  MFC after:1 month

Modified:
  head/sys/netinet/sctp_input.c

Modified: head/sys/netinet/sctp_input.c
==
--- head/sys/netinet/sctp_input.c   Sun Feb 13 14:46:39 2011
(r218640)
+++ head/sys/netinet/sctp_input.c   Sun Feb 13 14:48:11 2011
(r218641)
@@ -2865,24 +2865,31 @@ sctp_handle_cookie_ack(struct sctp_cooki
SCTP_SOCKET_LOCK(so, 1);
SCTP_TCB_LOCK(stcb);
atomic_subtract_int(&stcb->asoc.refcnt, 1);
-   if (stcb->asoc.state & SCTP_STATE_CLOSED_SOCKET) {
-   SCTP_SOCKET_UNLOCK(so, 1);
-   return;
-   }
 #endif
-   soisconnected(stcb->sctp_socket);
+   if ((stcb->asoc.state & SCTP_STATE_CLOSED_SOCKET) == 0) 
{
+   soisconnected(stcb->sctp_socket);
+   }
 #if defined (__APPLE__) || defined(SCTP_SO_LOCK_TESTING)
SCTP_SOCKET_UNLOCK(so, 1);
 #endif
}
-   sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep,
-   stcb, net);
/*
 * since we did not send a HB make sure we don't double
 * things
 */
net->hb_responded = 1;
 
+   if (stcb->asoc.state & SCTP_STATE_CLOSED_SOCKET) {
+   /*
+* We don't need to do the asconf thing, nor hb or
+* autoclose if the socket is closed.
+*/
+   goto closed_socket;
+   }
+   sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, stcb->sctp_ep,
+   stcb, net);
+
+
if (stcb->asoc.sctp_autoclose_ticks &&
sctp_is_feature_on(stcb->sctp_ep, 
SCTP_PCB_FLAGS_AUTOCLOSE)) {
sctp_timer_start(SCTP_TIMER_TYPE_AUTOCLOSE,
@@ -2906,6 +2913,7 @@ sctp_handle_cookie_ack(struct sctp_cooki
 #endif
}
}
+closed_socket:
/* Toss the cookie if I can */
sctp_toss_old_cookies(stcb, asoc);
if (!TAILQ_EMPTY(&asoc->sent_queue)) {
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r218642 - head/sys/dev/ath

2011-02-13 Thread Adrian Chadd
Author: adrian
Date: Sun Feb 13 15:14:13 2011
New Revision: 218642
URL: http://svn.freebsd.org/changeset/base/218642

Log:
  This should be TX stream, not RX stream.

Modified:
  head/sys/dev/ath/if_ath_tx_ht.c

Modified: head/sys/dev/ath/if_ath_tx_ht.c
==
--- head/sys/dev/ath/if_ath_tx_ht.c Sun Feb 13 14:48:11 2011
(r218641)
+++ head/sys/dev/ath/if_ath_tx_ht.c Sun Feb 13 15:14:13 2011
(r218642)
@@ -131,7 +131,7 @@ ath_rateseries_setup(struct ath_softc *s
series[i].PktDuration =
ath_computedur_ht(pktlen
, txrate
-   , ic->ic_rxstream
+   , ic->ic_txstream
, (ni->ni_htcap & IEEE80211_HTCAP_CHWIDTH40)
, series[i].RateFlags & HAL_RATESERIES_HALFGI);
} else {
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


Re: svn commit: r218604 - head/sbin/fsck_ffs

2011-02-13 Thread Bruce Evans

On Sun, 13 Feb 2011, Kostik Belousov wrote:


On Sun, Feb 13, 2011 at 11:30:56PM +1100, Bruce Evans wrote:

On Sat, 12 Feb 2011, Konstantin Belousov wrote:


Log:
In checker, read journal by sectors.

Due to UFS insistence to pretend that device sector size is 512 bytes,


Do you mean that ffs_fsck does this?  UFS doesn't exist, and ffs in the
kernel didn't use device sectors at all until recently (it used DEV_BSIZE
units, but those are not sectors but are the units for bread() and friends).

Yes, the journal writer started using DEV_BSIZE as _sector_ size to
write the journal blocks, and fixing this was the point of the series
of commits. Journal was unoperable on the providers with non-512 byte
sectors.


I now think userland shouldn't use any kernel sizes (DEV_BSIZE, ffs
frag size, or ffs block size, otherfs block sizes) for i/o.  It can
use the disk sector size (if any), but that will be bad for performance
so it normally should't be used either, and there is no need to determine
it (just use a large size that works).  Some reblocking from fs block
sizes to good i/o sizes may be needed, especially if the sizes that
works is large (say 256K -- you would use it as a cache and reblock to
it).  This is best done using block devices so that even 1-byte i/o's
are reblocked with no extra code, but block devices are axed in FreeBSD.


Modified: head/sbin/fsck_ffs/fsck.h
==
--- head/sbin/fsck_ffs/fsck.h   Sat Feb 12 13:12:45 2011(r218603)
+++ head/sbin/fsck_ffs/fsck.h   Sat Feb 12 13:17:14 2011(r218604)
@@ -268,6 +268,7 @@ charsnapname[BUFSIZ];   /* when doing sna
char*cdevname;  /* name of device being checked */
longdev_bsize;  /* computed value of DEV_BSIZE */
longsecsize;/* actual disk sector size */
+long   real_dev_bsize;


If `secsize' is the actual disk sector size, then we don't need another
variable giving the real sector size.

The new variable has no comment.  What is the difference between a sector
size and a dev_bsize?  There is enough confusion between DEV_BSIZE and
sector sizes already.  DEV_BSIZE has come to means nothing to do with
sectors and little to do with devices or block sizes.  It is just a minimal
i/o sizes for use in old interfaces (ones that didn't want to use more than
32 bits for disk addresses, but now use 64 bits anyway, so that they can
address 72 bits after multiplication by DEV_BSIZE).

There is no "actual" difference (I tired of the word actual when debugging
the patches), they are all DEV_BSIZE.


Any chance of fixing the comment or removing one of the variables?

I now see that secsize really is the actual sector size, modulo bugs (*),
unlike in newfs, and it is used mainly to do i/o of a working size, with
some rebocking, in fsutil.c.

(*) Old bug: there was no call to DIOCGSECTORSIZE to determine the
sector size, so if the label didn't give it then it could easily be
wrong.  New bug: DIOCGSECTORSIZE is now called, but it is only used
to set real_dev_bsize.  So the old code in fsutil.c doesn't benifit
from the better determination of the sector size.  I think it just
fails if the label didn't give the size and the default of DEV_BSIZE
is too small to work.  suj.c also seems to be in error in calling
bread() instead of blread().  This prevents any chance of the old
code's reblocking to size secsize (I'm not sure if there is enough
reblocking to work, but the old code only uses size secsize).  All old
parts of fsck_ffs call bread() via blread().  The only places that
call bread() directly are suj.c (many times) and gjournal.c (once).

real_dev_bsize still seems bogus.  DEV_BSIZE is the real DEV_BSIZE.
I think you mainly want an i/o size that works.  This can be secsize,
as in old code, provided that is initialized correctly.

In my fixes in fsck_msdosfs, the i/o size that works (except while
probing for one that works) is named iosize.


Modified: head/sbin/fsck_ffs/setup.c
==
--- head/sbin/fsck_ffs/setup.c  Sat Feb 12 13:12:45 2011 (r218603)
+++ head/sbin/fsck_ffs/setup.c  Sat Feb 12 13:17:14 2011 (r218604)
@@ -446,7 +446,7 @@ sblock_init(void)
if (sblk.b_un.b_buf == NULL || asblk.b_un.b_buf == NULL)
errx(EEXIT, "cannot allocate space for superblock");
if ((lp = getdisklabel(NULL, fsreadfd)))
-   dev_bsize = secsize = lp->d_secsize;
+   real_dev_bsize = dev_bsize = secsize = lp->d_secsize;
else
dev_bsize = secsize = DEV_BSIZE;
}


Both the variables are real enough here, provided getdisklabel() works.
Otherwise, you are in trouble and should fail instead of defaulting the
size unless the size is set by another means.  newfs seems to fail, and
I'm sure newfs_msdos does fail if the sector size is unknown.


Modified: head/sbin/fsck_ffs/suj.c
==

svn commit: r218645 - head/lib/libc/gen

2011-02-13 Thread Bruce Cran
Author: brucec
Date: Sun Feb 13 17:43:56 2011
New Revision: 218645
URL: http://svn.freebsd.org/changeset/base/218645

Log:
  Document some more sysconf(3) variables.
  
  MFC after:1 month

Modified:
  head/lib/libc/gen/sysconf.3

Modified: head/lib/libc/gen/sysconf.3
==
--- head/lib/libc/gen/sysconf.3 Sun Feb 13 16:18:22 2011(r218644)
+++ head/lib/libc/gen/sysconf.3 Sun Feb 13 17:43:56 2011(r218645)
@@ -28,7 +28,7 @@
 .\"@(#)sysconf.3   8.3 (Berkeley) 4/19/94
 .\" $FreeBSD$
 .\"
-.Dd December 14, 2006
+.Dd February 13, 2011
 .Dt SYSCONF 3
 .Os
 .Sh NAME
@@ -85,6 +85,9 @@ The number of processors currently onlin
 The maximum number of open files per user id.
 .It Li _SC_PAGESIZE
 The size of a system page in bytes.
+.It Li _SC_PAGE_SIZE
+Equivalent to
+.Li _SC_PAGESIZE .
 .It Li _SC_STREAM_MAX
 The minimum maximum number of streams that a process may have open
 at any one time.
@@ -160,10 +163,64 @@ otherwise \-1.
 .It Li _SC_2_UPE
 Return 1 if the system supports the User Portability Utilities Option,
 otherwise \-1.
+.It Li _SC_AIO_LISTIO_MAX
+Maximum number of I/O operations in a single list I/O call supported.
+.It Li _SC_AIO_MAX
+Maximum number of outstanding asynchronous I/O operations supported.
+.It Li _SC_AIO_PRIO_DELTA_MAX
+The maximum amount by which a process can decrease its asynchronous I/O
+priority level from its own scheduling priority.
+.It Li _SC_DELAYTIMER_MAX
+Maximum number of timer expiration overruns.
+.It Li _SC_MQ_OPEN_MAX
+The maximum number of open message queue descriptors a process may hold.
+.It Li _SC_RTSIG_MAX
+Maximum number of realtime signals reserved for application use.
+.It Li _SC_SEM_NSEMS_MAX
+Maximum number of semaphores that a process may have.
+.It Li _SC_SEM_VALUE_MAX
+The maximum value a semaphore may have.
+.It Li _SC_SIGQUEUE_MAX
+Maximum number of queued signals that a process may send and have pending at
+the receiver(s) at any time.
+.It Li _SC_TIMER_MAX
+Maximum number of timers per process supported.
+.It Li _SC_GETGR_R_SIZE_MAX
+Suggested initial value for the size of the group entry buffer.
+.It Li _SC_GETPW_R_SIZE_MAX
+Suggested initial value for the size of the password entry buffer.
+.It Li _SC_HOST_NAME_MAX
+Maximum length of a host name (not including the terminating null) as
+returned from the
+.Fn gethostname
+function.
+.It Li _SC_LOGIN_NAME_MAX
+Maximum length of a login name.
+.It Li _SC_THREAD_STACK_MIN
+Minimum size in bytes of thread stack storage.
+.It Li _SC_THREAD_THREADS_MAX
+Maximum number of threads that can be created per process.
+.It Li _SC_TTY_NAME_MAX
+Maximum length of terminal device name.
+.It Li _SC_SYMLOOP_MAX
+Maximum number of symbolic links that can be reliably traversed in the
+resolution of a pathname in the absence of a loop.
+.It Li _SC_ATEXIT_MAX
+Maximum number of functions that may be registered with
+.Fn atexit .
+.It Li _SC_XOPEN_VERSION
+An integer value greater than or equal to 4,
+indicating the version of the X/Open Portability Guide to which this
+system conforms. 
+.It Li _SC_XOPEN_XCU_VERSION
+An integer value indicating the version of the XCU Specification to which
+this system conforms.
 .El
 .Pp
 These values also exist, but may not be standard:
 .Bl -tag -width 6n
+.It Li _SC_CPUSET_SIZE
+Size of the kernel cpuset.
 .It Li _SC_PHYS_PAGES
 The number of pages of physical memory.
 Note that it is possible that the product of this value and the value of
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r218646 - head/sys/compat/linux

2011-02-13 Thread Dmitry Chagin
Author: dchagin
Date: Sun Feb 13 17:56:22 2011
New Revision: 218646
URL: http://svn.freebsd.org/changeset/base/218646

Log:
  The bitset field of freshly created futex should be initialized explicity.
  Otherwise, REQUEUE operations fails.

Modified:
  head/sys/compat/linux/linux_futex.c

Modified: head/sys/compat/linux/linux_futex.c
==
--- head/sys/compat/linux/linux_futex.c Sun Feb 13 17:43:56 2011
(r218645)
+++ head/sys/compat/linux/linux_futex.c Sun Feb 13 17:56:22 2011
(r218646)
@@ -194,6 +194,7 @@ retry:
tmpf = malloc(sizeof(*tmpf), M_FUTEX, M_WAITOK | M_ZERO);
tmpf->f_uaddr = uaddr;
tmpf->f_refcount = 1;
+   tmpf->f_bitset = FUTEX_BITSET_MATCH_ANY;
FUTEX_INIT(tmpf);
TAILQ_INIT(&tmpf->f_waiting_proc);
 
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r218650 - head/games/fortune/datfiles

2011-02-13 Thread Bruce Cran
Author: brucec
Date: Sun Feb 13 18:18:56 2011
New Revision: 218650
URL: http://svn.freebsd.org/changeset/base/218650

Log:
  Move potentially offensive fortune to fortunes-o.
  
  PR:   bin/137702
  MFC after:3 days

Modified:
  head/games/fortune/datfiles/fortunes
  head/games/fortune/datfiles/fortunes-o.real

Modified: head/games/fortune/datfiles/fortunes
==
--- head/games/fortune/datfiles/fortunesSun Feb 13 18:08:53 2011
(r218649)
+++ head/games/fortune/datfiles/fortunesSun Feb 13 18:18:56 2011
(r218650)
@@ -38136,10 +38136,6 @@ couldn't compete successfully with poets
-- Kilgore Trout (Philip J. Farmer) "Venus on the Half
   Shell"
 %
-PLATONIC FRIENDSHIP:
-   What develops when two people get
-   tired of making love to each other.
-%
 Play Rogue, visit exotic locations, meet strange creatures and kill
 them.
 %

Modified: head/games/fortune/datfiles/fortunes-o.real
==
--- head/games/fortune/datfiles/fortunes-o.real Sun Feb 13 18:08:53 2011
(r218649)
+++ head/games/fortune/datfiles/fortunes-o.real Sun Feb 13 18:18:56 2011
(r218650)
@@ -10487,6 +10487,10 @@ Pile driver, n.:
 Planned Parenthood:
The emission Control Center.
 %
+PLATONIC FRIENDSHIP:
+What develops when two people get
+tired of making love to each other.
+%
 Playing poker with busty Ms. Ware,
 He announced as he folded with flair,
"I had four of a kind,
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r218652 - head/sbin/mdconfig

2011-02-13 Thread Bruce Cran
Author: brucec
Date: Sun Feb 13 18:30:17 2011
New Revision: 218652
URL: http://svn.freebsd.org/changeset/base/218652

Log:
  Only print the unit number when invoked with the -n flag.
  
  PR:   bin/144300
  Submitted by: arundel
  MFC after:3 days

Modified:
  head/sbin/mdconfig/mdconfig.c

Modified: head/sbin/mdconfig/mdconfig.c
==
--- head/sbin/mdconfig/mdconfig.c   Sun Feb 13 18:21:41 2011
(r218651)
+++ head/sbin/mdconfig/mdconfig.c   Sun Feb 13 18:30:17 2011
(r218652)
@@ -373,7 +373,7 @@ md_list(char *units, int opt)
found = 1;
}
gc = &pp->lg_config;
-   printf("%s", pp->lg_name);
+   printf("%s", nflag ? pp->lg_name + 2 : pp->lg_name);
if (opt & OPT_VERBOSE || opt & OPT_UNIT) {
type = geom_config_get(gc, "type");
if (strcmp(type, "vnode") == 0)
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r218654 - head/sys/compat/linux

2011-02-13 Thread Dmitry Chagin
Author: dchagin
Date: Sun Feb 13 18:41:40 2011
New Revision: 218654
URL: http://svn.freebsd.org/changeset/base/218654

Log:
  Stop printing the LOR, as this is expected behavior.

Modified:
  head/sys/compat/linux/linux_futex.c

Modified: head/sys/compat/linux/linux_futex.c
==
--- head/sys/compat/linux/linux_futex.c Sun Feb 13 18:35:21 2011
(r218653)
+++ head/sys/compat/linux/linux_futex.c Sun Feb 13 18:41:40 2011
(r218654)
@@ -88,7 +88,7 @@ struct futex_list futex_list;
 
 #define FUTEX_LOCK(f)  sx_xlock(&(f)->f_lck)
 #define FUTEX_UNLOCK(f)sx_xunlock(&(f)->f_lck)
-#define FUTEX_INIT(f)  sx_init_flags(&(f)->f_lck, "ftlk", 0)
+#define FUTEX_INIT(f)  sx_init_flags(&(f)->f_lck, "ftlk", SX_DUPOK)
 #define FUTEX_DESTROY(f)   sx_destroy(&(f)->f_lck)
 #define FUTEX_ASSERT_LOCKED(f) sx_assert(&(f)->f_lck, SA_XLOCKED)
 
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r218655 - head/sys/compat/linux

2011-02-13 Thread Dmitry Chagin
Author: dchagin
Date: Sun Feb 13 18:46:34 2011
New Revision: 218655
URL: http://svn.freebsd.org/changeset/base/218655

Log:
  Remove comment about 'ftlk' LOR.

Modified:
  head/sys/compat/linux/linux_futex.c

Modified: head/sys/compat/linux/linux_futex.c
==
--- head/sys/compat/linux/linux_futex.c Sun Feb 13 18:41:40 2011
(r218654)
+++ head/sys/compat/linux/linux_futex.c Sun Feb 13 18:46:34 2011
(r218655)
@@ -553,8 +553,7 @@ linux_sys_futex(struct thread *td, struc
 
/*
 * To avoid deadlocks return EINVAL if second futex
-* exists at this time. Otherwise create the new futex
-* and ignore false positive LOR which thus happens.
+* exists at this time.
 *
 * Glibc fall back to FUTEX_WAKE in case of any error
 * returned by FUTEX_CMP_REQUEUE.
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r218658 - in head/sys: amd64/linux32 i386/linux

2011-02-13 Thread Dmitry Chagin
Author: dchagin
Date: Sun Feb 13 19:07:48 2011
New Revision: 218658
URL: http://svn.freebsd.org/changeset/base/218658

Log:
  Sort include files in the alphabetical order.

Modified:
  head/sys/amd64/linux32/linux32_sysvec.c
  head/sys/i386/linux/linux_sysvec.c

Modified: head/sys/amd64/linux32/linux32_sysvec.c
==
--- head/sys/amd64/linux32/linux32_sysvec.c Sun Feb 13 19:07:17 2011
(r218657)
+++ head/sys/amd64/linux32/linux32_sysvec.c Sun Feb 13 19:07:48 2011
(r218658)
@@ -76,8 +76,8 @@ __FBSDID("$FreeBSD$");
 
 #include 
 #include 
-#include 
 #include 
+#include 
 #include 
 #include 
 #include 

Modified: head/sys/i386/linux/linux_sysvec.c
==
--- head/sys/i386/linux/linux_sysvec.c  Sun Feb 13 19:07:17 2011
(r218657)
+++ head/sys/i386/linux/linux_sysvec.c  Sun Feb 13 19:07:48 2011
(r218658)
@@ -64,8 +64,8 @@ __FBSDID("$FreeBSD$");
 
 #include 
 #include 
-#include 
 #include 
+#include 
 #include 
 #include 
 #include 
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r218660 - head/sys/dev/acpica/Osd

2011-02-13 Thread Marcel Moolenaar
Author: marcel
Date: Sun Feb 13 19:24:04 2011
New Revision: 218660
URL: http://svn.freebsd.org/changeset/base/218660

Log:
  Use the preload_fetch_addr() and preload_fetch_size() convenience
  functions to obtain the address and size of the overriding DSDT.
  
  Sponsored by: Juniper Networks.

Modified:
  head/sys/dev/acpica/Osd/OsdTable.c

Modified: head/sys/dev/acpica/Osd/OsdTable.c
==
--- head/sys/dev/acpica/Osd/OsdTable.c  Sun Feb 13 19:15:42 2011
(r218659)
+++ head/sys/dev/acpica/Osd/OsdTable.c  Sun Feb 13 19:24:04 2011
(r218660)
@@ -68,29 +68,31 @@ AcpiOsTableOverride(ACPI_TABLE_HEADER *E
 ACPI_TABLE_HEADER **NewTable)
 {
 char modname[] = "acpi_dsdt";
-caddr_t acpi_table, p, s;
+caddr_t acpi_table;
+ACPI_TABLE_HEADER *hdr;
+size_t sz;
 
 if (ExistingTable == NULL || NewTable == NULL)
return (AE_BAD_PARAMETER);
 
+*NewTable = NULL;
 #ifdef notyet
 for (int i = 0; i < ACPI_NAME_SIZE; i++)
modname[i + 5] = tolower(ExistingTable->Signature[i]);
 #else
 /* If we're not overriding the DSDT, just return. */
-if (strncmp(ExistingTable->Signature, ACPI_SIG_DSDT, ACPI_NAME_SIZE) != 0) 
{
-   *NewTable = NULL;
+if (strncmp(ExistingTable->Signature, ACPI_SIG_DSDT, ACPI_NAME_SIZE) != 0)
return (AE_OK);
-}
 #endif
 
-if ((acpi_table = preload_search_by_type(modname)) != NULL &&
-   (p = preload_search_info(acpi_table, MODINFO_ADDR)) != NULL &&
-   (s = preload_search_info(acpi_table, MODINFO_SIZE)) != NULL &&
-   *(size_t *)s != 0)
-   *NewTable = *(ACPI_TABLE_HEADER **)p;
-else
-   *NewTable = NULL;
+acpi_table = preload_search_by_type(modname);
+if (acpi_table == NULL)
+   return (AE_OK);
+
+hdr = preload_fetch_addr(acpi_table);
+sz = preload_fetch_size(acpi_table);
+if (hdr != NULL && sz != 0)
+   *NewTable = hdr;
 
 return (AE_OK);
 }
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r218661 - head/sys/dev/fb

2011-02-13 Thread Marcel Moolenaar
Author: marcel
Date: Sun Feb 13 19:25:48 2011
New Revision: 218661
URL: http://svn.freebsd.org/changeset/base/218661

Log:
  Use the preload_fetch_addr() and preload_fetch_size() convenience
  functions to obtain the address and size of the bitmap splash image.
  
  Sponsored by: Juniper Networks.

Modified:
  head/sys/dev/fb/splash.c

Modified: head/sys/dev/fb/splash.c
==
--- head/sys/dev/fb/splash.cSun Feb 13 19:24:04 2011(r218660)
+++ head/sys/dev/fb/splash.cSun Feb 13 19:25:48 2011(r218661)
@@ -59,26 +59,28 @@ static void *splash_arg;
 static int
 splash_find_data(splash_decoder_t *decoder)
 {
-caddr_t image_module;
-   caddr_t p;
+   caddr_t image_module;
+   void *ptr;
+   size_t sz;
 
if (decoder->data_type == NULL)
-   return 0;
+   return (0);
+
image_module = preload_search_by_type(decoder->data_type);
if (image_module == NULL)
-   return ENOENT;
-   p = preload_search_info(image_module, MODINFO_ADDR);
-   if (p == NULL)
-   return ENOENT;
-   decoder->data = *(void **)p;
-   p = preload_search_info(image_module, MODINFO_SIZE);
-   if (p == NULL)
-   return ENOENT;
-   decoder->data_size = *(size_t *)p;
+   return (ENOENT);
+
+   ptr = preload_fetch_addr(image_module);
+   sz = preload_fetch_size(image_module);
+   if (ptr == NULL || sz == 0)
+   return (ENOENT);
+
if (bootverbose)
-   printf("splash: image@%p, size:%lu\n",
-  (void *)decoder->data, (long)decoder->data_size);
-   return 0;
+   printf("splash: image@%p, size:%zu\n", ptr, sz);
+
+   decoder->data = ptr;
+   decoder->data_size = sz;
+   return (0);
 }
 
 static int
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r218662 - head/sys/dev/pci

2011-02-13 Thread Marcel Moolenaar
Author: marcel
Date: Sun Feb 13 19:26:51 2011
New Revision: 218662
URL: http://svn.freebsd.org/changeset/base/218662

Log:
  Use the preload_fetch_addr() and preload_fetch_size() convenience
  functions to obtain the address and size of the PCI vendor data.
  
  Sponsored by: Juniper Networks.

Modified:
  head/sys/dev/pci/pci.c

Modified: head/sys/dev/pci/pci.c
==
--- head/sys/dev/pci/pci.c  Sun Feb 13 19:25:48 2011(r218661)
+++ head/sys/dev/pci/pci.c  Sun Feb 13 19:26:51 2011(r218662)
@@ -3056,15 +3056,20 @@ pci_resume(device_t dev)
 static void
 pci_load_vendor_data(void)
 {
-   caddr_t vendordata, info;
-
-   if ((vendordata = preload_search_by_type("pci_vendor_data")) != NULL) {
-   info = preload_search_info(vendordata, MODINFO_ADDR);
-   pci_vendordata = *(char **)info;
-   info = preload_search_info(vendordata, MODINFO_SIZE);
-   pci_vendordata_size = *(size_t *)info;
-   /* terminate the database */
-   pci_vendordata[pci_vendordata_size] = '\n';
+   caddr_t data;
+   void *ptr;
+   size_t sz;
+
+   data = preload_search_by_type("pci_vendor_data");
+   if (data != NULL) {
+   ptr = preload_fetch_addr(data);
+   sz = preload_fetch_size(data);
+   if (ptr != NULL && sz != 0) {
+   pci_vendordata = ptr;
+   pci_vendordata_size = sz;
+   /* terminate the database */
+   pci_vendordata[pci_vendordata_size] = '\n';
+   }
}
 }
 
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r218663 - head/sys/geom/eli

2011-02-13 Thread Marcel Moolenaar
Author: marcel
Date: Sun Feb 13 19:34:48 2011
New Revision: 218663
URL: http://svn.freebsd.org/changeset/base/218663

Log:
  Use the preload_fetch_addr() and preload_fetch_size() convenience
  functions to obtain the address and size of the preloaded key files.
  
  Sponsored by: Juniper Networks.

Modified:
  head/sys/geom/eli/g_eli.c

Modified: head/sys/geom/eli/g_eli.c
==
--- head/sys/geom/eli/g_eli.c   Sun Feb 13 19:26:51 2011(r218662)
+++ head/sys/geom/eli/g_eli.c   Sun Feb 13 19:34:48 2011(r218663)
@@ -981,8 +981,9 @@ g_eli_destroy_geom(struct gctl_req *req 
 static int
 g_eli_keyfiles_load(struct hmac_ctx *ctx, const char *provider)
 {
-   u_char *keyfile, *data, *size;
+   u_char *keyfile, *data;
char *file, name[64];
+   size_t size;
int i;
 
for (i = 0; ; i++) {
@@ -990,15 +991,14 @@ g_eli_keyfiles_load(struct hmac_ctx *ctx
keyfile = preload_search_by_type(name);
if (keyfile == NULL)
return (i); /* Return number of loaded keyfiles. */
-   data = preload_search_info(keyfile, MODINFO_ADDR);
+   data = preload_fetch_addr(keyfile);
if (data == NULL) {
G_ELI_DEBUG(0, "Cannot find key file data for %s.",
name);
return (0);
}
-   data = *(void **)data;
-   size = preload_search_info(keyfile, MODINFO_SIZE);
-   if (size == NULL) {
+   size = preload_fetch_size(keyfile);
+   if (size == 0) {
G_ELI_DEBUG(0, "Cannot find key file size for %s.",
name);
return (0);
@@ -1011,15 +1011,16 @@ g_eli_keyfiles_load(struct hmac_ctx *ctx
}
G_ELI_DEBUG(1, "Loaded keyfile %s for %s (type: %s).", file,
provider, name);
-   g_eli_crypto_hmac_update(ctx, data, *(size_t *)size);
+   g_eli_crypto_hmac_update(ctx, data, size);
}
 }
 
 static void
 g_eli_keyfiles_clear(const char *provider)
 {
-   u_char *keyfile, *data, *size;
+   u_char *keyfile, *data;
char name[64];
+   size_t size;
int i;
 
for (i = 0; ; i++) {
@@ -1027,12 +1028,10 @@ g_eli_keyfiles_clear(const char *provide
keyfile = preload_search_by_type(name);
if (keyfile == NULL)
return;
-   data = preload_search_info(keyfile, MODINFO_ADDR);
-   size = preload_search_info(keyfile, MODINFO_SIZE);
-   if (data == NULL || size == NULL)
-   continue;
-   data = *(void **)data;
-   bzero(data, *(size_t *)size);
+   data = preload_fetch_addr(keyfile);
+   size = preload_fetch_size(keyfile);
+   if (data != NULL && size != 0)
+   bzero(data, size);
}
 }
 
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r218665 - head/sys/cddl/compat/opensolaris/kern

2011-02-13 Thread Marcel Moolenaar
Author: marcel
Date: Sun Feb 13 19:46:55 2011
New Revision: 218665
URL: http://svn.freebsd.org/changeset/base/218665

Log:
  Use the preload_fetch_addr() and preload_fetch_size() convenience
  functions to obtain the address and size of the preloaded pool
  configuration file/repository.
  
  Sponsored by: Juniper Networks.

Modified:
  head/sys/cddl/compat/opensolaris/kern/opensolaris_kobj.c

Modified: head/sys/cddl/compat/opensolaris/kern/opensolaris_kobj.c
==
--- head/sys/cddl/compat/opensolaris/kern/opensolaris_kobj.cSun Feb 13 
19:37:05 2011(r218664)
+++ head/sys/cddl/compat/opensolaris/kern/opensolaris_kobj.cSun Feb 13 
19:46:55 2011(r218665)
@@ -200,10 +200,9 @@ kobj_read_file_loader(struct _buf *file,
 {
char *ptr;
 
-   ptr = preload_search_info(file->ptr, MODINFO_ADDR);
+   ptr = preload_fetch_addr(file->ptr);
if (ptr == NULL)
return (ENOENT);
-   ptr = *(void **)ptr;
bcopy(ptr + off, buf, size);
return (0);
 }
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r218666 - in head/sys/arm: at91 econa sa11x0 xscale/i80321 xscale/ixp425

2011-02-13 Thread Olivier Houchard
Author: cognet
Date: Sun Feb 13 20:02:46 2011
New Revision: 218666
URL: http://svn.freebsd.org/changeset/base/218666

Log:
  Call init_param1() much earlier, so that msgbufsize is non-zero when we want
  to map and use the msgbuf.

Modified:
  head/sys/arm/at91/at91_machdep.c
  head/sys/arm/econa/econa_machdep.c
  head/sys/arm/sa11x0/assabet_machdep.c
  head/sys/arm/xscale/i80321/ep80219_machdep.c
  head/sys/arm/xscale/i80321/iq31244_machdep.c
  head/sys/arm/xscale/ixp425/avila_machdep.c

Modified: head/sys/arm/at91/at91_machdep.c
==
--- head/sys/arm/at91/at91_machdep.cSun Feb 13 19:46:55 2011
(r218665)
+++ head/sys/arm/at91/at91_machdep.cSun Feb 13 20:02:46 2011
(r218666)
@@ -234,7 +234,7 @@ at91_ramsize(void)
bw = (cr & AT91SAM9G20_SDRAMC_CR_DBW_16) ? 1 : 2;
}
 
-   return (1 << (cols + rows + banks + bw));
+   return ((1 << (cols + rows + banks + bw));
 }
 
 void *
@@ -302,6 +302,8 @@ initarm(void *arg, void *arg2)
valloc_pages(kernelstack, KSTACK_PAGES);
valloc_pages(msgbufpv, round_page(msgbufsize) / PAGE_SIZE);
 
+   /* Do basic tuning, hz etc */
+   init_param1();
/*
 * Now we start construction of the L1 page table
 * We start by mapping the L2 page tables into the L1.
@@ -440,8 +442,6 @@ initarm(void *arg, void *arg2)
phys_avail[i++] = PHYSADDR + memsize;
phys_avail[i++] = 0;
phys_avail[i++] = 0;
-   /* Do basic tuning, hz etc */
-   init_param1();
init_param2(physmem);
kdb_init();
return ((void *)(kernelstack.pv_va + USPACE_SVC_STACK_TOP -

Modified: head/sys/arm/econa/econa_machdep.c
==
--- head/sys/arm/econa/econa_machdep.c  Sun Feb 13 19:46:55 2011
(r218665)
+++ head/sys/arm/econa/econa_machdep.c  Sun Feb 13 20:02:46 2011
(r218666)
@@ -208,6 +208,9 @@ initarm(void *arg, void *arg2)
pcpu_init(pcpup, 0, sizeof(struct pcpu));
PCPU_SET(curthread, &thread0);
 
+   /* Do basic tuning, hz etc */
+   init_param1();
+   
 
freemempos = (lastaddr + PAGE_MASK) & ~PAGE_MASK;
/* Define a macro to simplify memory allocation */
@@ -384,8 +387,6 @@ initarm(void *arg, void *arg2)
phys_avail[i++] = PHYSADDR + memsize;
phys_avail[i++] = 0;
phys_avail[i++] = 0;
-   /* Do basic tuning, hz etc */
-   init_param1();
init_param2(physmem);
kdb_init();
 

Modified: head/sys/arm/sa11x0/assabet_machdep.c
==
--- head/sys/arm/sa11x0/assabet_machdep.c   Sun Feb 13 19:46:55 2011
(r218665)
+++ head/sys/arm/sa11x0/assabet_machdep.c   Sun Feb 13 20:02:46 2011
(r218666)
@@ -226,6 +226,9 @@ initarm(void *arg, void *arg2)
pcpu_init(pc, 0, sizeof(struct pcpu));
PCPU_SET(curthread, &thread0);
 
+   /* Do basic tuning, hz etc */
+   init_param1();
+   
physical_start = (vm_offset_t) KERNBASE;
physical_end =  lastaddr;
physical_freestart = (((vm_offset_t)physical_end) + PAGE_MASK) & 
~PAGE_MASK;
@@ -408,8 +411,6 @@ initarm(void *arg, void *arg2)
mutex_init();
pmap_bootstrap(freemempos, 0xd000, &kernel_l1pt);
 
-   /* Do basic tuning, hz etc */
-   init_param1();
init_param2(physmem);
kdb_init();
return ((void *)(kernelstack.pv_va + USPACE_SVC_STACK_TOP -

Modified: head/sys/arm/xscale/i80321/ep80219_machdep.c
==
--- head/sys/arm/xscale/i80321/ep80219_machdep.cSun Feb 13 19:46:55 
2011(r218665)
+++ head/sys/arm/xscale/i80321/ep80219_machdep.cSun Feb 13 20:02:46 
2011(r218666)
@@ -210,6 +210,9 @@ initarm(void *arg, void *arg2)
(var) = freemempos; \
memset((char *)(var), 0, ((np) * PAGE_SIZE));
 
+   /* Do basic tuning, hz etc */
+   init_param1();
+
while (((freemempos - L1_TABLE_SIZE) & (L1_TABLE_SIZE - 1)) != 0)
freemempos -= PAGE_SIZE;
valloc_pages(kernel_l1pt, L1_TABLE_SIZE / PAGE_SIZE);
@@ -411,8 +414,6 @@ initarm(void *arg, void *arg2)
phys_avail[i++] = 0;
phys_avail[i] = 0;

-   /* Do basic tuning, hz etc */
-   init_param1();
init_param2(physmem);
kdb_init();
return ((void *)(kernelstack.pv_va + USPACE_SVC_STACK_TOP -

Modified: head/sys/arm/xscale/i80321/iq31244_machdep.c
==
--- head/sys/arm/xscale/i80321/iq31244_machdep.cSun Feb 13 19:46:55 
2011(r218665)
+++ head/sys/arm/xscale/i80321/iq31244_machdep.cSun Feb 13 20:02:46 
2011(r218666)
@@ -200,6 +200,9 @@ initarm(v

svn commit: r218667 - head/sys/arm/at91

2011-02-13 Thread Olivier Houchard
Author: cognet
Date: Sun Feb 13 20:04:29 2011
New Revision: 218667
URL: http://svn.freebsd.org/changeset/base/218667

Log:
  Oops, wasn't supposed to commit this.

Modified:
  head/sys/arm/at91/at91_machdep.c

Modified: head/sys/arm/at91/at91_machdep.c
==
--- head/sys/arm/at91/at91_machdep.cSun Feb 13 20:02:46 2011
(r218666)
+++ head/sys/arm/at91/at91_machdep.cSun Feb 13 20:04:29 2011
(r218667)
@@ -234,7 +234,7 @@ at91_ramsize(void)
bw = (cr & AT91SAM9G20_SDRAMC_CR_DBW_16) ? 1 : 2;
}
 
-   return ((1 << (cols + rows + banks + bw));
+   return (1 << (cols + rows + banks + bw));
 }
 
 void *
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


Re: svn commit: r218603 - head/sbin/tunefs

2011-02-13 Thread Ivan Voras
On 13 February 2011 11:51, Bruce Evans  wrote:
> On Sat, 12 Feb 2011, Konstantin Belousov wrote:
>
>> Log:
>>  When creating a directory entry for the journal, always read at least
>>  the fragment, and write the full block. Reading less might not work
>>  due to device sector size bigger then size of direntries in the
>>  last directory fragment.
>
> I think it should always write full fragments too (and the kernel should
> always read/write in units of fragments, not sectors of any size).

Or at least One Single Variable, preferably recorded in the
superblock, so when the need arises there's only one thing to change
(so it might as well be fragment size in case of UFS).

There is currently nothing technically wrong with what this commit
does, but it's pretty much a certainty that future will be more
strange than today and future developers may forget there are two
places they need to change.
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r218668 - head/sys/compat/linux

2011-02-13 Thread Dmitry Chagin
Author: dchagin
Date: Sun Feb 13 20:07:48 2011
New Revision: 218668
URL: http://svn.freebsd.org/changeset/base/218668

Log:
  Sort include files in the alphabetical order.

Modified:
  head/sys/compat/linux/linux_futex.c

Modified: head/sys/compat/linux/linux_futex.c
==
--- head/sys/compat/linux/linux_futex.c Sun Feb 13 20:04:29 2011
(r218667)
+++ head/sys/compat/linux/linux_futex.c Sun Feb 13 20:07:48 2011
(r218668)
@@ -60,8 +60,8 @@ __KERNEL_RCSID(1, "$NetBSD: linux_futex.
 #include 
 #include 
 #endif
-#include 
 #include 
+#include 
 #include 
 
 MALLOC_DEFINE(M_FUTEX, "futex", "Linux futexes");
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


Re: svn commit: r218652 - head/sbin/mdconfig

2011-02-13 Thread Alexander Best
On Sun Feb 13 11, Bruce Cran wrote:
> Author: brucec
> Date: Sun Feb 13 18:30:17 2011
> New Revision: 218652
> URL: http://svn.freebsd.org/changeset/base/218652
> 
> Log:
>   Only print the unit number when invoked with the -n flag.

wow. i completely forget about this one. ;) thanks for taking care of it. :)

>   
>   PR: bin/144300
>   Submitted by:   arundel
>   MFC after:  3 days
> 
> Modified:
>   head/sbin/mdconfig/mdconfig.c
> 
> Modified: head/sbin/mdconfig/mdconfig.c
> ==
> --- head/sbin/mdconfig/mdconfig.c Sun Feb 13 18:21:41 2011
> (r218651)
> +++ head/sbin/mdconfig/mdconfig.c Sun Feb 13 18:30:17 2011
> (r218652)
> @@ -373,7 +373,7 @@ md_list(char *units, int opt)
>   found = 1;
>   }
>   gc = &pp->lg_config;
> - printf("%s", pp->lg_name);
> + printf("%s", nflag ? pp->lg_name + 2 : pp->lg_name);
>   if (opt & OPT_VERBOSE || opt & OPT_UNIT) {
>   type = geom_config_get(gc, "type");
>   if (strcmp(type, "vnode") == 0)

-- 
a13x
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


Re: svn commit: r218371 - head/sys/netinet

2011-02-13 Thread Robert Watson


On Sun, 6 Feb 2011, Randall Stewart wrote:


Author: rrs
Date: Sun Feb  6 13:17:40 2011
New Revision: 218371
URL: http://svn.freebsd.org/changeset/base/218371

Log:
 1) Use same scheme Michael and I discussed for a selected for a flowid
 2) If flowid is not set, arrange so it is stored.
 3) If flowid is set by lower layer, use it.


Beware that selecting a flowid at this level has implications not just for 
load balancing, but also CPU affinity in the transmit path for multiqueue 
drivers such as cxgb, etc.


With the pcbgroup patch going into the tree soon, flowids will grow types to 
be set by device drivers, network layers, etc, so that other layers can use 
those semantics.  Once we do that, we'll need to retain that at the connection 
level, etc, as we..


Robert



 MFC after: 3 Months

Modified:
 head/sys/netinet/sctp_input.c

Modified: head/sys/netinet/sctp_input.c
==
--- head/sys/netinet/sctp_input.c   Sun Feb  6 12:21:29 2011
(r218370)
+++ head/sys/netinet/sctp_input.c   Sun Feb  6 13:17:40 2011
(r218371)
@@ -5946,32 +5946,32 @@ sctp_input(struct mbuf *m, int off)
struct sctphdr *sh;
int offset;
int cpu_to_use;
-   uint32_t tag;
+   uint32_t flowid, tag;

if (mp_ncpus > 1) {
-   ip = mtod(m, struct ip *);
-   offset = off + sizeof(*sh);
-   if (SCTP_BUF_LEN(m) < offset) {
-   if ((m = m_pullup(m, offset)) == 0) {
-   SCTP_STAT_INCR(sctps_hdrops);
-   return;
-   }
-   ip = mtod(m, struct ip *);
-   }
-   sh = (struct sctphdr *)((caddr_t)ip + off);
-   if (sh->v_tag) {
-   tag = htonl(sh->v_tag);
+   if (m->m_flags & M_FLOWID) {
+   flowid = m->m_pkthdr.flowid;
} else {
/*
-* Distribute new INIT's to all CPU's don't just
-* pick on 0.
+* No flow id built by lower layers fix it so we
+* create one.
 */
-   struct timeval tv;
-
-   (void)SCTP_GETTIME_TIMEVAL(&tv);
-   tag = (uint32_t) tv.tv_usec;
+   ip = mtod(m, struct ip *);
+   offset = off + sizeof(*sh);
+   if (SCTP_BUF_LEN(m) < offset) {
+   if ((m = m_pullup(m, offset)) == 0) {
+   SCTP_STAT_INCR(sctps_hdrops);
+   return;
+   }
+   ip = mtod(m, struct ip *);
+   }
+   sh = (struct sctphdr *)((caddr_t)ip + off);
+   tag = htonl(sh->v_tag);
+   flowid = tag ^ ntohs(sh->dest_port) ^ 
ntohs(sh->src_port);
+   m->m_pkthdr.flowid = flowid;
+   m->m_flags |= M_FLOWID;
}
-   cpu_to_use = sctp_cpuarry[tag % mp_ncpus];
+   cpu_to_use = sctp_cpuarry[flowid % mp_ncpus];
sctp_queue_to_mcore(m, off, cpu_to_use);
return;
}


___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r218670 - head/sys/vm

2011-02-13 Thread Konstantin Belousov
Author: kib
Date: Sun Feb 13 21:52:26 2011
New Revision: 218670
URL: http://svn.freebsd.org/changeset/base/218670

Log:
  Lock the vnode around clearing of VV_TEXT flag. Remove mp_fixme() note
  mentioning that vnode lock is needed.
  
  Reviewed by:  alc
  Tested by:pho
  MFC after:1 week

Modified:
  head/sys/vm/vm_object.c

Modified: head/sys/vm/vm_object.c
==
--- head/sys/vm/vm_object.c Sun Feb 13 21:12:05 2011(r218669)
+++ head/sys/vm/vm_object.c Sun Feb 13 21:52:26 2011(r218670)
@@ -437,16 +437,21 @@ vm_object_vndeallocate(vm_object_t objec
}
 #endif
 
-   object->ref_count--;
-   if (object->ref_count == 0) {
-   mp_fixme("Unlocked vflag access.");
-   vp->v_vflag &= ~VV_TEXT;
+   if (object->ref_count > 1) {
+   object->ref_count--;
+   VM_OBJECT_UNLOCK(object);
+   /* vrele may need the vnode lock. */
+   vrele(vp);
+   } else {
+   VM_OBJECT_UNLOCK(object);
+   vn_lock(vp, LK_EXCLUSIVE | LK_RETRY);
+   VM_OBJECT_LOCK(object);
+   object->ref_count--;
+   if (object->ref_count == 0)
+   vp->v_vflag &= ~VV_TEXT;
+   VM_OBJECT_UNLOCK(object);
+   vput(vp);
}
-   VM_OBJECT_UNLOCK(object);
-   /*
-* vrele may need a vop lock
-*/
-   vrele(vp);
 }
 
 /*
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r218672 - head/gnu/usr.bin/groff/tmac stable/7/gnu/usr.bin/groff/tmac stable/8/gnu/usr.bin/groff/tmac

2011-02-13 Thread Ulrich Spoerlein
Author: uqs
Date: Sun Feb 13 22:17:49 2011
New Revision: 218672
URL: http://svn.freebsd.org/changeset/base/218672

Log:
  Add back soon-to-be-release FreeBSD 7.4 which got clobbered in the previous
  merges.

Modified:
  head/gnu/usr.bin/groff/tmac/mdoc.local

Changes in other areas also in this revision:
Modified:
  stable/7/gnu/usr.bin/groff/tmac/mdoc.local
  stable/8/gnu/usr.bin/groff/tmac/mdoc.local

Modified: head/gnu/usr.bin/groff/tmac/mdoc.local
==
--- head/gnu/usr.bin/groff/tmac/mdoc.local  Sun Feb 13 22:09:33 2011
(r218671)
+++ head/gnu/usr.bin/groff/tmac/mdoc.local  Sun Feb 13 22:17:49 2011
(r218672)
@@ -74,6 +74,7 @@
 .ds doc-default-operating-system FreeBSD\~9.0
 .
 .\" FreeBSD releases not found in doc-common
+.ds doc-operating-system-FreeBSD-7.47.4
 .ds doc-operating-system-FreeBSD-8.28.2
 .ds doc-operating-system-FreeBSD-9.09.0
 .
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


Re: svn commit: r218421 - head/usr.bin/gzip

2011-02-13 Thread Ulrich Spörlein
On Mon, 07.02.2011 at 22:33:39 +, Glen Barber wrote:
> Author: gjb (doc committer)
> Date: Mon Feb  7 22:33:39 2011
> New Revision: 218421
> URL: http://svn.freebsd.org/changeset/base/218421
> 
> Log:
>   Update manpage to remove CRT reference.

Would you mind tackling these as well?

bin/stty/stty.1
share/man/man4/acpi_panasonic.4
usr.bin/colcrt/colcrt.1  (I think this tool should be removed)
usr.bin/ul/ul.1

Cheers
Uli
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


Re: svn commit: r218421 - head/usr.bin/gzip

2011-02-13 Thread Glen Barber
Hi,

On 2/13/11 5:27 PM, Ulrich Spörlein wrote:
>> Log:
>>   Update manpage to remove CRT reference.
> 
> Would you mind tackling these as well?
> 
> bin/stty/stty.1
> share/man/man4/acpi_panasonic.4
> usr.bin/colcrt/colcrt.1  (I think this tool should be removed)
> usr.bin/ul/ul.1
> 

Sure thing.

Cheers,

-- 
Glen Barber | g...@freebsd.org
FreeBSD Documentation Project
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


Re: svn commit: r218421 - head/usr.bin/gzip

2011-02-13 Thread Glen Barber
On 2/13/11 5:58 PM, Glen Barber wrote:
> Hi,
> 
> On 2/13/11 5:27 PM, Ulrich Spörlein wrote:
>>> Log:
>>>   Update manpage to remove CRT reference.
>>
>> Would you mind tackling these as well?
>>

>> share/man/man4/acpi_panasonic.4

Hmm.. acpi_panasonic(4) appears to have a mode which differentiates
between LCD and CRT modes.  Do you think this manual should be left as-is?

Cheers,

-- 
Glen Barber | g...@freebsd.org
FreeBSD Documentation Project
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"


svn commit: r218673 - head/sys/sys

2011-02-13 Thread Alan Cox
Author: alc
Date: Mon Feb 14 02:37:27 2011
New Revision: 218673
URL: http://svn.freebsd.org/changeset/base/218673

Log:
  Retire mp_fixme().  It's no longer used.

Modified:
  head/sys/sys/mutex.h

Modified: head/sys/sys/mutex.h
==
--- head/sys/sys/mutex.hSun Feb 13 22:17:49 2011(r218672)
+++ head/sys/sys/mutex.hMon Feb 14 02:37:27 2011(r218673)
@@ -74,16 +74,6 @@
  */
 #defineMTX_DESTROYED   (MTX_CONTESTED | MTX_UNOWNED)
 
-#endif /* _KERNEL */
-
-/*
- * XXX: Friendly reminder to fix things in MP code that is presently being
- * XXX: worked on.
- */
-#define mp_fixme(string)
-
-#ifdef _KERNEL
-
 /*
  * Prototypes
  *
___
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"