freebsd-dev/sys
Andriy Gapon c7d346f269 zfs: fix, improve and re-organize page_lookup and page_unlock
Now they are split into two pairs: page_hold/page_unhold for mappedread
and page_busy/page_unbusy for update_pages.

For mappedread we simply hold a page that is to be used as a source if it
is resident and valid (and not busy).  This is sufficient since we are
only doing page -> user buffer copying.  There is no page <-> backing
storage I/O involved.

update_pages is now better split to properly handle the putpages case
(page -> arc) and the regular write case (arc -> page).

For the latter we use complete protocol of marking an object with
paging-in-progress and marking a page with io_start (busy count).
Also, in this case we remove the write bit from all page mappings and
clear dirty bits of the pages, the former is needed to ensure that the
latter does the right thing.
Additionally we update a page if it is cached instead of just freeing it
as was done before.  This needs to be verified.

A minor detail: ZFS-backed pages should always be either fully valid
or fully invalid.  Assert this and use simpler API that does not deal
with sub-page blocks.

Reviewed by:	kib
MFC after:	26 days
2013-02-03 18:42:20 +00:00
..
amd64 cpususpend_handler: mark AP as resumed only after fully setting up lapic 2013-02-02 12:04:32 +00:00
arm Another overhaul of the CPSW driver for BeagleBone 2013-02-03 01:08:01 +00:00
boot Initial version of libusbboot, a fully stand-alone, single threaded and 2013-01-31 11:00:57 +00:00
bsm Merge OpenBSM 1.2-alpha2 changes from contrib/openbsm to 2012-12-01 13:46:37 +00:00
cam Format CDB output as 2 digit hex correcting the length 2013-01-31 14:07:24 +00:00
cddl zfs: fix, improve and re-organize page_lookup and page_unlock 2013-02-03 18:42:20 +00:00
compat Reduce duplication between i386/linux/linux.h and amd64/linux32/linux.h 2013-01-29 18:41:30 +00:00
conf allow for large KTR_ENTRIES values by allocating ktr_buf using malloc(9) 2013-02-03 09:57:39 +00:00
contrib Merge two bug fixes from the vendor branch. 2013-01-28 20:37:32 +00:00
crypto
ddb Small textdump enhancements. 2012-11-01 04:07:08 +00:00
dev Improve r238673 to additionally allow for odd-aligned buffers as 2013-02-02 21:57:06 +00:00
fs ext2fs: general cleanup. 2013-02-02 22:23:45 +00:00
gdb
geom g_mirror: g_getattr() failure should not be fatal 2013-01-26 10:50:04 +00:00
gnu/fs r16312 is not any longer real since many years (likely since when VFS 2012-11-19 22:43:45 +00:00
i386 cpususpend_handler: mark AP as resumed only after fully setting up lapic 2013-02-02 12:04:32 +00:00
ia64 Remove firewire devices missed in r244992. 2013-01-04 15:29:50 +00:00
isa
kern allow for large KTR_ENTRIES values by allocating ktr_buf using malloc(9) 2013-02-03 09:57:39 +00:00
kgssapi Piete.Brooks at cl.cam.ac.uk reported via email a crash which was 2012-12-18 00:25:48 +00:00
libkern Add __aeabi_ulcmp to allow building of the LINT kernel. 2013-01-23 09:18:18 +00:00
mips Clean some 'svn:executable' properties in the tree. 2013-01-26 22:08:21 +00:00
modules Allow IEEE80211_SUPPORT_SUPERG to be defined _and_ have a working wlan 2013-02-02 02:00:29 +00:00
net Retire struct sockaddr_inarp. 2013-01-31 08:55:21 +00:00
net80211 Wrap this in an #ifdef so IEEE80211_SUPPORT_SUPERG will work correctly 2013-02-02 02:00:10 +00:00
netatalk Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
netgraph ng_ether: track interface renaming 2013-02-02 11:54:00 +00:00
netinet Add placeholder constants to reserve a portion of the socket option 2013-02-01 15:32:20 +00:00
netinet6 Generate lle_event in the IPv6 neighbor discovery code too. 2013-01-26 00:05:22 +00:00
netipsec Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
netipx Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
netnatm Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
netncp Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
netpfil In netpfil/pf: 2012-12-28 09:19:49 +00:00
netsmb Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
nfs Remove the unused nfs_curusec(). 2013-01-17 19:03:24 +00:00
nfsclient Further cleanups to use of timestamps in NFS: 2013-01-25 15:25:24 +00:00
nfsserver Use vfs_timestamp() to set file timestamps rather than invoking 2013-01-18 18:43:38 +00:00
nlm
ofed Mechanically substitute flags from historic mbuf allocator with 2012-12-05 08:04:20 +00:00
opencrypto
pc98 Remove support for plip from the GENERIC kernel as no systems in the 2013-02-01 20:17:11 +00:00
pci Mark 'ticks', 'time_second', and 'time_uptime' as volatile to prevent the 2013-01-28 19:38:13 +00:00
powerpc Enable the UFS quotas for big-iron GENERIC kernels. 2013-01-03 19:03:41 +00:00
rpc Add support for backchannels to the kernel RPC. Backchannels 2012-12-08 00:29:16 +00:00
security Implement the zonename token for jailed processes. If 2013-01-17 21:02:53 +00:00
sparc64 Remove support for plip from the GENERIC kernel as no systems in the 2013-02-01 20:17:11 +00:00
sys fix some fat-fingering in r246246 2013-02-02 14:19:50 +00:00
teken
tools Fix build on ARM (and probably other platforms) 2012-12-28 06:52:53 +00:00
ufs For UFS2 i_blocks is unsigned. The current "sanity" check that it 2013-02-03 17:16:32 +00:00
vm Fix typo in debug printf. 2013-01-29 19:06:16 +00:00
x86 x86 suspend/resume: suspend pics and pseudo-pics in reverse order 2013-02-02 12:02:42 +00:00
xdr
xen
Makefile Run cscope with the -v parameter to make it more user-friendly. 2012-12-02 20:51:24 +00:00