9.0-BETA1 installer issues

2011-08-02 Thread Bruce Cran
I've been trying out 9.0-BETA1: it's a lot easier to install than 
previous releases with bsdinstall, but I spotted a few issues:


Typo - Resovler Configuration.
If I leave the resolver window for a while it gets corrupted with:

Aug 2 10:31:23 dhclient[973]: Bogus domain search list 15: lan, .

In the documentation installation screen, it should say At a 
minimum... - the 'a' is missing. Also, there should perhaps be a 
semi-colon between English version and this is the original.  The 
menu also doesn't appear to do anything once you select OK.


The shell menu should perhaps have a newline after making, to avoid 
configuration wrapping.
Also, the partitioning screen should maybe have Continue instead of 
Exit.
The known issue with the installation not creating /home is still 
present in BETA1.


--
Bruce Cran
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: pflow(4) in 9.0 ?

2011-08-02 Thread Bjoern A. Zeeb
On Aug 1, 2011, at 9:36 PM, Patrick Lamaiziere wrote:

 Hello,
 
 Will pflow(4) be available on 9.0 ?
 
 There is a if_pflow.h in pf's code but no manual page.

No; the header file is only there to ease compiling of the rest of the code.

/bz

-- 
Bjoern A. Zeeb You have to have visions!
 Stop bit received. Insert coin for new address family.

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


9.0 B1 Panic

2011-08-02 Thread Martin Wilke
9.0 Beta1 Panic

Hi guys,

I just downloaded and install  9.0 BETA1 but it panics on ACPI. Please view 
attached screenshot for the error. If you need more information, do let us know.

Thanks.
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


ZFS v28: kernel panics while reading an extended attribute

2011-08-02 Thread Alexander Zagrebin
Hi!

It seems, I've found a bug in the ZFS v28 on the latest stable:
if we have a snapshot with some files having an extended attributes,
then attempt to read an extended attributes's value leads to a well
reproducible kernel panic.

The part of backtrace follows:

#6  0x804bbe44 in calltrap ()
at /usr/src/sys/amd64/amd64/exception.S:228
#7  0x80950ea7 in zil_commit (zilog=0x0, foid=5795917)
at 
/usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c:1497
#8  0x80979e6b in zfs_freebsd_read (ap=Variable ap is not available.)
at 
/usr/src/sys/modules/zfs/../../cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c:622
#9  0x80979750 in zfs_getextattr (ap=0xff80dd5d8820)
at vnode_if.h:384
#10 0x8038921b in extattr_get_vp (vp=0xff0056a01588,
attrnamespace=1, attrname=0xff80dd5d89a0 DOSATTRIB, data=Variable 
data is not available.)
at vnode_if.h:1332

It seems that ZIL isn't available for snapshots, but zfs_freebsd_read
doesn't check this when calling zil_commit.

The attached patch fixes this issue.

Can anybody confirm this?

