Re: svn commit: r251886 - in head: contrib/apr contrib/apr-util contrib/serf contrib/sqlite3 contrib/subversion share/mk usr.bin usr.bin/svn usr.bin/svn/lib usr.bin/svn/lib/libapr usr.bin/svn/lib/liba

2013-06-20 Thread Gennady Proskurin
On Thu, Jun 20, 2013 at 11:49:13PM +0930, Daniel O'Connor wrote:
 
 On 20/06/2013, at 23:03, Julian Elischer jul...@freebsd.org wrote:
  And do you think that the sort of user who is sufficiently engaged with 
  the project to do this is the sort of user who would not be willing to do 
  so if it meant installing the subversion port?  If so, then there is a 
  clear case for svnlite.
  
  I think that it lowers the barrier.. once you start bringing ports into the 
  picture you start running the risk of port revision hell.
 
 
 If there is a statically linked port  corresponding package then the barrier 
 is almost as low, but has a few other advantages that other people have 
 listed.
 
 That approach has a small footprint (binary + man page), is always up to date 
 (so the VCS infrastructure is not tied to the earliest version of SVN) and 
 doesn't have any dependencies.

svnlite (1.8.0-rc3 in base system) and subversion (1.7.10 from ports) are not
interoperable, they create incompatible repositories (at least by default).
Not a problem for me personally, I use git mirrors, just my 5 cents.
Details below.


Here the freebsd repo checked out by subversion port
 svn info
Path: .
Working Copy Root Path: /usr/src/freebsd-head.svn
URL: http://svn.freebsd.org/base/head
Repository Root: http://svn.freebsd.org/base
Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Revision: 245668
Node Kind: directory
Schedule: normal
Last Changed Author: joel
Last Changed Rev: 245667
Last Changed Date: 2013-01-19 11:07:05 +0400 (Sat, 19 Jan 2013)

Now trying to work with svnlite:
 svnlite info
svn: E155036: Please see the 'svn upgrade' command
svn: E155036: The working copy at '/usr/src/freebsd-head.svn'
is too old (format 29) to work with client version '1.8.0-rc3 (Release 
Candidate 3)' (expects format 31). You need to upgrade the working copy first.


Creating repo with svnlite and trying to run svn on it:
 svnlite co http://svn.freebsd.org/base/head/bin/cat
Acat/Makefile
Acat/cat.1
Acat/cat.c
Checked out revision 252033.
 cd cat
 svnlite info
Path: .
Working Copy Root Path: /tmp/src-test/cat
URL: http://svn.freebsd.org/base/head/bin/cat
Relative URL: ^/head/bin/cat
Repository Root: http://svn.freebsd.org/base
Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Revision: 252033
Node Kind: directory
Schedule: normal
Last Changed Author: eadler
Last Changed Rev: 249804
Last Changed Date: 2013-04-23 17:03:11 +0400 (Tue, 23 Apr 2013)

 svn info
svn: E155021: This client is too old to work with the working copy at
'/tmp/src-test/cat' (format 31).
You need to get a newer Subversion client. For more details, see
  http://subversion.apache.org/faq.html#working-copy-format-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


Re: svn commit: r251741 - head/sys/contrib/dev/ath/ath_hal/ar9300

2013-06-19 Thread Gennady Proskurin
Replying to random ath commit.

Now my ath wireless device does not work. It was broken some time after 8 Jun
(after my last update at 8 Jun it worked, now after today's update to r251945
it does not).

It spams log and console with messages:

