This commit is contained in:
parent
dd5b847827
commit
f3962fe242
112
startpar-0.52.dif
Normal file
112
startpar-0.52.dif
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
--- makeboot.c
|
||||||
|
+++ makeboot.c 2008-08-13 16:34:52.985916688 +0200
|
||||||
|
@@ -13,6 +13,12 @@
|
||||||
|
#include <errno.h>
|
||||||
|
#include <limits.h>
|
||||||
|
#include "makeboot.h"
|
||||||
|
+#if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 600
|
||||||
|
+# include <sys/types.h>
|
||||||
|
+# include <sys/stat.h>
|
||||||
|
+# include <fcntl.h>
|
||||||
|
+static int o_flags = O_RDONLY;
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
|
||||||
|
int tree_entries = 0;
|
||||||
|
@@ -158,11 +164,28 @@ void parse_makefile(const char *path)
|
||||||
|
char *s, *strp, *p;
|
||||||
|
struct makenode *node;
|
||||||
|
|
||||||
|
- if ((fp = fopen(path, "r")) == NULL) {
|
||||||
|
+#if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 600
|
||||||
|
+ int fd;
|
||||||
|
+
|
||||||
|
+ if (getuid() == (uid_t)0)
|
||||||
|
+ o_flags |= O_NOATIME;
|
||||||
|
+ if ((fd = open(path, o_flags)) < 0) {
|
||||||
|
+ fprintf(stderr, "Can't open %s: %s\n", path, strerror(errno));
|
||||||
|
+ exit(1);
|
||||||
|
+ }
|
||||||
|
+ (void)posix_fadvise(fd, 0, 0, POSIX_FADV_WILLNEED);
|
||||||
|
+ (void)posix_fadvise(fd, 0, 0, POSIX_FADV_SEQUENTIAL);
|
||||||
|
+ (void)posix_fadvise(fd, 0, 0, POSIX_FADV_NOREUSE);
|
||||||
|
+
|
||||||
|
+ if ((fp = fdopen(fd, "r")) == NULL)
|
||||||
|
+#else
|
||||||
|
+ if ((fp = fopen(path, "r")) == NULL)
|
||||||
|
+#endif
|
||||||
|
+ {
|
||||||
|
fprintf(stderr, "Can't open %s: %s\n", path, strerror(errno));
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
-
|
||||||
|
+
|
||||||
|
while (fgets(buf, sizeof(buf), fp)) {
|
||||||
|
for (s = buf; *s && isspace(*s); s++)
|
||||||
|
;
|
||||||
|
@@ -198,6 +221,11 @@ void parse_makefile(const char *path)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+#if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 600
|
||||||
|
+ (void)posix_fadvise(fd, 0, 0, POSIX_FADV_DONTNEED);
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
fclose(fp);
|
||||||
|
|
||||||
|
for (node = tree_list; node; node = node->next) {
|
||||||
|
@@ -234,7 +262,17 @@ static void filter_files(const char *dir
|
||||||
|
|
||||||
|
filter_prefix = prefix;
|
||||||
|
snprintf(path, sizeof(path), "/etc/init.d/%s.d", dir);
|
||||||
|
+#if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 600
|
||||||
|
+ if ((i = open(path, o_flags|O_DIRECTORY|O_LARGEFILE)) >= 0) {
|
||||||
|
+ (void)posix_fadvise(i, 0, 0, POSIX_FADV_SEQUENTIAL);
|
||||||
|
+ (void)posix_fadvise(i, 0, 0, POSIX_FADV_NOREUSE);
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
ndirs = scandir(path, &dirlist, dirfilter, alphasort);
|
||||||
|
+#if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 600
|
||||||
|
+ if (i >= 0)
|
||||||
|
+ (void)posix_fadvise(i, 0, 0, POSIX_FADV_DONTNEED);
|
||||||
|
+#endif
|
||||||
|
/* mark all matching nodes */
|
||||||
|
for (i = 0; i < ndirs; i++) {
|
||||||
|
t = lookup_target(dirlist[i]->d_name + 3);
|
||||||
|
@@ -342,6 +380,17 @@ struct makenode *pickup_task(void)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (best) {
|
||||||
|
+#if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 600
|
||||||
|
+ char path[128];
|
||||||
|
+ int fd;
|
||||||
|
+ snprintf(path, sizeof(path), "/etc/init.d/%s", best->name);
|
||||||
|
+ if ((fd = open(path, o_flags|O_DIRECT)) >= 0) {
|
||||||
|
+ (void)posix_fadvise(fd, 0, 0, POSIX_FADV_WILLNEED);
|
||||||
|
+ (void)posix_fadvise(fd, 0, 0, POSIX_FADV_SEQUENTIAL);
|
||||||
|
+ (void)posix_fadvise(fd, 0, 0, POSIX_FADV_NOREUSE);
|
||||||
|
+ close(fd);
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
blogger("service %s", best->name);
|
||||||
|
best->status = T_RUNNING;
|
||||||
|
}
|
||||||
|
@@ -359,6 +408,17 @@ void finish_task(struct makenode *node)
|
||||||
|
return;
|
||||||
|
for (n = node->select; n; n = n->next)
|
||||||
|
n->node->num_deps--;
|
||||||
|
+#if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 600
|
||||||
|
+ {
|
||||||
|
+ char path[128];
|
||||||
|
+ int fd;
|
||||||
|
+ snprintf(path, sizeof(path), "/etc/init.d/%s", node->name);
|
||||||
|
+ if ((fd = open(path, o_flags|O_DIRECT)) >= 0) {
|
||||||
|
+ (void)posix_fadvise(fd, 0, 0, POSIX_FADV_DONTNEED);
|
||||||
|
+ close(fd);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
node->status = T_FINISHED;
|
||||||
|
blogger("service %s done", node->name);
|
||||||
|
}
|
@ -1,3 +1,9 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Aug 13 16:40:49 CEST 2008 - werner@suse.de
|
||||||
|
|
||||||
|
- Startpar: give posix_fadvise a try on boot scripts even if most
|
||||||
|
of them are very small
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Aug 4 19:36:29 CEST 2008 - werner@suse.de
|
Mon Aug 4 19:36:29 CEST 2008 - werner@suse.de
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ Group: System/Base
|
|||||||
PreReq: coreutils
|
PreReq: coreutils
|
||||||
AutoReqProv: on
|
AutoReqProv: on
|
||||||
Version: 2.86
|
Version: 2.86
|
||||||
Release: 163
|
Release: 167
|
||||||
Summary: SysV-Style init
|
Summary: SysV-Style init
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
Source: sysvinit-2.86.tar.bz2
|
Source: sysvinit-2.86.tar.bz2
|
||||||
@ -56,7 +56,7 @@ Patch10: showconsole-1.09.dif
|
|||||||
Patch11: sysvinit-2.86-race.patch
|
Patch11: sysvinit-2.86-race.patch
|
||||||
Patch12: sysvinit-2.86-lib64.patch
|
Patch12: sysvinit-2.86-lib64.patch
|
||||||
Patch13: sysvinit-2.82-multiline.patch
|
Patch13: sysvinit-2.82-multiline.patch
|
||||||
#Patch14: startpar-0.52.dif
|
Patch14: startpar-0.52.dif
|
||||||
Patch15: sysvinit-2.86-usage-message.patch
|
Patch15: sysvinit-2.86-usage-message.patch
|
||||||
Patch16: sysvinit-2.86-full-time.patch
|
Patch16: sysvinit-2.86-full-time.patch
|
||||||
Patch17: sysvinit-2.86-hddown.patch
|
Patch17: sysvinit-2.86-hddown.patch
|
||||||
@ -104,7 +104,7 @@ pushd ../showconsole-%{SCVER}
|
|||||||
%patch -P 10
|
%patch -P 10
|
||||||
popd
|
popd
|
||||||
pushd ../startpar-%{START}
|
pushd ../startpar-%{START}
|
||||||
#%patch -P 14
|
%patch -P 14
|
||||||
popd
|
popd
|
||||||
%_fixowner .
|
%_fixowner .
|
||||||
%_fixgroup .
|
%_fixgroup .
|
||||||
@ -307,6 +307,9 @@ rm -rf ${RPM_BUILD_ROOT}
|
|||||||
%doc %{_mandir}/man8/startpar.8.gz
|
%doc %{_mandir}/man8/startpar.8.gz
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Aug 13 2008 werner@suse.de
|
||||||
|
- Startpar: give posix_fadvise a try on boot scripts even if most
|
||||||
|
of them are very small
|
||||||
* Mon Aug 04 2008 werner@suse.de
|
* Mon Aug 04 2008 werner@suse.de
|
||||||
- Imake chroot detections to handle inodes and devices (bnc#408959)
|
- Imake chroot detections to handle inodes and devices (bnc#408959)
|
||||||
* Wed Jul 23 2008 hare@suse.de
|
* Wed Jul 23 2008 hare@suse.de
|
||||||
|
Loading…
Reference in New Issue
Block a user