-- 
Alexander Zagrebin
--- sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c.orig	2011-08-01 23:04:07.358173627 +0400
+++ sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c		2011-08-02 00:10:02.674585604 +0400
@@ -618,7 +618,8 @@ zfs_read(vnode_t *vp, uio_t *uio, int io
 	/*
 	 * If we're in FRSYNC mode, sync out this znode before reading it.
 	 */
-	if (ioflag  FRSYNC || zfsvfs-z_os-os_sync == ZFS_SYNC_ALWAYS)
+	if (zfsvfs-z_log 
+	(ioflag  FRSYNC || zfsvfs-z_os-os_sync == ZFS_SYNC_ALWAYS))
 		zil_commit(zfsvfs-z_log, zp-z_id);
 
 	/*
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org

Re: 9.0 B1 Panic

2011-08-02 Thread John Baldwin
On Tuesday, August 02, 2011 12:41:29 am Martin Wilke wrote:
 9.0 Beta1 Panic
 
 Hi guys,
 
 I just downloaded and install  9.0 BETA1 but it panics on ACPI. Please view 
attached screenshot for the error. If you need more information, do let us 
know.
 
 Thanks.

Unfortunately the attachment was lost, can you post it to a URL?

-- 
John Baldwin
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: 9.0 B1 Panic

2011-08-02 Thread Martin Wilke

On Aug 2, 2011, at 6:58 PM, Lystopad Olexandr wrote:

 Hello, Martin Wilke!
 
 On Tue, Aug 02, 2011 at 12:41:29PM +0800
 m...@freebsd.org wrote about 9.0 B1 Panic:
 9.0 Beta1 Panic
 
 Hi guys,
 
 I just downloaded and install  9.0 BETA1 but it panics on ACPI. Please view 
 attached screenshot for the error. If you need more information, do let us 
 know.
 
 There no attachments in your mail.


Erms Sorry forgot about that.

http://people.freebsd.org/~miwi/90b1.png

 
 -- 
 Lystopad Olexandr 

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


Re: 9.0-BETA1 installer issues

2011-08-02 Thread Nathan Whitehorn

On 08/02/11 04:41, Bruce Cran wrote:
I've been trying out 9.0-BETA1: it's a lot easier to install than 
previous releases with bsdinstall, but I spotted a few issues:


Good! Thanks for checking.


Typo - Resovler Configuration.
If I leave the resolver window for a while it gets corrupted with:

Aug 2 10:31:23 dhclient[973]: Bogus domain search list 15: lan, .


Interesting. It looks like DHCP doesn't like your local setup...

In the documentation installation screen, it should say At a 
minimum... - the 'a' is missing. Also, there should perhaps be a 
semi-colon between English version and this is the original.  The 
menu also doesn't appear to do anything once you select OK.


The spelling fixes are easy to fix. The documentation issue is more 
confusing. It should begin running pkg_add, after you press OK, assuming 
you selected something. Do you have the installer log handy? It will be 
in /tmp.


The shell menu should perhaps have a newline after making, to avoid 
configuration wrapping.
Also, the partitioning screen should maybe have Continue instead of 
Exit.


These are good points. I'll fix them.

The known issue with the installation not creating /home is still 
present in BETA1.




This was caused by a change in behavior of pw(8) in mid-June, which has 
been reverted in r224535. This unfortunately missed BETA1...

-Nathan
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: [clang] (gpt)zfsboot is broken: zfs_alloc()/zfs_free() mismatch

2011-08-02 Thread Alexey Tarasov
On Aug 1, 2011, at 4:24 PM, Test Rat wrote:

 Anyone else? I can still reproduce with trunk r136607.
 boot and gptboot seem to be unaffected.
 
 IIRC, with previous clang import it just stuck during boot
 without any error messages.

I have the same behavior. GCC build of gptzfsboot works fine.


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

--
Alexey Tarasov

(\__/) 
(='.'=) 
E[: | | | | :]З 
()_()

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


Re: 9.0-BETA1 installer issues

2011-08-02 Thread Bruce Cran

On 02/08/2011 14:36, Nathan Whitehorn wrote:


The spelling fixes are easy to fix. The documentation issue is more 
confusing. It should begin running pkg_add, after you press OK, 
assuming you selected something. Do you have the installer log handy? 
It will be in /tmp.


I selected both English and French documentation sets but pressing OK 
just returns back to the final menu. I can't see any log files in /tmp, 
/root or /var/tmp.


--
Bruce Cran
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: 9.0 B1 Panic

2011-08-02 Thread John Baldwin
On Tuesday, August 02, 2011 8:58:10 am Martin Wilke wrote:
 
 On Aug 2, 2011, at 6:58 PM, Lystopad Olexandr wrote:
 
  Hello, Martin Wilke!
  
  On Tue, Aug 02, 2011 at 12:41:29PM +0800
  m...@freebsd.org wrote about 9.0 B1 Panic:
  9.0 Beta1 Panic
  
  Hi guys,
  
  I just downloaded and install  9.0 BETA1 but it panics on ACPI. Please 
view attached screenshot for the error. If you need more information, do let 
us know.
  
  There no attachments in your mail.
 
 
 Erms Sorry forgot about that.
 
 http://people.freebsd.org/~miwi/90b1.png

Can you get a stack trace?

-- 
John Baldwin
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: 9.0 B1 Panic

2011-08-02 Thread Martin Wilke

On Aug 3, 2011, at 12:56 AM, John Baldwin wrote:

 On Tuesday, August 02, 2011 8:58:10 am Martin Wilke wrote:
 
 On Aug 2, 2011, at 6:58 PM, Lystopad Olexandr wrote:
 
 Hello, Martin Wilke!
 
 On Tue, Aug 02, 2011 at 12:41:29PM +0800
 m...@freebsd.org wrote about 9.0 B1 Panic:
 9.0 Beta1 Panic
 
 Hi guys,
 
 I just downloaded and install  9.0 BETA1 but it panics on ACPI. Please 
 view attached screenshot for the error. If you need more information, do let 
 us know.
 
 There no attachments in your mail.
 
 
 Erms Sorry forgot about that.
 
 http://people.freebsd.org/~miwi/90b1.png
 
 Can you get a stack trace?

Hi,
unfortunately no, because the system freeze few sec after the panic.

- Martin

 
 -- 
 John Baldwin

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


[head tinderbox] failure on powerpc/powerpc

2011-08-02 Thread FreeBSD Tinderbox
TB --- 2011-08-02 19:26:51 - tinderbox 2.7 running on freebsd-current.sentex.ca
TB --- 2011-08-02 19:26:51 - starting HEAD tinderbox run for powerpc/powerpc
TB --- 2011-08-02 19:26:51 - cleaning the object tree
TB --- 2011-08-02 19:27:10 - cvsupping the source tree
TB --- 2011-08-02 19:27:10 - /usr/bin/csup -z -r 3 -g -L 1 -h cvsup.sentex.ca 
/tinderbox/HEAD/powerpc/powerpc/supfile
TB --- 2011-08-02 19:27:25 - building world
TB --- 2011-08-02 19:27:25 - MAKEOBJDIRPREFIX=/obj
TB --- 2011-08-02 19:27:25 - PATH=/usr/bin:/usr/sbin:/bin:/sbin
TB --- 2011-08-02 19:27:25 - TARGET=powerpc
TB --- 2011-08-02 19:27:25 - TARGET_ARCH=powerpc
TB --- 2011-08-02 19:27:25 - TZ=UTC
TB --- 2011-08-02 19:27:25 - __MAKE_CONF=/dev/null
TB --- 2011-08-02 19:27:25 - cd /src
TB --- 2011-08-02 19:27:25 - /usr/bin/make -B buildworld
 World build started on Tue Aug  2 19:27:25 UTC 2011
 Rebuilding the temporary build tree
 stage 1.1: legacy release compatibility shims
 stage 1.2: bootstrap tools
 stage 2.1: cleaning up the object tree
 stage 2.2: rebuilding the object tree
 stage 2.3: build tools
 stage 3: cross tools
 stage 4.1: building includes
 stage 4.2: building libraries
 stage 4.3: make dependencies
 stage 4.4: building everything
 World build completed on Tue Aug  2 21:17:17 UTC 2011
TB --- 2011-08-02 21:17:17 - generating LINT kernel config
TB --- 2011-08-02 21:17:17 - cd /src/sys/powerpc/conf
TB --- 2011-08-02 21:17:17 - /usr/bin/make -B LINT
TB --- 2011-08-02 21:17:17 - building LINT kernel
TB --- 2011-08-02 21:17:17 - MAKEOBJDIRPREFIX=/obj
TB --- 2011-08-02 21:17:17 - PATH=/usr/bin:/usr/sbin:/bin:/sbin
TB --- 2011-08-02 21:17:17 - TARGET=powerpc
TB --- 2011-08-02 21:17:17 - TARGET_ARCH=powerpc
TB --- 2011-08-02 21:17:17 - TZ=UTC
TB --- 2011-08-02 21:17:17 - __MAKE_CONF=/dev/null
TB --- 2011-08-02 21:17:17 - cd /src
TB --- 2011-08-02 21:17:17 - /usr/bin/make -B buildkernel KERNCONF=LINT
 Kernel build for LINT started on Tue Aug  2 21:17:17 UTC 2011
 stage 1: configuring the kernel
 stage 2.1: cleaning up the object tree
 stage 2.2: rebuilding the object tree
 stage 2.3: build tools
 stage 3.1: making dependencies
 stage 3.2: building everything
 Kernel build for LINT completed on Tue Aug  2 21:38:22 UTC 2011
TB --- 2011-08-02 21:38:22 - cd /src/sys/powerpc/conf
TB --- 2011-08-02 21:38:22 - /usr/sbin/config -m GENERIC
TB --- 2011-08-02 21:38:22 - building GENERIC kernel
TB --- 2011-08-02 21:38:22 - MAKEOBJDIRPREFIX=/obj
TB --- 2011-08-02 21:38:22 - PATH=/usr/bin:/usr/sbin:/bin:/sbin
TB --- 2011-08-02 21:38:22 - TARGET=powerpc
TB --- 2011-08-02 21:38:22 - TARGET_ARCH=powerpc
TB --- 2011-08-02 21:38:22 - TZ=UTC
TB --- 2011-08-02 21:38:22 - __MAKE_CONF=/dev/null
TB --- 2011-08-02 21:38:22 - cd /src
TB --- 2011-08-02 21:38:22 - /usr/bin/make -B buildkernel KERNCONF=GENERIC
 Kernel build for GENERIC started on Tue Aug  2 21:38:22 UTC 2011
 stage 1: configuring the kernel
 stage 2.1: cleaning up the object tree
 stage 2.2: rebuilding the object tree
 stage 2.3: build tools
 stage 3.1: making dependencies
 stage 3.2: building everything
 Kernel build for GENERIC completed on Tue Aug  2 21:52:21 UTC 2011
TB --- 2011-08-02 21:52:21 - cd /src/sys/powerpc/conf
TB --- 2011-08-02 21:52:21 - /usr/sbin/config -m GENERIC64
TB --- 2011-08-02 21:52:21 - skipping GENERIC64 kernel
TB --- 2011-08-02 21:52:21 - cd /src/sys/powerpc/conf
TB --- 2011-08-02 21:52:21 - /usr/sbin/config -m MPC85XX
TB --- 2011-08-02 21:52:21 - building MPC85XX kernel
TB --- 2011-08-02 21:52:21 - MAKEOBJDIRPREFIX=/obj
TB --- 2011-08-02 21:52:21 - PATH=/usr/bin:/usr/sbin:/bin:/sbin
TB --- 2011-08-02 21:52:21 - TARGET=powerpc
TB --- 2011-08-02 21:52:21 - TARGET_ARCH=powerpc
TB --- 2011-08-02 21:52:21 - TZ=UTC
TB --- 2011-08-02 21:52:21 - __MAKE_CONF=/dev/null
TB --- 2011-08-02 21:52:21 - cd /src
TB --- 2011-08-02 21:52:21 - /usr/bin/make -B buildkernel KERNCONF=MPC85XX
 Kernel build for MPC85XX started on Tue Aug  2 21:52:21 UTC 2011
 stage 1: configuring the kernel
 stage 2.1: cleaning up the object tree
 stage 2.2: rebuilding the object tree
 stage 2.3: build tools
 stage 3.1: making dependencies
 stage 3.2: building everything
--
cd /obj/powerpc.powerpc/src/sys/MPC85XX; MAKEOBJDIRPREFIX=/obj/powerpc.powerpc  
MACHINE_ARCH=powerpc  MACHINE=powerpc  CPUTYPE= 
GROFF_BIN_PATH=/obj/powerpc.powerpc/src/tmp/legacy/usr/bin  
GROFF_FONT_PATH=/obj/powerpc.powerpc/src/tmp/legacy/usr/share/groff_font  
GROFF_TMAC_PATH=/obj/powerpc.powerpc/src/tmp/legacy/usr/share/tmac  
_SHLIBDIRPREFIX=/obj/powerpc.powerpc/src/tmp  VERSION=FreeBSD 8.2-STABLE amd64 
802508  INSTALL=sh /src/tools/install.sh  
PATH=/obj/powerpc.powerpc/src/tmp/legacy/usr/sbin:/obj/powerpc.powerpc/src/tmp/legacy/usr/bin:/obj/powerpc.powerpc/src/tmp/legacy/usr/games:/obj/powerpc.powerpc/src/tmp/usr/sbin:/obj/powerpc.powerpc/src/tmp/usr/bin:/obj/powerpc.powerpc/src/tmp/usr/games:/sbin:/bin:/usr/sbin:/usr/bin
 /usr/bin/make KERNEL=kernel all -DNO_MODULES_OBJ

Re: ichwd0: unable to reserve GCS registers

2011-08-02 Thread John Baldwin
On Saturday, July 30, 2011 2:49:52 am Andriy Gapon wrote:
 on 19/07/2011 18:16 John Baldwin said the following:
  Hmm, can you get devinfo -r output from a working kernel with ichwd loaded? 
   
  You might be able to just build the kernel with 'nooptions NEW_PCIB'.
 
 I believe that I've got a similar problem with amdsbwd(4).
 It needs some resources (I/O ports) that belong to ACPI.
 The problem is that the driver attaches to isa bus which is under
 isab-pci-pcib and those particular resources are not assigned to the 
 Host-PCI
 bridge.
 
 I think that you already made a suggestion that perhaps isa bus should  
 directly
 attach to acpi bus when acpi is available.  Not sure if there are any
 alternative approaches.

Can you try this:

--- //depot/projects/pci/sys/dev/acpica/acpi.c  2011-06-25 12:05:19.0 

+++ //depot/projects/pci/sys/dev/acpica/acpi.c  2011-08-02 20:21:42.0 

@@ -1238,7 +1238,6 @@
 struct resource_list_entry *rle;
 struct resource_list *rl;
 struct resource *res;
-struct rman *rm;
 int isdefault = (start == 0UL  end == ~0UL);
 
 /*
@@ -1291,15 +1290,29 @@
 } else
res = BUS_ALLOC_RESOURCE(device_get_parent(bus), child, type, rid,
start, end, count, flags);
-if (res != NULL || start + count - 1 != end)
-   return (res);
 
 /*
  * If the first attempt failed and this is an allocation of a
  * specific range, try to satisfy the request via a suballocation
- * from our system resource regions.  Note that we only handle
- * memory and I/O port system resources.
+ * from our system resource regions.
  */
+if (res == NULL  start + count - 1 == end)
+   res = acpi_alloc_sysres(child, type, rid, start, end, count, flags);
+return (res);
+}
+
+/*
+ * Attempt to allocate a specific resource range from the system
+ * resource ranges.  Note that we only handle memory and I/O port
+ * system resources.
+ */
+struct resource *
+acpi_alloc_sysres(device_t child, int type, int *rid, u_long start, u_long end,
+u_long count, u_int flags)
+{
+struct rman *rm;
+struct resource *res;
+
 switch (type) {
 case SYS_RES_IOPORT:
rm = acpi_rman_io;
@@ -1311,6 +1324,7 @@
return (NULL);
 }
 
+KASSERT(start + count - 1 == end, (wildcard resource range));
 res = rman_reserve_resource(rm, start, end, count, flags  ~RF_ACTIVE,
child);
 if (res == NULL)
--- //depot/projects/pci/sys/dev/acpica/acpi_pcib_acpi.c2011-07-22 
18:19:55.0 
+++ //depot/projects/pci/sys/dev/acpica/acpi_pcib_acpi.c2011-08-02 
20:21:42.0 
@@ -541,6 +541,7 @@
 {
 #ifdef NEW_PCIB
 struct acpi_hpcib_softc *sc;
+struct resource *res;
 #endif
 
 #if defined(__i386__) || defined(__amd64__)
@@ -549,8 +550,11 @@
 
 #ifdef NEW_PCIB
 sc = device_get_softc(dev);
-return (pcib_host_res_alloc(sc-ap_host_res, child, type, rid, start, end,
-   count, flags));
+res = pcib_host_res_alloc(sc-ap_host_res, child, type, rid, start, end,
+   count, flags);
+if (res == NULL  start + count - 1 == end)
+   res = acpi_alloc_sysres(child, type, rid, start, end, count, flags);
+return (res);
 #else
 return (bus_generic_alloc_resource(dev, child, type, rid, start, end,
count, flags));
--- //depot/projects/pci/sys/dev/acpica/acpivar.h   2011-06-22 
16:25:39.0 
+++ //depot/projects/pci/sys/dev/acpica/acpivar.h   2011-08-02 
20:21:42.0 
@@ -382,6 +382,8 @@
struct resource *res, ACPI_RESOURCE *acpi_res);
 ACPI_STATUSacpi_parse_resources(device_t dev, ACPI_HANDLE handle,
struct acpi_parse_resource_set *set, void *arg);
+struct resource *acpi_alloc_sysres(device_t child, int type, int *rid,
+   u_long start, u_long end, u_long count, u_int flags);
 
 /* ACPI event handling */
 UINT32 acpi_event_power_button_sleep(void *context);

-- 
John Baldwin
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


update from old current (october) to 9.0 beta fails in installworld

2011-08-02 Thread Patrick Lamaiziere
Hello,

Looks like I've broke my soekris net5501 while doing installworld (built
with clang)

