android_kernel_xiaomi_sm8350/drivers
Pete Zaitcev 7f477358e2 usblp: Implement the ENOSPC convention
This patch implements a mode when a printer returns ENOSPC when it runs
out of paper. The default remains the same as before. An application which
wishes to use this function has to enable it explicitly with an ioctl
LPABORT.

This is done on a request by our (Fedora) CUPS guy, Tim Waugh. The API is
similar enough to the lp0's one that CUPS works with both (but see below),
but it's has some differences.

Most importantly, the abort mode is persistent in case of lp0: once tunelp
was run your cat fill blow up until you reboot or run tunelp again. For
usblp, I made it so the abort mode is only in effect as long as device
is open. This way you can mix and match CUPS and cat(1) freely and nothing
bad happens even if you run out of paper. It is also safer in the face
of any unexpected crashes.

It has to be noted that mixing LPABORT and O_NONBLOCK is not advised.
It probably does not do what you want: instead of returning -ENOSPC
it will always return -EAGAIN (because it would otherwise block while
waiting for the paper). Applications which use O_NONBLOCK should continue
to use LPGETSTATUS like before.

Finally, CUPS actually requires patching to take full advantage of this.
It has several components; those which invoke LPABORT work, but some of
them need the ioctl added. This is completely compatible, you can mix
old CUPS and new kernels or vice versa.

Signed-off-by: Pete Zaitcev <zaitcev@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2007-10-12 14:54:58 -07:00
..
acorn/char
acpi Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 2007-10-11 19:20:44 -07:00
amba
ata Merge branch 'upstream-fixes' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/libata-dev 2007-10-11 21:47:20 -07:00
atm
auxdisplay
base
block Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 2007-10-11 21:55:47 -07:00
bluetooth
cdrom [POWERPC] iSeries: Move detection of virtual cdroms 2007-10-11 20:40:47 +10:00
char Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 2007-10-11 21:55:47 -07:00
clocksource
connector [NET]: make netlink user -> kernel interface synchronious 2007-10-10 21:15:29 -07:00
cpufreq
crypto [CRYPTO] sha: Add header file for SHA definitions 2007-10-10 16:55:50 -07:00
dio
dma
edac
eisa
fc4
firewire
firmware
hid
hwmon
i2c
ide Merge git://git.kernel.org/pub/scm/linux/kernel/git/bart/ide-2.6 2007-10-11 19:20:44 -07:00
ieee1394 [NET]: Move hardware header operations out of netdevice. 2007-10-10 16:52:52 -07:00
infiniband Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband 2007-10-11 19:43:13 -07:00
input
isdn [ISDN]: Change I4L to use alloc_netdev(). 2007-10-10 16:54:57 -07:00
kvm
leds leds: Update Cobalt Qube series front LED support 2007-10-11 22:24:00 +01:00
lguest
macintosh
mca
md
media Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2007-10-11 19:40:14 -07:00
message
mfd
misc Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 2007-10-11 21:55:47 -07:00
mmc mmc: don't use weight32() 2007-10-11 19:09:08 +02:00
mtd
net [TG3]: Fix APE induced regression 2007-10-11 22:17:20 -07:00
nubus
of
oprofile
parisc
parport
pci i386: move pci 2007-10-11 11:16:36 +02:00
pcmcia
pnp
power
ps3
rapidio
rtc
s390 Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2007-10-11 19:40:14 -07:00
sbus
scsi Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 2007-10-11 19:40:14 -07:00
serial Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 2007-10-11 21:55:47 -07:00
sh
sn
spi
ssb
tc
telephony
uio
usb usblp: Implement the ENOSPC convention 2007-10-12 14:54:58 -07:00
video Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc 2007-10-11 21:55:47 -07:00
w1
xen
zorro
Kconfig
Makefile