Jun 19 10:04:27 gpr kernel: ath0: stuck beacon; resetting (bmiss count 4)
Jun 19 10:04:58 gpr last message repeated 101 times
Jun 19 10:05:42 gpr last message repeated 143 times
Jun 19 10:05:42 gpr kernel: ath0: ath_raw_xmit: sc_inreset_cnt  0; bailing
Jun 19 10:05:42 gpr kernel: ath0: stuck beacon; resetting (bmiss count 4)
Jun 19 10:05:47 gpr last message repeated 11 times
Jun 19 10:05:47 gpr kernel: ath0: ath_raw_xmit: sc_inreset_cnt  0; bailing
Jun 19 10:05:47 gpr kernel: ath0: ath_raw_xmit: sc_inreset_cnt  0; bailing
Jun 19 10:05:47 gpr kernel: ath0: stuck beacon; resetting (bmiss count 4)
Jun 19 10:05:53 gpr last message repeated 19 times
...
Jun 19 10:06:20 gpr kernel: ath0: stuck beacon; resetting (bmiss count 4)
Jun 19 10:06:21 gpr last message repeated 4 times
Jun 19 10:06:22 gpr kernel: ath0: ath_tx_should_swq_frame: f0:4f:7c:fc:b3:22: 
Node is asleep; sending mgmt (type=0, subtype=176)
Jun 19 10:06:22 gpr kernel: ath0: ath_tx_should_swq_frame: f0:4f:7c:fc:b3:22: 
Node is asleep; sending mgmt (type=0, subtype=176)
Jun 19 10:06:22 gpr kernel: ath0: stuck beacon; resetting (bmiss count 4)
Jun 19 10:06:23 gpr kernel: ath0: stuck beacon; resetting (bmiss count 4)
Jun 19 10:06:23 gpr kernel: ath0: ath_tx_node_wakeup: an=0xff8002322000: 
node was already awake
Jun 19 10:06:24 gpr kernel: ath0: stuck beacon; resetting (bmiss count 4)
Jun 19 10:06:25 gpr kernel: ath0: stuck beacon; resetting (bmiss count 4)


# uname -a
FreeBSD gpr.nnz-home.ru 10.0-CURRENT FreeBSD 10.0-CURRENT #0 r251945+1330981:
Wed Jun 19 08:09:32 MSK 2013
g...@gpr.nnz-home.ru:/usr/obj/usr/src/freebsd-head/sys/GPR  amd64

Boot log device info:
Jun 19 10:04:18 gpr kernel: ath0: Atheros 5212 mem 0xfbdf-0xfbdf irq 
19 at device 10.0 on pci0
Jun 19 10:04:18 gpr kernel: ath0: AR2413 mac 7.9 RF2413 phy 4.5
Jun 19 10:04:18 gpr kernel: ath0: 2GHz radio: 0x; 5GHz radio: 0x0056

# pciconf -lv
ath0@pci0:0:10:0:   class=0x02 card=0x2051168c chip=0x0013168c rev=0x01 
hdr=0x00
vendor = 'Atheros Communications Inc.'
device = 'AR5212/AR5213 Wireless Network Adapter'
class  = network
subclass   = ethernet

# rc.conf
wlans_ath0=wlan0
create_args_wlan0=wlandev ath0 wlanmode hostap
ifconfig_wlan0=10.X.X.X/24
hostapd_enable=YES

I can do additional tests or submit more info, if necessary.

On Fri, Jun 14, 2013 at 08:15:28AM +, Adrian Chadd wrote:
 Author: adrian
 Date: Fri Jun 14 08:15:28 2013
 New Revision: 251741
 URL: http://svnweb.freebsd.org/changeset/base/251741
 
 Log:
   The AR9300 HAL uses this config to program AR_PHY_SWITCH_COM_2 on AR9485
   NICs which have bluetooth coexistence enabled.
   
   The WB225 NIC has the common antenna switch configuration set to 0x0 which
   disables all external switch bit setting. This obviously won't work when
   doing coexistence.
   
   This value is a magic value from the windows .inf files. It _looks_ right
   but I haven't yet verified it - unfortunately my AR9285+AR3012 BT combo
   has an earlier BT device which doesn't actually _have_ firmware on it.
   So I have to fix ath3kfw to handle loading in firmware into the newer
   NICs before I can finish testing this.
   
   This may not hold true for CUS198, which is another custom AR9485 board.
 
 Modified:
   head/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_freebsd.c
 
 Modified: head/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_freebsd.c
 ==
 --- head/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_freebsd.c  Fri Jun 14 
 08:13:21 2013(r251740)
 +++ head/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_freebsd.c  Fri Jun 14 
 08:15:28 2013(r251741)
 @@ -249,6 +249,9 @@ ar9300_attach_freebsd_ops(struct ath_hal
   /* LNA diversity functions */
   ah-ah_divLnaConfGet = ar9300_ant_div_comb_get_config;
   ah-ah_divLnaConfSet = ar9300_ant_div_comb_set_config;
 +
 + /* Setup HAL configuration defaults */
 + ah-ah_config.ath_hal_ant_ctrl_comm2g_switch_enable = 0x000bbb88;
  }
  
  HAL_BOOL
 ___
 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-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: r250700 - in head/sys: conf net netinet6 sys