=== libexec/rtld-elf (install)
chflags noschg /usr/libexec/ld-elf.so.1
install -s -o root -g wheel -m 555  -C -b -fschg -S ld-elf.so.1 /libexec
install -o root -g wheel -m 444 rtld.1.gz  /usr/share/man/man1
*** Signal 4

Stop in /usr/src/libexec/rtld-elf.
*** Error code 1

# ls
Instruction interdite(core dumped)

(instruction interdite = illegal/forbidden instruction)

Are there known issues for updating (I didn't follow the single
user step to install the world, as usual, because the box is only
reachable via ssh)  ?

Thanks for 9.0, looks nice.
Regards.
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Bug: devfs is sure to have the bug.

2011-08-02 Thread Kohji Okuno
Hello,

I think that devfs is sure to have the bug.
I found that I couldn't open /dev/XXX though the kernel detected XXX
device.


dm-dm_generation is updated with devfs_generation in
devfs_populate(), and the context holds only dm-dm_lock in
devfs_populate().

On the other hand, devfs_generation is incremented in devfs_create()
and devfs_destroy() the context holds only devmtx in devfs_create()
and devfs_destroy().

If a context executes devfs_create() when other context is executing
(***), then dm-dm_generation is updated incorrect value.
As a result, we can not open the last detected device (we receive ENOENT).

