summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2015-07-28lib9p: return "write prohibited" error as documented in 9p(2) when ↵cinap_lenrek
srv->write is nil (thanks silasm)
2015-07-27kernel: clunk the cache when removing cache flag on a channel, only call ↵cinap_lenrek
cread() chen CCACHE flag is set to avoid double caching, attachimage() and setswapchan() clear the CCACHE flag on the channel but this keeps the read ahread state of the cache arround (until the chan gets closed), so also call cclunk() to detach the mcp and free the read ahead state. avoid the call to cread() when CCACHE flag is clear.
2015-07-27devmnt: use c->iounit instead of msize-IOHDRSZ to chunk reads and writes, ↵cinap_lenrek
reduce memory overhead for Mntrpc, mntalloc lock use the actual iounit returned from Ropen/Rcreate to chunk reads and writes instead of c->mux->msize-IOHDRSZ. dont preallocate the rpc buffers to msize, most 9p requests are rather small (except Twrite of course). so we allocate the buffer on demand in mountio() with some rounding to avoid frequent reallocations. avoid malloc()/free() while holding mntalloc lock.
2015-07-26devmnt: dont reset readahead window when requested offset still has pending rpccinap_lenrek
2015-07-26kernel: pipelined read ahead for the mount cachecinap_lenrek
this changes devmnt adding mntrahread() function and some helpers for it to do pipelined sequential read ahead for the mount cache. basically, cread() calls mntrahread() with Mntrah structure and it figures out if we where reading sequentially and if thats the case issues reads of c->iounit size in advance. the read ahead state (Mntrah) is kept in the mount cache so we can handle (read ahead) cache invalidation in the presence of writes.
2015-07-24page: fix deadlock, nil vs 0 for pointer comparsion, cleanupcinap_lenrek
2015-07-24libsec: increase handshake message buffer size (MaxChunk) to 32K (thanks sl)cinap_lenrek
_sl → webfs doesn't like packetfire.org: '/mnt/web/body' 0 No status tls: local handshake message too long 30781 16384
2015-07-22fortunes: go away.stanley lieber
2015-07-23ip/httpfile: fix flushes, fix concurrent reads, set error stringcinap_lenrek
Tflush handling was wrong, we cannot respond to the old request if we have not actually removed the req from the in progress block queue. when reads are issued concurrently, we have to set b->len before the block is inserted into the inprogress list. otherwise findblock() is unable to find it and no requests can be queued on the block. this caused the same offset to be downloaded multiple times. set the errstr in getrange() so in case of an error, we dont get some random previous error string.
2015-07-23kernel: make sure fd is in range in fdclose()cinap_lenrek
as the Fgrp can be shared with other processes, we have to recheck the fd index after locking the Fgrp in fdclose() to make sure not to read beyond the bounds of the fd array.
2015-07-23kernel: simplify syspipe()cinap_lenrek
2015-07-23devaoe: more nil vs. 0cinap_lenrek
2015-07-22devaoe: fix off by one in aoeerror(), consistent use of nil for pointers, ↵cinap_lenrek
error handling
2015-07-22kernel: consistent use of nil for pointer in sysfile.ccinap_lenrek
2015-07-22kernel: cleanup chan.c to consistenly use nil instead of 0 for pointerscinap_lenrek
2015-07-22kernel: make sure the swap device has a reasonable capacity in setswapchan()cinap_lenrek
2015-07-19devmnt: do not use user buffer to update the mount cachecinap_lenrek
using the user buffer has a race where the user can modify the buffer from another process before it is copied into the cache. this allows poisoning the cache for every file where the user has read access. instead, we update the cache from kernel memory.
2015-07-19devstream: fix mistakecinap_lenrek
2015-07-19stream(3): fix referencecinap_lenrek
2015-07-19fcp: use iounit() to determine buffer size, reduce number of worker procs to 8cinap_lenrek
2015-07-19cp: experimental stream supportcinap_lenrek
2015-07-19devstream: fast sequential file access with 9p pipelining experimentcinap_lenrek
2015-07-16pc: check Sse (bit 25) in cpuiddx before enabling fxsr in cr4 (fixes crash ↵cinap_lenrek
on the pentium II)
2015-07-16aux/cpuid: make sure extended feature bits are available (fixes crash on the ↵cinap_lenrek
pentium II)
2015-07-15devproc: make sure statbufread offset wont turn negativecinap_lenrek
2015-07-14fcp: fix wrong write pointer offset when read returns less than DEFB bytescinap_lenrek
2015-07-14kernel: remove debugalloc.ccinap_lenrek
2015-07-14mk9660: write data in alphabetical ordercinap_lenrek
*after* writing, the directory tree gets alphabetically sorted for path table. this causes data to not be in the same order as it was written causing seeks when taring up the filesystem. so instead write the files in alphabetical order as well to better match the directory sorting.
2015-07-149660srv: keep data and metadata separate in the cache with a tagcinap_lenrek
data on the disk is layed out sequentially and directory information is at the end of the disk. we want to keep data and metadata separated so that reading large sequential files will not evict the directory information from the cache causing long seeks. for that, we tag the clusters (an 8th for metadata, and the rest for data) and getbuf() will only evict clusters of the same tag.
2015-07-139660srv: go back to 128k clusterscinap_lenrek
doing tests taring up 9front.iso shows the following: lowering the cluster size back to 128k avoids over half the reads. 837888 sectors read for 512k vs. 347712 sectors with 128k cluster size.
2015-07-13inst: fix download task using ip/httpfile to mount a iso over http and ↵cinap_lenrek
prompt for installurl
2015-07-13httpfile: fix evictblock() so we wont consume all the memorycinap_lenrek
2015-07-13libFLAC: fix compiler warnings by properly declaring void function argumentscinap_lenrek
2015-07-13python: HAVE_STDINT_H 1cinap_lenrek
2015-07-13ape: add stdint.h, fix SSIZE_MAX and add SIZE_MAX to limits.hcinap_lenrek
2015-07-13cpp: search source file directory first for quoted #include (thanks Ori_B)cinap_lenrek
foo.c includes bar/bar.h, which includes "baz.h"; it wants bar/baz.h meanwhile, it also includes meh/quux.h, which includes "baz.h"; it wants meh/baz.h
2015-07-12ether82563: fix multicast filter (based on openbsd em(4) driver)cinap_lenrek
2015-07-11page: make lookahead fetch work in backwards directioncinap_lenrek
2015-07-11tftpd: count only options we understand so we wont send empty oack messagecinap_lenrek
2015-07-11etherrt2860: add multicast stubcinap_lenrek
2015-07-11etheriwl: add multicast stubcinap_lenrek
2015-07-11etherwpi: dont enable transmit power for invalid channels, add multicast stubcinap_lenrek
2015-07-10wifi: reflect current transmit rate in mbpscinap_lenrek
2015-07-10etherwpi: afra supportcinap_lenrek
2015-07-10etheriwl: dont clear descriptors after completioncinap_lenrek
2015-07-10wifi: adjust transmit rate on error (for etheriwl), small mkfile changescinap_lenrek
Wnode gets two new counters: txcount and txerror and actrate pointer that will be between minrate and maxrate. driver should use actrate instead of maxrate for transmission when it can provide error feedback. when a driver detects a transmission failed, it calls wifitxfail() with the original packet. wifitxfail() then reduces wn->actrate. every 256th packet, we optimistically increase wn->actrate before transmitting.
2015-07-10kernel: use HDR_MAGIC constant to handle Exec header extension, make ↵cinap_lenrek
rebootcmd() handle AOUT_MAGIC macro
2015-07-09sysexec(): need () arround AOUT_MAGIC comparsion to handle #define hack on mipscinap_lenrek
2015-07-09sysexec(): make the mips compiler happycinap_lenrek
2015-07-09kernel: reject bogus two byte "#!" shell scripts in sysexec()cinap_lenrek
- reject files smaller or equal to two bytes, they are bogus - fix out of bounds access in shargs() when n <= 2 - only copy the bytes read into line buffer - use nil for pointers instead of 0