2013-05-17 Thread Gennady Proskurin
On Thu, May 16, 2013 at 04:20:18PM +, Julian Elischer wrote:

 +#define  m_fibnumm_hdr.mh_nextpkt
Are you sure this is correct?
Shouldn't it be something like M_dat.MH.MH_pkthdr.fibnum or m_pkthdr.fibnum ?

___
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: r249484 - head/lib

2013-04-15 Thread Gennady Proskurin
Here is the quote from r231336 commit message:
===
commit be984b719cbcb225dc4afaf9f52b38fb882a09d3
Author: kientzle kientzle@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
Date:   Fri Feb 10 05:05:42 2012 +

Implement -print-file-name=include (which is undocumented
but used by some Linux boot loaders).  This option prints
out the directory holding the include files needed by
a freestanding program.  The default implementation of
this doesn't work on FreeBSD because of the different
include file layout.  But it's easy to implement:
just return /usr/include (or the cross-compiling equivalent).
===

It turns out, that now we create useless symlink /usr/lib/include just to ease
support of some Linux boot loaders?

I do not have full knowledge about the issue, so excuse me if I misunderstood
something.


On Sun, Apr 14, 2013 at 07:13:52PM +, Tim Kientzle wrote:
 Author: kientzle
 Date: Sun Apr 14 19:13:51 2013
 New Revision: 249484
 URL: http://svnweb.freebsd.org/changeset/base/249484
 
 Log:
   Install a symlink
 /usr/lib/include == /usr/include
   
   This fixes -print-file-name=include in clang (and is
   arguably a better way to fix the same issue in GCC than
   the change I made in r231336).
   
   MFC after:  1 week
 
 Modified:
   head/lib/Makefile
 
 Modified: head/lib/Makefile
 ==
 --- head/lib/Makefile Sun Apr 14 18:36:30 2013(r249483)
 +++ head/lib/Makefile Sun Apr 14 19:13:51 2013(r249484)
 @@ -252,4 +252,7 @@ _libusbhid=   libusbhid
  _libusb= libusb
  .endif
  
 +afterinstall:
 + ln -fs ../include ${DESTDIR}/usr/lib/include
 +
  .include bsd.subdir.mk
 ___
 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-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: r246877 - head/sys/ufs/ffs

2013-02-18 Thread Gennady Proskurin
May be a dumb question, but I want to be explicit here.

Can system before this commit crash here or filesystem corruption happen during
ordinary work? (I mean no power loss and no crashes in other kernel code)

Or filesystem can be corrupted only if system crashes by other means (power
loss or something) during inode block allocation?

On Sat, Feb 16, 2013 at 03:11:40PM +, Kirk McKusick wrote:
 Author: mckusick
 Date: Sat Feb 16 15:11:40 2013
 New Revision: 246877
 URL: http://svnweb.freebsd.org/changeset/base/246877
 
 Log:
   The UFS2 filesystem allocates new blocks of inodes as they are needed.
   When a cylinder group runs short of inodes, a new block for inodes is
   allocated, zero'ed, and written to the disk. The zero'ed inodes must
   be on the disk before the cylinder group can be updated to claim them.
   If the cylinder group claiming the new inodes were written before the
   zero'ed block of inodes, the system could crash with the filesystem in
   an unrecoverable state.
   
   Rather than adding a soft updates dependency to ensure that the new
   inode block is written before it is claimed by the cylinder group
   map, we just do a barrier write of the zero'ed inode block to ensure
   that it will get written before the updated cylinder group map can
   be written. This change should only slow down bulk loading of newly
   created filesystems since that is the primary time that new inode
   blocks need to be created.
   
   Reported by: Robert Watson
   Reviewed by: kib
   Tested by:   Peter Holm
 
 Modified:
   head/sys/ufs/ffs/ffs_alloc.c
 
 Modified: head/sys/ufs/ffs/ffs_alloc.c
 ==
 --- head/sys/ufs/ffs/ffs_alloc.c  Sat Feb 16 14:51:30 2013
 (r246876)
 +++ head/sys/ufs/ffs/ffs_alloc.c  Sat Feb 16 15:11:40 2013
 (r246877)
 @@ -1861,7 +1861,6 @@ gotit:
   /*
* Check to see if we need to initialize more inodes.
*/
 - ibp = NULL;
   if (fs-fs_magic == FS_UFS2_MAGIC 
   ipref + INOPB(fs)  cgp-cg_initediblk 
   cgp-cg_initediblk  cgp-cg_niblk) {
 @@ -1874,6 +1873,16 @@ gotit:
   dp2-di_gen = arc4random() / 2 + 1;
   dp2++;
   }
 + /*
 +  * Rather than adding a soft updates dependency to ensure
 +  * that the new inode block is written before it is claimed
 +  * by the cylinder group map, we just do a barrier write
 +  * here. The barrier write will ensure that the inode block
 +  * gets written before the updated cylinder group map can be
 +  * written. The barrier write should only slow down bulk
 +  * loading of newly created filesystems.
 +  */
 + babarrierwrite(ibp);
   cgp-cg_initediblk += INOPB(fs);
   }
   UFS_LOCK(ump);
 @@ -1892,8 +1901,6 @@ gotit:
   if (DOINGSOFTDEP(ITOV(ip)))
   softdep_setup_inomapdep(bp, ip, cg * fs-fs_ipg + ipref, mode);
   bdwrite(bp);
 - if (ibp != NULL)
 - bawrite(ibp);
   return ((ino_t)(cg * fs-fs_ipg + ipref));
  }
  
 ___
 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-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: r242184 - in head: etc share/man/man5

