This commit is contained in:
Tim Waugh 2013-09-25 14:12:25 +01:00
parent f14552855c
commit 2fa1ad240e
5 changed files with 52 additions and 187 deletions

View File

@ -1,6 +1,6 @@
diff -up cups-1.6.3/scheduler/avahi.c.avahi-no-threaded cups-1.6.3/scheduler/avahi.c
--- cups-1.6.3/scheduler/avahi.c.avahi-no-threaded 2013-07-12 11:42:14.650430828 +0200
+++ cups-1.6.3/scheduler/avahi.c 2013-07-12 11:42:14.650430828 +0200
diff -up cups-1.6.4/scheduler/avahi.c.avahi-no-threaded cups-1.6.4/scheduler/avahi.c
--- cups-1.6.4/scheduler/avahi.c.avahi-no-threaded 2013-09-25 13:56:34.922917226 +0100
+++ cups-1.6.4/scheduler/avahi.c 2013-09-25 13:56:34.922917226 +0100
@@ -0,0 +1,441 @@
+/*
+ * "$Id$"
@ -443,9 +443,9 @@ diff -up cups-1.6.3/scheduler/avahi.c.avahi-no-threaded cups-1.6.3/scheduler/ava
+/*
+ * End of "$Id$".
+ */
diff -up cups-1.6.3/scheduler/avahi.h.avahi-no-threaded cups-1.6.3/scheduler/avahi.h
--- cups-1.6.3/scheduler/avahi.h.avahi-no-threaded 2013-07-12 11:42:14.651430814 +0200
+++ cups-1.6.3/scheduler/avahi.h 2013-07-12 11:42:14.651430814 +0200
diff -up cups-1.6.4/scheduler/avahi.h.avahi-no-threaded cups-1.6.4/scheduler/avahi.h
--- cups-1.6.4/scheduler/avahi.h.avahi-no-threaded 2013-09-25 13:56:34.922917226 +0100
+++ cups-1.6.4/scheduler/avahi.h 2013-09-25 13:56:34.922917226 +0100
@@ -0,0 +1,69 @@
+/*
+ * "$Id$"
@ -516,9 +516,9 @@ diff -up cups-1.6.3/scheduler/avahi.h.avahi-no-threaded cups-1.6.3/scheduler/ava
+/*
+ * End of "$Id$".
+ */
diff -up cups-1.6.3/scheduler/cupsd.h.avahi-no-threaded cups-1.6.3/scheduler/cupsd.h
--- cups-1.6.3/scheduler/cupsd.h.avahi-no-threaded 2013-06-07 03:12:52.000000000 +0200
+++ cups-1.6.3/scheduler/cupsd.h 2013-07-12 11:52:42.947705883 +0200
diff -up cups-1.6.4/scheduler/cupsd.h.avahi-no-threaded cups-1.6.4/scheduler/cupsd.h
--- cups-1.6.4/scheduler/cupsd.h.avahi-no-threaded 2013-07-23 13:31:34.000000000 +0100
+++ cups-1.6.4/scheduler/cupsd.h 2013-09-25 14:06:13.056476955 +0100
@@ -119,6 +119,7 @@ extern const char *cups_hstrerror(int);
#include "colorman.h"
#include "conf.h"
@ -572,10 +572,10 @@ diff -up cups-1.6.3/scheduler/cupsd.h.avahi-no-threaded cups-1.6.3/scheduler/cup
+#endif /* HAVE_AVAHI */
/*
* End of "$Id: cupsd.h 7928 2008-09-10 22:14:22Z mike $".
diff -up cups-1.6.3/scheduler/dirsvc.c.avahi-no-threaded cups-1.6.3/scheduler/dirsvc.c
--- cups-1.6.3/scheduler/dirsvc.c.avahi-no-threaded 2013-06-07 03:12:52.000000000 +0200
+++ cups-1.6.3/scheduler/dirsvc.c 2013-07-12 11:42:14.652430800 +0200
* End of "$Id: cupsd.h 11173 2013-07-23 12:31:34Z msweet $".
diff -up cups-1.6.4/scheduler/dirsvc.c.avahi-no-threaded cups-1.6.4/scheduler/dirsvc.c
--- cups-1.6.4/scheduler/dirsvc.c.avahi-no-threaded 2013-07-23 13:31:34.000000000 +0100
+++ cups-1.6.4/scheduler/dirsvc.c 2013-09-25 13:56:34.923917230 +0100
@@ -212,7 +212,7 @@ cupsdStartBrowsing(void)
}
@ -650,9 +650,9 @@ diff -up cups-1.6.3/scheduler/dirsvc.c.avahi-no-threaded cups-1.6.3/scheduler/di
DNSSDMaster = NULL;
# endif /* HAVE_DNSSD */
diff -up cups-1.6.3/scheduler/dirsvc.h.avahi-no-threaded cups-1.6.3/scheduler/dirsvc.h
--- cups-1.6.3/scheduler/dirsvc.h.avahi-no-threaded 2013-06-07 03:12:52.000000000 +0200
+++ cups-1.6.3/scheduler/dirsvc.h 2013-07-12 11:42:14.652430800 +0200
diff -up cups-1.6.4/scheduler/dirsvc.h.avahi-no-threaded cups-1.6.4/scheduler/dirsvc.h
--- cups-1.6.4/scheduler/dirsvc.h.avahi-no-threaded 2013-07-23 13:31:34.000000000 +0100
+++ cups-1.6.4/scheduler/dirsvc.h 2013-09-25 13:56:34.923917230 +0100
@@ -51,7 +51,7 @@ VAR cups_array_t *DNSSDPrinters VALUE(NU
VAR DNSServiceRef DNSSDMaster VALUE(NULL);
/* Master DNS-SD service reference */
@ -662,9 +662,9 @@ diff -up cups-1.6.3/scheduler/dirsvc.h.avahi-no-threaded cups-1.6.3/scheduler/di
/* Master polling interface for Avahi */
VAR AvahiClient *DNSSDClient VALUE(NULL);
/* Client information */
diff -up cups-1.6.3/scheduler/main.c.avahi-no-threaded cups-1.6.3/scheduler/main.c
--- cups-1.6.3/scheduler/main.c.avahi-no-threaded 2013-07-12 11:42:14.624431189 +0200
+++ cups-1.6.3/scheduler/main.c 2013-07-12 11:42:14.653430786 +0200
diff -up cups-1.6.4/scheduler/main.c.avahi-no-threaded cups-1.6.4/scheduler/main.c
--- cups-1.6.4/scheduler/main.c.avahi-no-threaded 2013-09-25 13:56:34.904917144 +0100
+++ cups-1.6.4/scheduler/main.c 2013-09-25 13:56:34.923917230 +0100
@@ -159,6 +159,10 @@ main(int argc, /* I - Number of comm
int launchd_idle_exit;
/* Idle exit on select timeout? */
@ -739,9 +739,9 @@ diff -up cups-1.6.3/scheduler/main.c.avahi-no-threaded cups-1.6.3/scheduler/main
/*
* Check whether we are accepting new connections...
*/
diff -up cups-1.6.3/scheduler/Makefile.avahi-no-threaded cups-1.6.3/scheduler/Makefile
--- cups-1.6.3/scheduler/Makefile.avahi-no-threaded 2013-07-12 11:42:14.625431175 +0200
+++ cups-1.6.3/scheduler/Makefile 2013-07-12 11:42:14.653430786 +0200
diff -up cups-1.6.4/scheduler/Makefile.avahi-no-threaded cups-1.6.4/scheduler/Makefile
--- cups-1.6.4/scheduler/Makefile.avahi-no-threaded 2013-09-25 13:56:34.904917144 +0100
+++ cups-1.6.4/scheduler/Makefile 2013-09-25 13:56:34.924917235 +0100
@@ -17,6 +17,7 @@ include ../Makedefs
CUPSDOBJS = \
@ -758,9 +758,9 @@ diff -up cups-1.6.3/scheduler/Makefile.avahi-no-threaded cups-1.6.3/scheduler/Ma
tls.o
LIBOBJS = \
filter.o \
diff -up cups-1.6.3/scheduler/timeout.c.avahi-no-threaded cups-1.6.3/scheduler/timeout.c
--- cups-1.6.3/scheduler/timeout.c.avahi-no-threaded 2013-07-12 11:42:14.654430772 +0200
+++ cups-1.6.3/scheduler/timeout.c 2013-07-12 11:42:14.654430772 +0200
diff -up cups-1.6.4/scheduler/timeout.c.avahi-no-threaded cups-1.6.4/scheduler/timeout.c
--- cups-1.6.4/scheduler/timeout.c.avahi-no-threaded 2013-09-25 13:56:34.924917235 +0100
+++ cups-1.6.4/scheduler/timeout.c 2013-09-25 13:56:34.924917235 +0100
@@ -0,0 +1,235 @@
+/*
+ * "$Id$"

View File

@ -1,14 +1,9 @@
diff -up cups-1.6.3/backend/ipp.c.ipp-multifile cups-1.6.3/backend/ipp.c
--- cups-1.6.3/backend/ipp.c.ipp-multifile 2013-08-06 17:17:19.359471503 +0100
+++ cups-1.6.3/backend/ipp.c 2013-08-06 17:19:03.346990727 +0100
@@ -1682,10 +1682,13 @@ main(int argc, /* I - Number of comm
ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_NAME,
"requesting-user-name", NULL, argv[2]);
- if ((i + 1) >= num_files)
- ippAddBoolean(request, IPP_TAG_OPERATION, "last-document", 1);
+ ippAddBoolean(request, IPP_TAG_OPERATION, "last-document",
+ (i + 1) >= num_files);
diff -up cups-1.6.4/backend/ipp.c.ipp-multifile cups-1.6.4/backend/ipp.c
--- cups-1.6.4/backend/ipp.c.ipp-multifile 2013-09-25 14:06:32.027732925 +0100
+++ cups-1.6.4/backend/ipp.c 2013-09-25 14:10:22.134679512 +0100
@@ -1685,7 +1685,10 @@ main(int argc, /* I - Number of comm
ippAddBoolean(request, IPP_TAG_OPERATION, "last-document",
(i + 1) >= num_files);
- if (document_format)
+ if (num_files > 1)

View File

@ -1,134 +0,0 @@
Index: conf/cups-files.conf.in
===================================================================
--- conf/cups-files.conf.in (revision 11192)
+++ conf/cups-files.conf.in (working copy)
@@ -8,6 +8,9 @@
# List of events that are considered fatal errors for the scheduler...
#FatalErrors @CUPS_FATAL_ERRORS@
+# Do we call fsync() after writing configuration or status files?
+#SyncOnClose No
+
# Default user and group for filters/backends/helper programs; this cannot be
# any user or group that resolves to ID 0 for security reasons...
#User @CUPS_USER@
Index: doc/help/ref-cups-files-conf.html.in
===================================================================
--- doc/help/ref-cups-files-conf.html.in (revision 11192)
+++ doc/help/ref-cups-files-conf.html.in (working copy)
@@ -429,6 +429,31 @@
default server directory is <VAR>/etc/cups</VAR>.</P>
+<H2 CLASS="title"><SPAN CLASS="info">CUPS 1.6.4</SPAN><A NAME="SyncOnClose">SyncOnClose</A></H2>
+
+<H3>Examples</H3>
+
+<PRE CLASS="command">
+SyncOnClose No
+SyncOnClose Yes
+</PRE>
+
+<H3>Description</H3>
+
+<P>The <CODE>SyncOnClose</CODE> directive determines whether the scheduler
+flushes changes to configuration and state files to disk. The default is
+<CODE>No</CODE> which relies on the operating system to schedule a suitable
+time to write changes to disk.</P>
+
+<BLOCKQUOTE><B>Note:</B>
+
+<P>Setting <CODE>SyncOnClose</CODE> to <CODE>Yes</CODE> makes the scheduler use the <CODE>fsync(2)</CODE> system call to write all changes to disk, however the drive or network file system server may still delay writing data to disk. Do not depend on this functionality to prevent data loss in the event of unexpected hardware failure.</P>
+
+<P>Enabling <CODE>SyncOnClose</CODE> may also cause the scheduler to periodically become unresponsive while it waits for changes to be written.</P>
+
+</BLOCKQUOTE>
+
+
<H2 CLASS="title"><A NAME="SystemGroup">SystemGroup</A></H2>
<H3>Examples</H3>
Index: man/cups-files.conf.man.in
===================================================================
--- man/cups-files.conf.man.in (revision 11192)
+++ man/cups-files.conf.man.in (working copy)
@@ -122,6 +122,12 @@
.br
Specifies the directory where the server configuration files can be found.
.TP 5
+SyncOnClose Yes
+.TP 5
+SyncOnClose No
+Specifies whether the scheduler calls \fIfsync(2)\fR after writing configuration
+or state files. The default is No.
+.TP 5
SystemGroup group-name [group-name ...]
.br
Specifies the group(s) to use for System class authentication.
Index: scheduler/conf.c
===================================================================
--- scheduler/conf.c (revision 11192)
+++ scheduler/conf.c (working copy)
@@ -174,6 +174,7 @@
{ "ServerRoot", &ServerRoot, CUPSD_VARTYPE_PATHNAME },
{ "SMBConfigFile", &SMBConfigFile, CUPSD_VARTYPE_STRING },
{ "StateDir", &StateDir, CUPSD_VARTYPE_STRING },
+ { "SyncOnClose", &SyncOnClose, CUPSD_VARTYPE_BOOLEAN },
#ifdef HAVE_AUTHORIZATION_H
{ "SystemGroupAuthKey", &SystemGroupAuthKey, CUPSD_VARTYPE_STRING },
#endif /* HAVE_AUTHORIZATION_H */
@@ -734,6 +735,7 @@
ReloadTimeout = DEFAULT_KEEPALIVE;
RootCertDuration = 300;
StrictConformance = FALSE;
+ SyncOnClose = FALSE;
Timeout = DEFAULT_TIMEOUT;
WebInterface = CUPS_DEFAULT_WEBIF;
Index: scheduler/conf.h
===================================================================
--- scheduler/conf.h (revision 11192)
+++ scheduler/conf.h (working copy)
@@ -172,6 +172,8 @@
/* Which errors are fatal? */
StrictConformance VALUE(FALSE),
/* Require strict IPP conformance? */
+ SyncOnClose VALUE(FALSE),
+ /* Call fsync() when closing files? */
LogFilePerm VALUE(0644);
/* Permissions for log files */
VAR cupsd_loglevel_t LogLevel VALUE(CUPSD_LOG_WARN);
Index: scheduler/file.c
===================================================================
--- scheduler/file.c (revision 11192)
+++ scheduler/file.c (working copy)
@@ -109,6 +109,29 @@
/*
+ * Synchronize changes to disk if SyncOnClose is enabled.
+ */
+
+ if (SyncOnClose)
+ {
+ if (cupsFileFlush(fp))
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to write changes to \"%s\": %s",
+ filename, strerror(errno));
+ cupsFileClose(fp);
+ return (-1);
+ }
+
+ if (fsync(cupsFileNumber(fp)))
+ {
+ cupsdLogMessage(CUPSD_LOG_ERROR, "Unable to sync changes to \"%s\": %s",
+ filename, strerror(errno));
+ cupsFileClose(fp);
+ return (-1);
+ }
+ }
+
+ /*
* First close the file...
*/

