Kernel patch 138888 breaks cluster
I am trying to set up a cluster between guest LDoms on two physical 5140 servers. Without the kernel patch 138888 -03 everything works fine. When I install the patch before or after the cluster is created, it results in the two LDoms not being able to communicate over the interconnects, reporting that one or the other node is unreachable.
Does anyone know why the patch causes that problem and if there is a fix? I'm leaving the patch off for now.
Thanks.
[PSARC 2009/069 802.1Q tag mode link property|http://mail.opensolaris.org/pipermail/opensolaris-arc/2009-February/013817.html]
Similar Messages
-
Steps to upgrade kernel patch in AIX cluster environment
Hello All,
We are going to perform kernel upgrade in AIX cluster environment.
Please let me know the other locations to copy the new kernel files ,
default location
CI+DB server
APP1
Regards
SubbuHi Subbu
Refer the SAP link
Executing the saproot.sh Script - Java Support Package Manager (OBSOLETE) - SAP Library
1. Extract the downloaded files to a new location using SAPCAR -xvf <file_name> as sidadm.
2. copy the extracted files to sapmnt/<SID>/exe
3. Start the DB & Application.
Regards
Sriram -
Kernel patches = total downtime?
We are preparing to install errata patches for RHEL4 and I am trying to find any documentation that might tell me whether or not we need to bring down a cluster to install the kernel patches. I remember hearing somewhere that most OS kernel patches require the cluster to come down because each node must be at the same level. How do I determine if this applies for the patches at hand?
kernel-largesmp-2.6.9-67.0.1.EL.x86_64.rpm
oracleasm-2.6.9-67.0.1.ELlargesmp-2.0.3-1.x86_64.rpm
ocfs2-2.6.9-67.0.1.ELlargesmp-1.2.7-1.el4.x86_64.rpm
TIAOracle Support.... or lack thereof. They said they do not test everything in house, so I would have to test on my own. Obviously, I wound up with one of those front-line people.
Anyway, I did test the rolling patch on my end and it appears to fine. -
Apply one non-kernel Solaris10 patch at Sun Cluster ***Beginner Question***
Dear Sir/Madam,
Our two Solaris 10 servers are running Sun Cluster 3.3. One server "cluster-1" has one online running zone "classical". Another server
"cluster-2" has two online running zones, namely "romantic" and "modern". We are tying to install a regular non-kernel patch #145200-03 at cluster-1 LIVE which doesn't have prerequisite and no need to reboot afterwards. Our goal is to install this patch at the global zone,
three local zones, i.e., classical, romantic and modern at both cluster servers, cluster-1 and cluster02.
Unfortunately, when we began our patching at cluster-1, it could patch the running zone "classical" but we were getting the following errors which prevent it from continuing with patching at zones, i.e., "romantic" and "modern" which are running on cluster-2. And when we try to patch cluster-2, we are getting similiar patching error about failing to boot non-global zone "classical" which is in cluster-1.
Any idea how I could resolve this ? Do we have to shut down the cluster in order to apply this patch ? I would prefer to apply this
patch with the Sun Cluster running. If not, what's the preferred way to apply simple non-reboot patch at all the zones at both nodes in the Sun Cluster ?
Like to hear from folks who have experience in dealing with patching in Sun Cluster.
Thanks, Mr. Channey
p.s. Below are output form the patch #145200-03 run, zoneadm and clrg
outputs at cluster-1
root@cluster-1# patchadd 145200-03
Validating patches...
Loading patches installed on the system...
Done!
Loading patches requested to install.
Done!
Checking patches that you specified for installation.
Done!
Approved patches will be installed in this order:
145200-03
Preparing checklist for non-global zone check...
Checking non-global zones...
Failed to boot non-global zone romantic
exiting
root@cluster-1# zoneadm list -iv
ID NAME STATUS PATH BRAND IP
0 global running / native shared
15 classical running /zone-classical native shared
- romantic installed /zone-romantic native shared
- modern installed /zone-modern native shared
root@cluster-1# clrg status
=== Cluster Resource Groups ===
Group Name Node Name Suspended Status
classical cluster-1 No Online
cluster-2 No Offline
romantic cluster-1 No Offline
cluster-2 No Online
modern cluster-1 No Offline
cluster-2 No OnlineHi Hartmut,
I kind of got the idea. Just want to make sure. The zones 'romantic' and 'modern' show "installed" as the current status at cluster-1. These 2 zones are in fact running and online at cluster-2. So I will issue your commands below at cluster-2 to detach these zones to "configured" status :
cluster-2 # zoneadm -z romantic detach
cluster-2 # zoneadm -z modern detach
Afterwards, I apply the Solaris patch at cluster-2. Then, I go to cluster-1 and apply the same Solaris patch. Once I am done patching both cluster-1 and cluster-2, I will
go back to cluster-2 and run the following commands to force these zones back to "installed" status :
cluster-2 # zoneadm -z romantic attach -f
cluster-2 # zoneadm -z modern attach -f
CORRECT ?? Please let me know if I am wrong or if there's any step missing. Thanks much, Humphrey
root@cluster-1# zoneadm list -iv
ID NAME STATUS PATH BRAND IP
0 global running / native shared
15 classical running /zone-classical native shared
- romantic installed /zone-romantic native shared
- modern installed /zone-modern native shared -
Steps for Kernel Patch Updation on Solaris 10 X4100 with 2disks mirrored
Hi all,
I have Solaris 10 10/06 (118855-19) installed on one of the X4100 server. This is the time for me to update the latest kernel patch (118855-36). We have two disks mirrored. My questions are,
1) Do i need to detach any of the disk from the mirror before doing any patching.
2) Is it possible to install the patches without detaching any disks from the mirror. (i.e. installeing patch on mirrored root filesystem)
3) how to boot from the second disk in case the patch installation creates problem while booting up.
Any suggestions or steps which you have already implemented for the above scenario.This isn't really a question for this forum, you may be better to look at some of the sys-admin forums for a complete answer.
You should not need to break the mirror in order to apply the kernel patch, however doing so would allow for quicker recovery of the system should something go wrong during patching.
I would strongly advise that you read the special install instructions for the kernel patch prior to installing it.
http://sunsolve.sun.com/search/document.do?assetkey=1-21-118855-36-1
You may also wish to use a patch cluster rather than smpatch/updatemanager, these can be downloaded from SunSolve:
http://sunsolve.sun.com/private-cgi/show.pl?target=patchpage -
Static library not accessed properly after Solaris Kernel patch update !
Hi,
We are facing a sever issue in our application after our customer updated the Solaris 10 kernel patch u9 to u10.
We have two static libraries libdlib.a and libDLIB.a, with exactly same code base, but these two libraries are scattered across the code base and linked by many shared objects in our application.
However, one of the shared objects that links to "libdlib.a" library tries to access a function from "libDLIB.a". This behavior is causing a crash at a later point, since that shared object is supposed to access the function from "libdlib.a". Moreover, we found this is happening through the use of dbx.
I'm unable to understand why this problem surfaced after kernel patch update, though still the shared object works fine on Solaris 10 u9 patch.
Flow is something like this :
1. syslogrecorder.so gets loaded by one of the processes.
2. syslogrecorder.so is linked to "libdlib.a" at compile time, so it uses "libdlib.a" function DLIB_LoadLibrary and gets a handle to all the function pointers of the loaded library ( The purpose of DLIB_LoadLibrary is to load a shared library dynamically using dlopen )
3. syslogrecorder.so tries to do a "dlsym" and to do that it needs access to the library handle which we got in previous call DLIB_LoadLibrary. So syslogrecorder.so calls another function from DLIB_ProcAddress, which actually gives back the access to the loaded shared library.
Here is a catch in step 3, it is supposed to call DLIB_ProcAddress from the libdlib.a but as we observed from dbx output it does so by calling DLIB_ProcAddress from libDLIB.a and hence fails to give back the access to loaded shared library, causing crash at a later point in code.
Can someone put some light here that why this could happen ??
Thanks
KuldeepTo clarify: You did not modify or rebuild any of your binaries, but after installing a kernel patch, the application stopped working. Most likely, something about your application depended on a accidental behavior of the runtime loader. That accidental behavior changed due to the patch, and your application failed.
For example, if there is a circular dependency among shared libraries, the loader will break the cycle at an arbitrary point to establish an initialization order. By accident, that order might work, in the sense of not causing a problem. A change to the loader could cause the cycle to be broken at a different point, and the resulting initialization order could cause a now-uninitialized object to be accessed. I'm not saying this is what is wrong, but this is an example of a dependency on accidental loader behavior.
Finding your actual problem will require tracing the sequence of operations leading up to the failure. You are more likely to find help in a Solaris linker forum. AFAIK, there are currently no Oracle forums for Solaris, and the old OpenSolaris forums have been converted to mailing lists. You can try the "tools-linking" list found on this page:
http://mail.opensolaris.org/mailman/listinfo
I also suggest you review the paper on best practices for using shared libraries written by Darryl Gove and myself:
http://www.oracle.com/technetwork/articles/servers-storage-admin/linkinglibraries-396782.html
If you have a service contract with Oracle, you can use your support channel to get more help.
Edited by: Steve_Clamage on May 18, 2012 3:21 PM -
Kernel patch update for solaris 10 x86
I have Solaris 10 06/06 installed on x86 machine which is using svm and clustered with another node. The kernel revision is 118855-19 from the uname -a output. I am looking for the kernel patch updation and I heard 118855-36 is the latest one. Shall I go ahead with this patch and what r the dependency patches for this.
If anyone done this please suggest and guide me..For Solaris 10 x86 the latest offered with smpatch is 125101-07 and yes it may be recommended to patch. Then again you said clustered with sun cluster? You may want to check the documentation and if your machines aren't facing the internet you may wait for 7/07 to hit the street and do an upgrade.
-
Solaris 10 U4 and kernel patches
When I install a fresh U4 machine, I then (as I always do) apply the recommended patch cluster. U4 has kernel patched to 120011-14. In the patch cluster, there are kernel patches 118833-36 and also 120011-14. When I run the patch cluster, it installs 118833-36! Isn't this older than the kernel on there? Shouldn't both 118833-36 and 120011-14 BOTH not install as the kernel is already at level 120011-14. The cluster gets to 118833-36 installs that and then of course every patch after that one fails as the machine is waiting for a reboot.
KJP 137138-09 should be ok with cpquary3 driver 1.9.1. KJP 137138 introduced new feature which does not allow misaligned pointer mutexes to work and panics the system. with revision 07 SUN introduced a new environment variable as a for applications which cannot be ported easily "6729759 need to accommodate non-8-byte-aligned mutexes".
This is documented in alert 244606 "The resolution for OpenSolaris releases sets _THREAD_LOCKS_MISALIGNED to 0. This is to ensure that any faulty applications fail and are identified. To allow such applications to continue to work on OpenSolaris releases based upon snv_96 or later, the environment variable _THREAD_LOCKS_MISALIGNED must be set to 1." For this to work you need to have revision 09 of this KJP applied.
Can you post the stack trace so i can have a look at it. I guess you have another application which uses unaligned mutexes.
A pkginfo of the cpquary3 package would also be useful.
-Marco -
I have a T2000 installed with the Solaris 10 1/06 release with several zones created on it. 4 zones are "sparse" root, and one (zone-5) is a "whole root" zone.
In order to apply and certify (internally) the latest sendmail patch, Solaris 10 needs a later kernel patch than I had installed (this is a subject for another discussion...). So I downloaded the latest patch cluster (4/6 Recommended cluster) to apply it.
I shut down the non-global zones, and took the machine to single user mode, and installed the cluster. It seemed to go in fine, except for the following error:
Zone zone-5
Rejected patches:
122856-01
Patches that passed the dependency check:
None.
Fatal failure occurred - impossible to install any patches.
zone-5: For patch 122856-01, required patch 118822-30 does not exist.
Fatal failure occurred - impossible to install any patches.Now, 118822-30 is a kernel patch series that is prerequisite for the latest kernel patch (118833-03). Zone-5 is my only whole-root zone. I then looked at the patch cluster log, and discovered that a handful of patches (including 118822-30) had also failed:
titan15n> grep failed /var/sadm/install_data/Solaris_10_Recommended_Patch_Cluster_log
Pkgadd failed. See /var/tmp/119254-19.log.6615 for details
Pkgadd failed. See /var/tmp/118712-09.log.9307 for details
Pkgadd failed. See /var/tmp/119578-18.log.15160 for details
Pkgadd failed. See /var/tmp/121308-03.log.18339 for details
Pkgadd failed. See /var/tmp/119689-07.log.22068 for details
Pkgadd failed. See /var/tmp/118822-30.log.9404 for details
Pkgadd failed. See /var/tmp/119059-11.log.29911 for details
Pkgadd failed. See /var/tmp/119596-03.log.4724 for details
Pkgadd failed. See /var/tmp/119985-02.log.8349 for details
Pkgadd failed. See /var/tmp/122032-02.log.13334 for details
Pkgadd failed. See /var/tmp/118918-14.log.27743 for detailsLooking at any of these logs (in the non-global zone-5's /var/tmp directory shows failures like the following snippet:
pkgadd: ERROR: unable to create unique temporary file </usr/platform/sun4us/include/sys/cheetahregs.h6HaG8w>: (30) Read-only file sy
stem
pkgadd: ERROR: unable to create unique temporary file </usr/platform/sun4us/include/sys/clock.h7HaG8w>: (30) Read-only file system
pkgadd: ERROR: unable to create unique temporary file </usr/platform/sun4us/include/sys/dvma.h8HaG8w>: (30) Read-only file systemQuestion(s):
Why would there be read-only file systems where tmp files are getting written? Possibly a timing issue?
Is there a "best practice" on applying patch clusters, and specifically, the kernel patch? Did I make a mistake in taking the zones down first? It seems like the zones were being booted up as the patches were getting applied, but I may be misinterpreting the output.
Even though the patches failed to apply to zone-5, the uname -a output in the zone show the latest kernel patch, but does NOT show 118822-30 (118822-25 is what showrev -p in the non-global zone-5 shows -- which is the level I was at before attempting to patch).
Any solutions?
Thanks.The kernel config and patch are irrelevant - I have tried to compile the stock arch kernel just to make sure that it WASN'T the patch - I simple copied the folder from ABS, did makepkg and installed - no lucky. The problem seems to be that all of the kernels I compile end up with the folder in /lib/modules having -dirty on the end of them. How do I stop this '-dirty'?
I notice in the build I get this message -
==> Building the kernel
fatal: cannot describe '604d205b49b9a478cbda542c65bacb9e1fa4c840'
CHK include/linux/version.h -
MSCS and Kernel patches: Can someone please refresh my memory?
Greetings,
We run 4.7 Ent on a 2-node MSCS Cluster (SQL).
I need to do a kernel upgrade, but I have forgotten the precise distribution of kernel files outside of the "run" directory for the cluster.
I understand they are:
Main Kernel Files
shared_drive \usr\sap\<SID>\SYS\exe\run
MSCS Files (on each node)
local_drive \Windows\SapCluster\
local_drive \Windows\System32\
However, could someone please remind me which files go into
"SapCluster" and "System32", or if you know the location, point me to an SAP document that details the kernel patch process in an MSCS Cluster (rather than a general MSCS config document which is of no use in this situatio).
Thanks if anyone is able to help.
Tim
Edited by: Tim McKenzie on May 28, 2008 4:52 PMHi Tim,
We have a productive SAP R/3 4.7 (Windows 2003 IA64 Oracle 9.2) on a 2 nodes MSCS cluster.
In C:\windows\SapCluster
We have the following files :
backint.exe
brarchive.exe
brbackup.exe
brconnect.exe
brgui
brrecover.exe
brrestore.exe
brspace.exe
brtools.exe
cpio.exe
cpqccms.dll
dd.exe
dev_rout
mkszip.exe
mt.exe
niping.exe
pstat.exe
rfcoscol.exe
routtab.txt
sapevents.dll
sapgw
sapntchk.exe
sapntwaitforhalt.exe
saposcol.exe
saprouter.exe
sapsrvkill.exe
sapstart.exe
sapstartsrv.exe
sapstartsrv.exe.new
sapxpg.exe
uncompress.exe
So basically the SAP cluster dlls and the brtools.
We have also C:\windows\SapCluster\brgui with the brgui files
and C:\windows\SapCluster\sapgw with the standalone gateway executables
In C:\windows\system32 we have these SAP files :
sapmmc.dll
sapmmcada.dll
sapmmcinf.dll
sapmmcms.dll
saprc.dll
saprcex.dll
sapstart.log
sapstartsrv.exe
To update the kernel, we do it one node after the other one switching the SAP resources between the 2 nodes .
We of course keep the same patch level in the different directories.
Hope this helps.
Olivier
Hope this helps. -
Problem of SIGPOLL(SI_NOINFO) in latest Solaris9 kernel patch
Hi,
We are facing a rather strange problem with the latest kernel patch on Solaris 9. (Generic_112233-08). We had not faced this problem with any of the other kernel patches of Solaris 9.
Our application has a main thread and a single child thread (pthread). The main thread schedules aio_writes() on the raw disk interface and lets the child thread block on sigwaitinfo() to listen to the signal completion notification. This is communicated to it via the SI_ASYNCIO code of SIGPOLL. The child thread then informs the main thread by writing to a bi-directional pipe. Since the main thread has registered for read interest on the bi-directional pipe (via /dev/poll) it is informed of the completion of the aio_write() without having to block itself. Under normal circumstances, the child thread receives SIGPOLL with SI_ASYNCIO code.
This application has been running fine on all the previous builds of Solaris (Generic, Generic_112233-04, Generic_112233-06) on sparc platform expect with the latest kernel patch. The child thread now keeps receiving SIGPOLL with SI_NOINFO code. There has been no change in our application and we are perplexed to the reason of this behaviour. Since it is SI_NOINFO there is not much debugging information we can get.
We have been able to replicate this behaviour using a small stand-alone program. We are attaching it at the end of the email. We tried this program on a couple of different Sparc systems and were able to reproduce this behaviour on one of them but not on the other.
Has anybody faced problems with regard to SIGPOLL in the latest kernel patch of Solaris 9 for sparc systems ?
Thanks
Regards
Raj Pagaku
proxy-24:~ >uname -a
SunOS proxy-24 5.9 Generic_112233-08 sun4u sparc SUNW,Ultra-5_10
proxy-24:~ >gcc -v
Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.9/3.2/specs
Configured with: ../configure with-as=/usr/ccs/bin/as with-ld=/usr/ccs/bin/ld --disable-nls
Thread model: posix
gcc version 3.2
Compiled this program using the following command : gcc -g kernel_bug.c -lrt -lpthread
#include <stdio.h>
#include <aio.h>
#include <errno.h>
#include <fcntl.h>
#include <pthread.h>
#include <signal.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/resource.h>
#include <sys/stat.h>
#include <sys/types.h>
#define min(x,y) (((x)<=(y))?(x):(y))
#define DISPLAY_COUNT 10000
typedef struct DiskInfoCallOut {
void (*func_ptr)(void *);
void *data_ptr;
} DiskInfoCallOut;
typedef struct DiskInfo {
struct aiocb di_aiocb;
DiskInfoCallOut di_callout;
off_t di_currOffset;
int di_scheduled;
} DiskInfo;
typedef struct Disk {
int fd;
char *buffer;
int bufferLen;
} Disk;
static sigset_t aioSignalSet;
int aioSigFD[2];
int glob_scheduled = 1;
int glob_respond = 1;
Disk disk;
static void LaunchDiskOperation(DiskInfo *di);
char BUFDATA[4096] = {'a'};
char rawDeviceName[256] = "/dev/rdsk/";
static void
InitializeDisk()
int fd;
if ((fd = open(rawDeviceName, O_RDWR, 0)) == -1) {
fprintf(stderr, "Unable to open raw device \n");
exit(-1);
disk.fd = fd;
disk.buffer = BUFDATA;
disk.bufferLen = sizeof(BUFDATA);
static void
AIOSignalHandler(int sigNum, siginfo_t* si, void* context)
fprintf(stderr, "WARN: got signal %d in AIOSignalHandler!\n", sigNum);
/* Function implementing the slave thread */
static void*
AIOSignalThread(void *arg)
struct sigaction sa;
siginfo_t info;
sigset_t ss;
int sig_num;
int retVal;
/* Initialize the signal set*/
sigemptyset(&ss);
sigaddset(&ss, SIGPOLL);
if ((retVal = pthread_sigmask(SIG_SETMASK, &ss, NULL))) {
fprintf(stderr, "pthread_sigmask failed in AIOSignalThread \n");
exit(-1);
sa.sa_handler = NULL;
sa.sa_sigaction = AIOSignalHandler;
sa.sa_mask = aioSignalSet;
sa.sa_flags = SA_SIGINFO;
if (sigaction(SIGPOLL, &sa, NULL)) {
fprintf(stderr, "sigaction in AIOSignalThread \n");
exit(-1);
/* Wait infinitely for the signals and respond to the main thread */
while (1) {
sig_num = sigwaitinfo(&aioSignalSet, &info);
if (sig_num != SIGPOLL) {
fprintf(stderr, "caught unexpected signal %d in AIOSignalThread \n",
sig_num);
exit(-1);
if (info.si_code != SI_ASYNCIO){
fprintf(stderr, "ERROR: siginfo_t had si_code != SI_ASYNCIO, si_code = %d \n", info.si_code);
continue;
/* Write the stored pointer value in the pipe so that the main thread can process it */
if (write(aioSigFD[1], &(info.si_value.sival_ptr), sizeof(info.si_value.sival_ptr)) !=
sizeof(info.si_value.sival_ptr)) {
perror("Couldn't write the whole pointer");
exit(-1);
return (NULL);
static void
Init()
pthread_attr_t aioAttr;
pthread_t aioThread;
int retVal = 0;
/* Create a bidirectional pipe */
if (pipe(aioSigFD)) {
perror("pipe failed");
exit(-1);
/* Initialize to prevent other threads from being interrupted by
SIGPOLL */
sigemptyset(&aioSignalSet);
sigaddset(&aioSignalSet, SIGPOLL);
if ((retVal = pthread_sigmask(SIG_BLOCK, &aioSignalSet, NULL))) {
fprintf(stderr, "pthread_sigmask failed in Init\n");
exit(-1);
InitializeDisk();
if ((retVal = pthread_attr_init(&aioAttr)))
fprintf(stderr, "pthread_attr_init failed \n");
if ((retVal = pthread_attr_setdetachstate(&aioAttr, PTHREAD_CREATE_DETACHED)))
fprintf(stderr, "pthread_attr_setdetachstate failed \n");
if ((retVal = pthread_attr_setscope(&aioAttr, PTHREAD_SCOPE_SYSTEM)))
fprintf(stderr, "pthread_attr_setscope failed in \n");
if ((retVal = pthread_attr_setstacksize(&aioAttr, 2*1024*1024)))
fprintf(stderr, "pthread_attr_setstacksize failed \n");
if ((retVal = pthread_create(&aioThread, &aioAttr,
AIOSignalThread, NULL)))
fprintf(stderr, "pthread_create failed \n");
static void
UpdateDiskWriteInformation(DiskInfo *di)
di->di_currOffset += disk.bufferLen;
di->di_scheduled = 0;
static void
DiskOpCompleted(void *ptr)
DiskInfo di = (DiskInfo )ptr;
if (aio_error(&di->di_aiocb))
perror("aio_error");
if (aio_return(&di->di_aiocb) < 0)
perror("aio_return ");
UpdateDiskWriteInformation(di);
glob_respond++;
static void
LaunchDiskOperation(DiskInfo *di)
int res;
di->di_callout.func_ptr = DiskOpCompleted;
di->di_callout.data_ptr = di;
memset(&di->di_aiocb, 0, sizeof(di->di_aiocb));
di->di_aiocb.aio_fildes = disk.fd;
di->di_aiocb.aio_buf = disk.buffer;
di->di_aiocb.aio_nbytes = disk.bufferLen;
di->di_aiocb.aio_offset = di->di_currOffset;
di->di_scheduled = 1;
di->di_aiocb.aio_sigevent.sigev_notify = SIGEV_SIGNAL;
di->di_aiocb.aio_sigevent.sigev_signo = SIGPOLL;
di->di_aiocb.aio_sigevent.sigev_value.sival_ptr = &di->di_callout;
res = aio_write(&di->di_aiocb);
if (res == -1) {
perror("aio op error");
static void
HandleSignalResponses()
int fd;
#define DISKINFO_CALLOUT_MAX 64
DiskInfoCallOut* callout[DISKINFO_CALLOUT_MAX];
struct stat pipeStat;
int numCompleted;
int bytesToRead;
int sz;
int i;
fd = aioSigFD[0];
while (1) {
/* Find whether there is any data in the pipe */
if(-1 == fstat(fd, &pipeStat)) {
perror("fstat");
exit(-1);
if (pipeStat.st_size < sizeof(DiskInfoCallOut *))
break;
numCompleted = min((pipeStat.st_size/sizeof(DiskInfoCallOut *)),DISKINFO_CALLOUT_MAX);
bytesToRead = numCompleted * sizeof(DiskInfoCallOut *);
if ((sz = read(fd, callout, bytesToRead)) != bytesToRead) {
perror("Error reading from pipe");
exit(-1);
for (i = 0; i < numCompleted; i++)
(*callout[i]->func_ptr)(callout[i]->data_ptr);
int main(int argc, char *argv[])
DiskInfo *di;
FILE *logPtr1 = NULL;
FILE *logPtr2 = NULL;
FILE *logPtr3 = NULL;
struct rusage ru;
struct timeval t1, t2;
long timeTaken = 0;
int writeCount = 0;
int i;
char logFileName1[1024];
char logFileName2[1024];
char logFileName3[1024];
if (argc < 2) {
fprintf(stderr, "Usage : %s <partition_name> \n", argv[0]);
exit(-1);
strcat(rawDeviceName, argv[1]);
writeCount = 1;
printf("Partition selected = %s \n", rawDeviceName);
di = calloc(writeCount, sizeof(DiskInfo));
sprintf(logFileName1, "%s.log1", argv[0]);
if ((logPtr1 = fopen(logFileName1, "w+")) == NULL) {
fprintf(stderr, "Unable to create file test_pgm \n");
exit(-1);
sprintf(logFileName2, "%s.log2", argv[0]);
if ((logPtr2 = fopen(logFileName2, "w+")) == NULL) {
fprintf(stderr, "Unable to create file test_pgm \n");
exit(-1);
sprintf(logFileName3, "%s.log3", argv[0]);
if ((logPtr3 = fopen(logFileName3, "w+")) == NULL) {
fprintf(stderr, "Unable to create file test_pgm \n");
exit(-1);
Init();
for (i = 0; i < writeCount; i++) {
di.di_currOffset = (1 << 18) * (i + 1);
di[i].di_scheduled = 0;
gettimeofday(&t1, NULL);
while (1) {
int curScheduled = 0;
/* Schedule the disk operations */
for (i = 0; i < writeCount; i++) {
if (di[i].di_scheduled == 0) {
LaunchDiskOperation(&di[i]);
glob_scheduled++;
curScheduled++;
/* Handle the responses */
HandleSignalResponses();
if ((curScheduled) && (glob_respond % DISPLAY_COUNT == 0)) {
gettimeofday(&t2, NULL);
timeTaken = ((t2.tv_sec * 1000000 + t2.tv_usec) -
(t1.tv_sec * 1000000 + t1.tv_usec))/1000;
printf("Scheduled = %d, Responded = %d, Time Taken = %ld ms \n",
glob_scheduled, glob_respond, timeTaken);
fprintf(logPtr1, "Scheduled = %d, Responded = %d, Time Taken = %ld ms \n",
glob_scheduled, glob_respond, timeTaken);
fprintf(stderr,"wrote to logPtr1 ..\n");
fprintf(logPtr2, "Scheduled = %d, Responded = %d, Time Taken = %ld ms \n",
glob_scheduled, glob_respond, timeTaken);
fprintf(stderr,"wrote to logPtr2 ..\n");
fprintf(logPtr3, "Scheduled = %d, Responded = %d, Time Taken = %ld ms \n",
glob_scheduled, glob_respond, timeTaken);
fprintf(stderr,"wrote to logPtr3 ..\n");
t1 = t2;Hi @cooldog ,
I hit this same LVM2 snapshot kernel oops on several Oracle Linux 6.5 servers running UEK R3 kernel version 3.8.13-16.3.1. I have Linux Premier Support so I opened a Service Request. Oracle Support got back to me with the following notes.
Hello Matt,
Bug 17487738 : EXT4: STRESS TESTING WITH SUSPEND/RESUME FS ACCESS CAUSES FS ERRORS This bug is fixed in kernel version: 3.8.13-18. This kernel will be available quite soon for download.
You may upgrade the kernel once its available. ~Siju
Update
Dear Matt, Latest available UEK3 kernel version 'kernel-uek-3.8.13-26.el6uek.x86_64' incorporates the required bugfix. [root@server1 tmp]# rpm -q --changelog -p kernel-uek-3.8.13-26.el6uek.x86_64.rpm | grep -i 17487738
warning: kernel-uek-3.8.13-26.el6uek.x86_64.rpm: Header V3 RSA/SHA256 signature: NOKEY, key ID ec551f03
- fs: protect write with sb_start/end_write in generic_file_write_iter (Guangyu Sun) [Orabug: 17487738] <<<<<<======================================== You can download the UEK3 kernel from ULN or from public-yum repo.
http://public-yum.oracle.com/repo/OracleLinux/OL6/UEKR3/latest/x86_64/getPackage/kernel-uek-firmware-3.8.13-26.el6uek.noarch.rpm
http://public-yum.oracle.com/repo/OracleLinux/OL6/UEKR3/latest/x86_64/getPackage/kernel-uek-3.8.13-26.el6uek.x86_64.rpm Hope this helps! ~Siju
Subscribe to the Oracle Linux el-errata mailing list .
The latest kernel-uek-3.8.13-26.el6uek.x86_64 version fixed the problem.
- Matt -
I try kernel patch 114 to 159 but I have a problem
Distpatcher is being yellow "Running but Dialog Queue info unavailable" and WP Table is empty in SAP MMC but I can logon SAP on SAP GUI.
and I can see workprocess in task manager.
I aleady patch in QAS and DEV . there are not any problems.
I think MSCS may be cause of problem.
PRD was confiured MSCS.
Microsoft cluster library patch was '114' in sapstartsrv.log
Microsoft cluster library patch must be same disp+work ?
so how can I get microsoft cluster library patch ?
and this is not related with problem, how can I do?
help please
thanksFor MSCS there is diffrent procedure to stop SAP for kernel upgrade.
For windows, open cluster administrator, you will find ur SAP application instance..then righ click on it and select "take offline"
you SAP MMC may not go show u gray colour, sometimes it will be yellow. then in ur stopped node host, copy ur kernel files. then start server using "bring online" option in cluster administartor.
do not forget to take backup of ur old kernel before switching the kernel. -
Upgradation of kernel patch in clustred enviroment
hi
i have to upgrade the kernel patch from 144 to 205
we have a clustering in our production server
ECC6.0
HP-UX
Oracle 10g
can anyone guide me step by step how to do this .
regards
Aditya RathoreHi,
See the below threads,
[Kernel Upgrade on Solaris Cluster Failed;
Thanks
Shambo -
Question about kernel patch revisions
Hello
Installing a recommended patch cluster for Solaris 9. I've noticed there are serveral patches for the kernel. Why is this? Also when I type uname -a and it shows the "revision" of the system, what is this referring to?
Thanks in advance.When the kernel patch starts getting too big and unwieldy, they create a new kernel patch and list the previous patch as a prereq.
The revision referred to in uname -a is the kernel patch revision. -
Kernel Patch upgrade results into error
Recently, we upgraded our R/3 640 kernel from patch number 196 to 327. It went successful.
But now, the Sales and order team is having problem in saving the orders(VA02, VA01).
While saving Sales order, error pops up saying "dialog step number missing".
Kindly suggest.Hi ppl,
The problem has been resolved.
As i said, problem wasnt with the upgrade, but came thereafter, functional team faced issues while switching between the windows.
Problem was with the Gui level, it needed to be upgraded too after the kernel patch upgrade.
Thanks a lot for putting your thoughts.
Thanks
Maybe you are looking for
-
Display PDF Documents Stored In Database
Hi I apologise that this question has been asked many times, but I just do not seem to be able to find answer to my question in many other posts over the years. We have pdf documents stored in database and wish for client to view from forms session.
-
Free Goods Determination for other transaction types
Hi, Does anybody know of any Function Modules or Class names that determines Free Goods determination in a Sales Order? We are thinking if this functionality could be mimicked for other transaction types? Thanks!
-
RAW support for Panasonic DMC-FZ1000.
My research indicated 5.2 supports the DMC-FZ100 for RAW. I just purchased and installed upgrade to Lightroom 5.2 from 4.4 but it does not support the camera in RAW. Non-support message is received when trying to import RAW files from the camera. H
-
Hi, i have a requirement where based on a condition i need to add a new segment dynamically in Inbound IDOC. I have written the code in the user exit of the inbound FM. Its adding new segments and process it perfectly. But when i see the IDOC
-
Cascading List of values in Query Panel
Hello, This is related to the thread Re: Cascading List of Values & Query Panel Hello, Thanks for a nice solution. I have a similar situation. I have a query panel with auto make name list of values returning make as name and make id into the hidden