2012-11-17 Thread Gennady Proskurin
Now squid startup script is unable to start squid

# pkg info -x ^squid
squid-3.2.3_1  HTTP Caching Proxy

# sysctl net.fibs
net.fibs: 1

# grep squid /etc/rc.conf 
squid_enable=YES
squid_pidfile=/var/squid/squid.pid
squid_chdir=/var/squid

# /usr/local/etc/rc.d/squid start
Starting squid.
setfib: NONE: invalid FIB (max 0)
Exit 1
/usr/local/etc/rc.d/squid: WARNING: failed to start squid
Exit 1

# sh -x /usr/local/etc/rc.d/squid start
... [skip] ...
+ debug 'run_rc_command: start_precmd: squid_setfib '
+ eval 'squid_setfib '
+ squid_setfib
+ sysctl net.fibs
+ [ xNONE != xNONE ]
+ return 0
+ _return=0
+ [ 0 -ne 0 ]
+ check_required_after start
+ local _f _args
+ return 0
+ return 0
+ check_startmsgs
+ [ -n '' ]
+ return 0
+ echo 'Starting squid.'
Starting squid.
+ [ -n '' ]
+ _doit='cd /var/squid  setfib -F NONE /usr/local/sbin/squid  -f 
/usr/local/etc/squid/squid.conf'
+ [ -n squid ]
+ _doit='su -m squid -c '\''sh -c cd /var/squid  setfib -F NONE 
/usr/local/sbin/squid  -f /usr/local/etc/squid/squid.conf'\'
+ [ -n '' ]
+ _run_rc_doit 'su -m squid -c '\''sh -c cd /var/squid  setfib -F NONE 
/usr/local/sbin/squid  -f /usr/local/etc/squid/squid.conf'\'
+ debug 'run_rc_command: doit: su -m squid -c '\''sh -c cd /var/squid  
setfib -F NONE /usr/local/sbin/squid  -f /usr/local/etc/squid/squid.conf'\'
+ eval 'su -m squid -c '\''sh -c cd /var/squid  setfib -F NONE 
/usr/local/sbin/squid  -f /usr/local/etc/squid/squid.conf'\'
+ su -m squid -c 'sh -c cd /var/squid  setfib -F NONE /usr/local/sbin/squid  
-f /usr/local/etc/squid/squid.conf'
setfib: NONE: invalid FIB (max 0)
Exit 1
+ _return=1
+ [ 1 -ne 0 ]
+ [ -z '' ]
+ return 1
+ warn 'failed to start squid'
+ [ -x /usr/bin/logger ]
+ logger '/usr/local/etc/rc.d/squid: WARNING: failed to start squid'
+ echo '/usr/local/etc/rc.d/squid: WARNING: failed to start squid'
/usr/local/etc/rc.d/squid: WARNING: failed to start squid
+ return 1
Exit 1