View File

@ -1,12 +1,14 @@
diff -up cups-1.6.3/backend/usb-libusb.c.usblp-quirks cups-1.6.3/backend/usb-libusb.c
--- cups-1.6.3/backend/usb-libusb.c.usblp-quirks 2013-06-07 03:12:52.000000000 +0200
+++ cups-1.6.3/backend/usb-libusb.c 2013-07-12 11:39:33.000000000 +0200
@@ -158,6 +158,8 @@ static const struct quirk_printer_struct
Printer, https://bugs.launchpad.net/bugs/1032456 */
{ 0x04a9, 0x1717, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP510
Printer, https://bugs.launchpad.net/bugs/1050009 */
+ { 0x04a9, 0x1730, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP540
+ Printer, https://bugzilla.redhat.com/967873 */
{ 0x04a9, 0x173d, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP550
Printer, http://www.cups.org/str.php?L4155 */
{ 0x04a9, 0x173e, USBLP_QUIRK_BIDIR }, /* Canon, Inc. MP560
diff -up cups-1.6.4/backend/org.cups.usb-quirks.usblp-quirks cups-1.6.4/backend/org.cups.usb-quirks
--- cups-1.6.4/backend/org.cups.usb-quirks.usblp-quirks 2013-07-23 14:24:57.000000000 +0100
+++ cups-1.6.4/backend/org.cups.usb-quirks 2013-09-25 13:54:16.910144515 +0100
@@ -75,6 +75,9 @@
# Canon, Inc. MP510 Printer, https://bugs.launchpad.net/bugs/1050009
0x04a9 0x1717 unidir
+# Canon, Inc. MP540 Printer, https://bugzilla.redhat.com/967873 */
+0x04a9 0x1730 unidir
+
# Canon, Inc. MP550 Printer, http://www.cups.org/str.php?L4155
0x04a9 0x173d unidir
diff -up cups-1.6.4/backend/usb-libusb.c.usblp-quirks cups-1.6.4/backend/usb-libusb.c

View File

@ -10,8 +10,8 @@
Summary: CUPS printing system
Name: cups
Epoch: 1
Version: 1.6.3
Release: 8%{?dist}
Version: 1.6.4
Release: 1%{?dist}
License: GPLv2
Group: System Environment/Daemons
Url: http://www.cups.org/
@ -66,7 +66,6 @@ Patch35: cups-gz-crc.patch
Patch36: cups-ipp-multifile.patch
Patch37: cups-full-relro.patch
Patch38: cups-web-devices-timeout.patch
Patch39: cups-synconclose.patch
Patch100: cups-lspp.patch
@ -258,8 +257,6 @@ Sends IPP requests to the specified URI and tests and/or displays the results.
%patch37 -p1 -b .full-relro
# Increase web interface get-devices timeout to 10s (bug #996664).
%patch38 -p1 -b .web-devices-timeout
# Add SyncOnClose option (bug #984883).
%patch39 -p0 -b .synconclose
%if %lspp
# LSPP support.
@ -587,6 +584,7 @@ rm -f %{cups_serverbin}/backend/smb
%dir %{_datadir}/cups/templates/fr
%dir %{_datadir}/cups/templates/ja
%dir %{_datadir}/cups/templates/ru
%dir %{_datadir}/cups/usb
%{_datadir}/cups/templates/*.tmpl
%{_datadir}/cups/templates/ca/*.tmpl
%{_datadir}/cups/templates/cs/*.tmpl
@ -594,6 +592,7 @@ rm -f %{cups_serverbin}/backend/smb
%{_datadir}/cups/templates/fr/*.tmpl
%{_datadir}/cups/templates/ja/*.tmpl
%{_datadir}/cups/templates/ru/*.tmpl
%{_datadir}/cups/usb/org.cups.usb-quirks
%dir %attr(1770,root,lp) %{_localstatedir}/spool/cups/tmp
%dir %attr(0710,root,lp) %{_localstatedir}/spool/cups
%dir %attr(0755,lp,sys) %{_localstatedir}/log/cups
@ -646,6 +645,9 @@ rm -f %{cups_serverbin}/backend/smb
%{_mandir}/man5/ipptoolfile.5.gz
%changelog
* Wed Sep 25 2013 Tim Waugh <twaugh@redhat.com> - 1:1.6.4-1
- 1.6.4.
* Wed Aug 21 2013 Jaromír Končický <jkoncick@redhat.com> - 1:1.6.3-8
- Add SyncOnClose option (bug #984883).