Alex Keda
2013-05-02 21:02:15 UTC
see begin in:
http://lists.freebsd.org/pipermail/freebsd-current/2012-November/038000.html
today, I have time and try find problem commit for 9-stable
2012.05.04.15.20.00 - all work OK
2012.05.05.00.00.00 - cannot boot
it's only two kernel-related file for this period:
Edit src/lib/libc/gen/sem_new.c
Add delta 1.8.2.2 2012.05.04.20.45.53 jilles
Edit src/sys/dev/pci/pci.c
Add delta 1.425.2.8 2012.05.04.15.38.47 hselasky
Edit src/sys/ufs/ufs/ufs_vnops.c
Add delta 1.328.2.7 2012.05.04.15.51.23 jh
diff -Nru /usr/src/sys/dev/pci/pci.c /tmp/src/sys/dev/pci/pci.c
--- /usr/src/sys/dev/pci/pci.c 2013-05-03 00:05:19.000000000 +0400
+++ /tmp/src/sys/dev/pci/pci.c 2013-05-02 23:56:38.000000000 +0400
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/pci/pci.c,v 1.425.2.7 2012/04/11
20:50:17 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/pci/pci.c,v 1.425.2.8 2012/05/04
15:38:47 hselasky Exp $");
#include "opt_bus.h"
@@ -2746,16 +2746,15 @@
prefetch ? RF_PREFETCHABLE : 0);
if (res == NULL) {
/*
- * If the allocation fails, clear the BAR and delete
- * the resource list entry to force
- * pci_alloc_resource() to allocate resources from the
- * parent.
+ * If the allocation fails, delete the resource list entry
+ * to force pci_alloc_resource() to allocate resources
+ * from the parent.
*/
resource_list_delete(rl, type, reg);
- start = 0;
- } else
+ } else {
start = rman_get_start(res);
- pci_write_bar(dev, pm, start);
+ pci_write_bar(dev, pm, start);
+ }
return (barlen);
}
@@ -3824,7 +3823,7 @@
if ((desc = malloc(strlen(vp) + strlen(dp) + 3, M_DEVBUF,
M_NOWAIT)) !=
NULL)
sprintf(desc, "%s, %s", vp, dp);
- out:
+out:
if (vp != NULL)
free(vp, M_DEVBUF);
if (dp != NULL)
@@ -4100,7 +4099,7 @@
count, *rid, type, rman_get_start(res));
map = rman_get_start(res);
pci_write_bar(child, pm, map);
-out:;
+out:
return (res);
}
@@ -4289,19 +4288,6 @@
type, rid, rman_get_start(rle->res));
return;
}
-
-#ifndef __PCI_BAR_ZERO_VALID
- /*
- * If this is a BAR, clear the BAR so it stops
- * decoding before releasing the resource.
- */
- switch (type) {
- case SYS_RES_IOPORT:
- case SYS_RES_MEMORY:
- pci_write_bar(child, pci_find_bar(child, rid), 0);
- break;
- }
-#endif
resource_list_unreserve(rl, dev, child, type, rid);
}
resource_list_delete(rl, type, rid);
diff -Nru /usr/src/sys/ufs/ufs/ufs_vnops.c /tmp/src/sys/ufs/ufs/ufs_vnops.c
--- /usr/src/sys/ufs/ufs/ufs_vnops.c 2013-05-03 00:05:30.000000000 +0400
+++ /tmp/src/sys/ufs/ufs/ufs_vnops.c 2013-05-02 23:56:49.000000000 +0400
@@ -35,7 +35,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/ufs/ufs/ufs_vnops.c,v 1.328.2.6 2012/05/02
15:15:28 jh Exp $");
+__FBSDID("$FreeBSD: src/sys/ufs/ufs/ufs_vnops.c,v 1.328.2.7 2012/05/04
15:51:23 jh Exp $");
#include "opt_quota.h"
#include "opt_suiddir.h"
@@ -528,6 +528,10 @@
return (EINVAL);
}
if (vap->va_flags != VNOVAL) {
+ if ((vap->va_flags & ~(UF_NODUMP | UF_IMMUTABLE |
UF_APPEND |
+ UF_OPAQUE | UF_NOUNLINK | SF_ARCHIVED | SF_IMMUTABLE |
+ SF_APPEND | SF_NOUNLINK | SF_SNAPSHOT)) != 0)
+ return (EOPNOTSUPP);
if (vp->v_mount->mnt_flag & MNT_RDONLY)
return (EROFS);
/*
http://lists.freebsd.org/pipermail/freebsd-current/2012-November/038000.html
today, I have time and try find problem commit for 9-stable
2012.05.04.15.20.00 - all work OK
2012.05.05.00.00.00 - cannot boot
it's only two kernel-related file for this period:
Edit src/lib/libc/gen/sem_new.c
Add delta 1.8.2.2 2012.05.04.20.45.53 jilles
Edit src/sys/dev/pci/pci.c
Add delta 1.425.2.8 2012.05.04.15.38.47 hselasky
Edit src/sys/ufs/ufs/ufs_vnops.c
Add delta 1.328.2.7 2012.05.04.15.51.23 jh
diff -Nru /usr/src/sys/dev/pci/pci.c /tmp/src/sys/dev/pci/pci.c
--- /usr/src/sys/dev/pci/pci.c 2013-05-03 00:05:19.000000000 +0400
+++ /tmp/src/sys/dev/pci/pci.c 2013-05-02 23:56:38.000000000 +0400
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/pci/pci.c,v 1.425.2.7 2012/04/11
20:50:17 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/pci/pci.c,v 1.425.2.8 2012/05/04
15:38:47 hselasky Exp $");
#include "opt_bus.h"
@@ -2746,16 +2746,15 @@
prefetch ? RF_PREFETCHABLE : 0);
if (res == NULL) {
/*
- * If the allocation fails, clear the BAR and delete
- * the resource list entry to force
- * pci_alloc_resource() to allocate resources from the
- * parent.
+ * If the allocation fails, delete the resource list entry
+ * to force pci_alloc_resource() to allocate resources
+ * from the parent.
*/
resource_list_delete(rl, type, reg);
- start = 0;
- } else
+ } else {
start = rman_get_start(res);
- pci_write_bar(dev, pm, start);
+ pci_write_bar(dev, pm, start);
+ }
return (barlen);
}
@@ -3824,7 +3823,7 @@
if ((desc = malloc(strlen(vp) + strlen(dp) + 3, M_DEVBUF,
M_NOWAIT)) !=
NULL)
sprintf(desc, "%s, %s", vp, dp);
- out:
+out:
if (vp != NULL)
free(vp, M_DEVBUF);
if (dp != NULL)
@@ -4100,7 +4099,7 @@
count, *rid, type, rman_get_start(res));
map = rman_get_start(res);
pci_write_bar(child, pm, map);
-out:;
+out:
return (res);
}
@@ -4289,19 +4288,6 @@
type, rid, rman_get_start(rle->res));
return;
}
-
-#ifndef __PCI_BAR_ZERO_VALID
- /*
- * If this is a BAR, clear the BAR so it stops
- * decoding before releasing the resource.
- */
- switch (type) {
- case SYS_RES_IOPORT:
- case SYS_RES_MEMORY:
- pci_write_bar(child, pci_find_bar(child, rid), 0);
- break;
- }
-#endif
resource_list_unreserve(rl, dev, child, type, rid);
}
resource_list_delete(rl, type, rid);
diff -Nru /usr/src/sys/ufs/ufs/ufs_vnops.c /tmp/src/sys/ufs/ufs/ufs_vnops.c
--- /usr/src/sys/ufs/ufs/ufs_vnops.c 2013-05-03 00:05:30.000000000 +0400
+++ /tmp/src/sys/ufs/ufs/ufs_vnops.c 2013-05-02 23:56:49.000000000 +0400
@@ -35,7 +35,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/ufs/ufs/ufs_vnops.c,v 1.328.2.6 2012/05/02
15:15:28 jh Exp $");
+__FBSDID("$FreeBSD: src/sys/ufs/ufs/ufs_vnops.c,v 1.328.2.7 2012/05/04
15:51:23 jh Exp $");
#include "opt_quota.h"
#include "opt_suiddir.h"
@@ -528,6 +528,10 @@
return (EINVAL);
}
if (vap->va_flags != VNOVAL) {
+ if ((vap->va_flags & ~(UF_NODUMP | UF_IMMUTABLE |
UF_APPEND |
+ UF_OPAQUE | UF_NOUNLINK | SF_ARCHIVED | SF_IMMUTABLE |
+ SF_APPEND | SF_NOUNLINK | SF_SNAPSHOT)) != 0)
+ return (EOPNOTSUPP);
if (vp->v_mount->mnt_flag & MNT_RDONLY)
return (EROFS);
/*