On Sat, Oct 27, 2012 at 07:09:09PM +, Hiroki Sato wrote:
 Author: hrs
 Date: Sat Oct 27 19:09:09 2012
 New Revision: 242184
 URL: http://svn.freebsd.org/changeset/base/242184
 
 Log:
   Add setfib(1) support for services as name_fib in rc.conf.
 
 Modified:
   head/etc/rc.subr
   head/share/man/man5/rc.conf.5
 
 Modified: head/etc/rc.subr
 ==
 --- head/etc/rc.subr  Sat Oct 27 17:43:30 2012(r242183)
 +++ head/etc/rc.subr  Sat Oct 27 19:09:09 2012(r242184)
 @@ -462,6 +462,8 @@ check_startmsgs()
  #NOTE:   $flags from the parent environment
  #can be used to override this.
  #
 +#${name}_fib n   Routing table number to run ${command} with.
 +#
  #${name}_nicen   Nice level to run ${command} at.
  #
  #${name}_usern   User to run ${command} as, using su(1) if not
 @@ -640,7 +642,8 @@ run_rc_command()
   fi
   eval _chdir=\$${name}_chdir _chroot=\$${name}_chroot \
   _nice=\$${name}_nice_user=\$${name}_user \
 - _group=\$${name}_group  _groups=\$${name}_groups
 + _group=\$${name}_group  _groups=\$${name}_groups \
 + _fib=\$${name}_fib
  
   if [ -n $_user ]; then# unset $_user if running as that user
   if [ $_user = $(eval $IDCMD) ]; then
 @@ -721,11 +724,13 @@ run_rc_command()
   if [ -n $_chroot ]; then
   _doit=\
  ${_nice:+nice -n $_nice }\
 +${_fib:+setfib -F $_fib }\
  chroot ${_user:+-u $_user }${_group:+-g $_group }${_groups:+-G $_groups }\
  $_chroot $command $rc_flags $command_args
   else
   _doit=\
  ${_chdir:+cd $_chdir  }\
 +${_fib:+setfib -F $_fib }\
  $command $rc_flags $command_args
   if [ -n $_user ]; then
   _doit=su -m $_user -c 'sh -c \$_doit\'
 
 Modified: head/share/man/man5/rc.conf.5
 ==
 --- head/share/man/man5/rc.conf.5 Sat Oct 27 17:43:30 2012
 (r242183)
 +++ head/share/man/man5/rc.conf.5 Sat Oct 27 19:09:09 2012
 (r242184)
 @@ -24,7 +24,7 @@
  .\
  .\ $FreeBSD$
  .\
 -.Dd July 22, 2012
 +.Dd October 27, 2012
  .Dt RC.CONF 5
  .Os
  .Sh NAME
 @@ -179,6 +179,11 @@ Run the service under this user account.
  .Pq Vt str
  Run the chrooted service under this system group. Unlike the _user
  setting, this setting has no effect if the service is not chrooted.
 +.It Ao Ar name Ac Ns Va _fib
 +.Pq Vt int
 +The
 +.Xr setfib 1
 +value to run the service under.
  .It Ao Ar name Ac Ns Va _nice
  .Pq Vt int
  The
 ___
 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: r240156 - head/lib/libproc