I think that we should change the lock method.
May I have advice?

void
devfs_populate(struct devfs_mount *dm)
{

sx_assert(dm-dm_lock, SX_XLOCKED);
if (dm-dm_generation == devfs_generation)
return;
while (devfs_populate_loop(dm, 0))
continue;
(***)
dm-dm_generation = devfs_generation;
}

void
devfs_create(struct cdev *dev)
{
struct cdev_priv *cdp;

mtx_assert(devmtx, MA_OWNED);
cdp = cdev2priv(dev);
cdp-cdp_flags |= CDP_ACTIVE;
cdp-cdp_inode = alloc_unrl(devfs_inos);
dev_refl(dev);
TAILQ_INSERT_TAIL(cdevp_list, cdp, cdp_list);
devfs_generation++;
}

void
devfs_destroy(struct cdev *dev)
{
struct cdev_priv *cdp;

mtx_assert(devmtx, MA_OWNED);
cdp = cdev2priv(dev);
cdp-cdp_flags = ~CDP_ACTIVE;
devfs_generation++;
}

Thanks.
--
 Kohji Okuno (okuno.ko...@jp.panasonic.com)
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org


Re: Bug: devfs is sure to have the bug.

2011-08-02 Thread Kohji Okuno
Hello,

 Hello,
 
 I think that devfs is sure to have the bug.
 I found that I couldn't open /dev/XXX though the kernel detected XXX
 device.
 
 
 dm-dm_generation is updated with devfs_generation in
 devfs_populate(), and the context holds only dm-dm_lock in
 devfs_populate().
 
 On the other hand, devfs_generation is incremented in devfs_create()
 and devfs_destroy() the context holds only devmtx in devfs_create()
 and devfs_destroy().
 
 If a context executes devfs_create() when other context is executing
 (***), then dm-dm_generation is updated incorrect value.
 As a result, we can not open the last detected device (we receive ENOENT).
 
 I think that we should change the lock method.
 May I have advice?
 
 void
 devfs_populate(struct devfs_mount *dm)
 {
 
 sx_assert(dm-dm_lock, SX_XLOCKED);
 if (dm-dm_generation == devfs_generation)
 return;
 while (devfs_populate_loop(dm, 0))
 continue;
 (***)
 dm-dm_generation = devfs_generation;
 }
 
 void
 devfs_create(struct cdev *dev)
 {
 struct cdev_priv *cdp;
 
 mtx_assert(devmtx, MA_OWNED);
 cdp = cdev2priv(dev);
 cdp-cdp_flags |= CDP_ACTIVE;
 cdp-cdp_inode = alloc_unrl(devfs_inos);
 dev_refl(dev);
 TAILQ_INSERT_TAIL(cdevp_list, cdp, cdp_list);
 devfs_generation++;
 }
 
 void
 devfs_destroy(struct cdev *dev)
 {
 struct cdev_priv *cdp;
 
 mtx_assert(devmtx, MA_OWNED);
 cdp = cdev2priv(dev);
 cdp-cdp_flags = ~CDP_ACTIVE;
 devfs_generation++;
 }
 
 Thanks.

I propose the solution. May I have advice?

void
devfs_populate(struct devfs_mount *dm)
{

sx_assert(dm-dm_lock, SX_XLOCKED);
#if 1 /* I propose... */
int tmp_generation;
retry:
tmp_generation = devfs_generation;
if (dm-dm_generation == tmp_generation)
return;
while (devfs_populate_loop(dm, 0))
continue;
if (tmp_generation != devfs_generation)
goto retry;
dm-dm_generation = tmp_generation;
#else /* Original */
if (dm-dm_generation == devfs_generation)
return;
while (devfs_populate_loop(dm, 0))
continue;
dm-dm_generation = devfs_generation;
#endif
}

Thanks,
  Kohji Okuno (okuno.ko...@jp.panasonic.com)
___
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to freebsd-current-unsubscr...@freebsd.org