2012-09-06 Thread Gennady Proskurin
On Thu, Sep 06, 2012 at 03:19:49AM +, Rui Paulo wrote:
 Author: rpaulo
 Date: Thu Sep  6 03:19:48 2012
 New Revision: 240156
 URL: http://svn.freebsd.org/changeset/base/240156
 
 Log:
   Add support for demangling C++ symbols. This requires linking libproc with
   libc++rt/libsupc++.
   
   Discussed with: theraven
 
 Modified:
   head/lib/libproc/Makefile
   head/lib/libproc/proc_sym.c
 
 Modified: head/lib/libproc/Makefile
 ==
 --- head/lib/libproc/Makefile Thu Sep  6 02:07:58 2012(r240155)
 +++ head/lib/libproc/Makefile Thu Sep  6 03:19:48 2012(r240156)
 @@ -1,5 +1,7 @@
  # $FreeBSD$
  
 +.include bsd.own.mk
 +
  LIB= proc
  
  SRCS=proc_bkpt.c \
 @@ -13,6 +15,14 @@ INCS=  libproc.h
  
  CFLAGS+= -I${.CURDIR}
  
 +.if ${MK_LIBCPLUSPLUS} != no
 +LDADD+=  -lcxxrt
 +DPADD+=  ${LIBCXXRT}
 +.else
 +LDADD+=  -lsupc++
 +DPADD+=  ${LIBSTDCPLUSPLUS}
 +.endif
 +
  SHLIB_MAJOR= 2
  
  WITHOUT_MAN=
 
 Modified: head/lib/libproc/proc_sym.c
 ==
 --- head/lib/libproc/proc_sym.c   Thu Sep  6 02:07:58 2012
 (r240155)
 +++ head/lib/libproc/proc_sym.c   Thu Sep  6 03:19:48 2012
 (r240156)
 @@ -46,6 +46,8 @@
  
  #include _libproc.h
  
 +extern char *__cxa_demangle(const char *, char *, size_t *, int *);
 +
  static void  proc_rdl2prmap(rd_loadobj_t *, prmap_t *);
  
  static void
 @@ -266,7 +268,11 @@ proc_addr2sym(struct proc_handle *p, uin
   if (addr = rsym  addr = (rsym + sym.st_size)) {
   s = elf_strptr(e, dynsymstridx, sym.st_name);
   if (s) {
 - strlcpy(name, s, namesz);
 + if (strlen(s)  2  
 + s[0] == '_'  s[1] == 'Z')
checking strlen(s)  2 is useless and not optimal here, you can omit it 
completely
checking s[0] and s[1] is enough, it implies that length is =2
you may add something like s[2] != 0 if length should be strictly 2

 + __cxa_demangle(s, name, namesz, NULL);
 + else
 + strlcpy(name, s, namesz);
   memcpy(symcopy, sym, sizeof(sym));
   /*
* DTrace expects the st_value to contain
 @@ -302,7 +308,11 @@ symtab:
   if (addr = rsym  addr = (rsym + sym.st_size)) {
   s = elf_strptr(e, symtabstridx, sym.st_name);
   if (s) {
 - strlcpy(name, s, namesz);
 + if (strlen(s)  2  
 + s[0] == '_'  s[1] == 'Z')
 + __cxa_demangle(s, name, namesz, NULL);
 + else
 + strlcpy(name, s, namesz);
the same here

   memcpy(symcopy, sym, sizeof(sym));
   /*
* DTrace expects the st_value to contain
 ___
 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-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: r237223 - head/sys/dev/fb

2012-06-20 Thread Gennady Proskurin
On Tue, Jun 19, 2012 at 05:27:11AM +, Poul-Henning Kamp wrote:
 In message 68fbe843-7337-4c90-b01f-e0caabb62...@gsoft.com.au, Daniel 
 O'Conno
 r writes:
 
  If size is odd, this does not copy the last byte. Not sure, whether =
 this is intended.
 
 Feel free to improve...

Index: fbreg.h
===
--- fbreg.h	(revision 237289)
+++ fbreg.h	(working copy)
@@ -39,9 +39,12 @@
 static __inline void
 copyw(uint16_t *src, uint16_t *dst, size_t size)
 {
+	const int is_odd = (size  0x1);
 	size = 1;
 	while (size--)
 		*dst++ = *src++;
+	if (is_odd)
+		*(char*)dst = *(char*)src; // copy last byte
 }
 #define bcopy_io(s, d, c)	copyw((void*)(s), (void*)(d), (c))
 #define bcopy_toio(s, d, c)	copyw((void*)(s), (void*)(d), (c))
___
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: r237223 - head/sys/dev/fb

2012-06-20 Thread Gennady Proskurin
On Wed, Jun 20, 2012 at 05:59:07PM +0930, Daniel O'Connor wrote:
 
 On 20/06/2012, at 17:11, Gennady Proskurin wrote:
  On Tue, Jun 19, 2012 at 05:27:11AM +, Poul-Henning Kamp wrote:
  In message 68fbe843-7337-4c90-b01f-e0caabb62...@gsoft.com.au, Daniel 
  O'Conno
  r writes:
  
  If size is odd, this does not copy the last byte. Not sure, whether =
  this is intended.
  
  Feel free to improve...
  
  fb.patch
 
 
 Surely if you pass it an odd size you made a mistake - either the wrong 
 function was used or you computed the size incorrectly.

Functions are called bcopy_io and so, such names tell nothing about data size
they work with (copyw tells something). If it is not supposed to work with
odd size, I agree, my patch is overkill, something like KASSERT (or just
one-line comment) is better.

I just wanted to be sure, that potential bug in this code is known to
developpers.

___
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: r237223 - head/sys/dev/fb

2012-06-18 Thread Gennady Proskurin
On Mon, Jun 18, 2012 at 07:54:11AM +, Poul-Henning Kamp wrote:
 Author: phk
 Date: Mon Jun 18 07:54:10 2012
 New Revision: 237223
 URL: http://svn.freebsd.org/changeset/base/237223
 
 Log:
   Fix the previous commit to only copy the data we were asked to and not
   twice as much.
   
   Spotted by: Taku YAMAMOTO
 
 Modified:
   head/sys/dev/fb/fbreg.h
 
 Modified: head/sys/dev/fb/fbreg.h
 ==
 --- head/sys/dev/fb/fbreg.h   Mon Jun 18 07:43:23 2012(r237222)
 +++ head/sys/dev/fb/fbreg.h   Mon Jun 18 07:54:10 2012(r237223)
 @@ -39,6 +39,7 @@
  static __inline void
  copyw(uint16_t *src, uint16_t *dst, size_t size)
  {
 + size = 1;
   while (size--)
   *dst++ = *src++;
  }

If size is odd, this does not copy the last byte. Not sure, whether this is 
intended.

___
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: r227310 - head/sys/fs/tmpfs

2011-11-08 Thread Gennady Proskurin
TMPFS is not usable without swap, it should have better algorithms to adjust
it's size, depending on amount of memory/swap available.

# swapoff -a
# swapinfo 
Device  1K-blocks UsedAvail Capacity

# top
Mem: 253M Active, 282M Inact, 933M Wired, 3972K Cache, 135M Buf, 491M Free
Swap: 

# df -h /tmp
FilesystemSizeUsed   Avail Capacity  Mounted on
tmpfs 436k436k  0B   100%/tmp

no free space on /tmp

# uname -a
FreeBSD gpr.drweb.com 9.0-BETA2 FreeBSD 9.0-BETA2 #0 r225446M: Thu Sep  8 
17:30:46 MSK 2011 
g...@gpr.drweb.com:/usr/obj/usr/src/freebsd-head/sys/DRW_A  amd64



On Mon, Nov 07, 2011 at 04:21:50PM +, Marcel Moolenaar wrote:
 Author: marcel
 Date: Mon Nov  7 16:21:50 2011
 New Revision: 227310
 URL: http://svn.freebsd.org/changeset/base/227310
 
 Log:
   Don astbestos garment and remove the warning about TMPFS being experimental
   -- highly experimental even. So far the closest to a bug in TMPFS that 
 people
   have gotten to relates to how ZFS can take away from the memory that TMPFS
   needs. One can argue that such is not a bug in TMPFS. Irrespective, even if
   there is a bug here and there in TMPFS, it's not in our own advantage to
   scare people away from using TMPFS. I for one have been using it, even with
   ZFS, very successfully.
 
 Modified:
   head/sys/fs/tmpfs/tmpfs_vfsops.c
 
 Modified: head/sys/fs/tmpfs/tmpfs_vfsops.c
 ==
 --- head/sys/fs/tmpfs/tmpfs_vfsops.c  Mon Nov  7 15:43:11 2011
 (r227309)
 +++ head/sys/fs/tmpfs/tmpfs_vfsops.c  Mon Nov  7 16:21:50 2011
 (r227310)
 @@ -156,9 +156,6 @@ tmpfs_mount(struct mount *mp)
   return EOPNOTSUPP;
   }
  
 - printf(WARNING: TMPFS is considered to be a highly experimental 
 - feature in FreeBSD.\n);
 -
   vn_lock(mp-mnt_vnodecovered, LK_SHARED | LK_RETRY);
   error = VOP_GETATTR(mp-mnt_vnodecovered, va, mp-mnt_cred);
   VOP_UNLOCK(mp-mnt_vnodecovered, 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-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: r213648 - head/sys/kern

2010-10-13 Thread Gennady Proskurin
On Sat, Oct 09, 2010 at 12:48:50PM +0300, Andriy Gapon wrote:
 on 09/10/2010 12:33 Bruce Evans said the following:
  On Sat, 9 Oct 2010, Andriy Gapon wrote:
  
  Log:
   panic_cpu variable should be volatile
 
   This is to prevent caching of its value in a register when it is checked
   and modified by multiple CPUs in parallel.
   Also, move the variable  into the scope of the only function that uses it.
 
   Reviewed by:jhb
   Hint from:mdf
   MFC after:1 week
  
  I doubt that this is either necessary or sufficient.  Most variables
  aren't volatile while they are locked by a mutex.  But panic() cannot use
  normal mutex locking, so it should access this variable using atomic
  ops with memory barriers.  The compiler part of the memory barriers
  effectively make _all_ variables temporily volatile.  However, 2 of the
  the 4 accesses to this variable doesn't use an atomic op.
  
  % #ifdef SMP
  % /*
  %  * We don't want multiple CPU's to panic at the same time, so we
  %  * use panic_cpu as a simple spinlock.  We have to keep checking
  %  * panic_cpu if we are spinning in case the panic on the first
  %  * CPU is canceled.
  %  */
  % if (panic_cpu != PCPU_GET(cpuid))
  
  This access doesn't use an atomic op.
  
  % while (atomic_cmpset_int(panic_cpu, NOCPU,
  % PCPU_GET(cpuid)) == 0)
  
  This access uses an atomic op.  Not all atomic ops use memory barriers,
  at least on i386.  However, this one does, at least on i386.
  
(I'm always confused about what atomic_any() without acq or release
means.  Do they mean that you don't want a memory barrier (this is
what the mostly give, at least on i386), and if so, what use are
they?  There are far too many atomic ops, for far too many never-used
widths, with alternative spellings to encourage using a wrong one.
cmpset is is especially confusing since it you can spell it as cmpset,
cmpset_acq or compset_rel and always get the barrier, at least on
i386.  At least cmpset only supports 1 width, at least on i386.)
  
  % while (panic_cpu != NOCPU)
  
  This access doesn't use an atomic op.
  
  % ; /* nothing */
  % #endif
  % ...
  % #ifdef RESTARTABLE_PANICS
  % /* See if the user aborted the panic, in which case we continue. */
  % if (panicstr == NULL) {
  % #ifdef SMP
  % atomic_store_rel_int(panic_cpu, NOCPU);
  
  This access uses an atomic op with a memory barrier, at least on i386.
  Now its rel semantics are clear.
  
  panicstr is non-volatile and never accessed by an atomic op, so it probably
  strictly needs to be declared volatile even more than panic_cpu.  I think
 
 I agree about panicstr.
 But I am not sure if we have places in code (beyond panic function) itself 
 where
 volatile vs. non-volatile would make any actual difference.
 But still.
 
  the only thing that makes it work now is that it is bogusly pubic, and
  compilers can't analyze the whole program yet -- if they could, then they
  would see that it is only set in panic().
  
  % #endif
  % return;
  % }
  % #endif
  % #endif
  
  Now, why don't the partial memory barriers prevent caching the variable?
  
  % if (panic_cpu != PCPU_GET(cpuid))
  % while (atomic_cmpset_int(panic_cpu, NOCPU,
  % PCPU_GET(cpuid)) == 0)
  % while (panic_cpu != NOCPU)
  % ; /* nothing */
  
  The very first access can't reasonably use a cachec value.  atomic_cmpset()
  can change panic_cpu, so even without the memory barrier, panic_cpu must
  be reloaded for the third access the first time.  But then when the third
  access is repeated in the second while loop, the missing atomic op with
  barrier makes things very broken.  panic_cpu isn't changed by the loop,
  and the compiler thinks that it isn't changed by anything else either, so
  the compiler may reduce the loop to:
  
  % if (panic_cpu != NOCPU)
  % for (;;)
  % ; /* nothing */
 
 
 Yes, it's exactly the last loop that had the problem.
 On amd64 with -O2:
 .loc 1 544 0
 movlpanic_cpu(%rip), %eax
 .LVL134:
 .p2align 4,,7
 .L210:
 cmpl$255, %eax
 jne .L210
 jmp .L225
 
  except I've seen claims that even an endless for loop can be optimized
  to nothing.  Declaring panic_cpu as volatile prevents the compiler doing
  this, but I think it is insufficient.  We really do want to see panic_cpu
  changed by other CPUs, and what is the point of atomic_load_acq*() if not
  to use for this -- if declaring things volatile were sufficient, then we
  could just use *(volatile *)var.  atomic_load/store_acq/rel*() on i386
 
 I discussed this with kib and the idea is that atomic operation is not needed 
 in
 that place and volatile is sufficient, because we don't need barrier semantics
 there and only want to ensure that variable is reloaded from memory.