1 |
I have had ClusterHQ's partial stable ABI in Gentoo's packaging since |
2 |
December (which helped to shake out bugs) and have just done another |
3 |
update of it with various bug fixes, including many from HEAD. |
4 |
|
5 |
Some might notice that merging a pull request that isn't fully reviewed |
6 |
is a fairly big departure from the rigorous vetting that I did on |
7 |
patches to ensure that every update was absolutely bug free. I had a |
8 |
good span of about 3 years without Gentoo specific regressions that I |
9 |
can recall. |
10 |
|
11 |
While I did my best to avoid introducing regressions in Gentoo's ZoL |
12 |
packaging, the /dev/zfs ABI has been unstable. That allowed for |
13 |
potential upgrade pains such as 0.6.2 -> 0.6.3 where those with |
14 |
mismatched modules and userspace code had problems. All ZoL packaging in |
15 |
Gentoo has been marked as "testing" because of it. The partial stable |
16 |
ABI presents offers an opportunity to change this such that users will |
17 |
have the option of either stable packages (well tested and vetted) or |
18 |
testing packages (vetted by me and pushed out for the community to vet |
19 |
further). |
20 |
|
21 |
In specific, the partial stable ABI should allow the following functions |
22 |
to work whenever mismatches occur, provided that both the userland and |
23 |
kernel code are mismatched using versions after the transition has taken |
24 |
place: |
25 |
|
26 |
- zpool import |
27 |
- zpool iostat |
28 |
- zpool tryimport |
29 |
- zpool export |
30 |
- zpool list |
31 |
- zpool get |
32 |
- zpool status |
33 |
- zfs mount |
34 |
- zfs umount |
35 |
- zfs clone |
36 |
- zfs snapshot |
37 |
- zfs rollback |
38 |
- zfs destroy |
39 |
- zfs create |
40 |
- zfs list |
41 |
- zfs get |
42 |
- zfs set |
43 |
- zfs inherit |
44 |
- zfs send |
45 |
- zfs recv (part of stable API, but not ABI in the current code, plan to |
46 |
resolve in the future) |
47 |
- zfs bookmark |
48 |
- zfs hold |
49 |
- zfs release |
50 |
|
51 |
It also provides convenient functions to control these operations |
52 |
through libzfs_core. The man pages are a draft from a few months ago, |
53 |
but include all of the non-zpool commands. This will be rectified in the |
54 |
near future so that all functions are thoroughly documented. |
55 |
|
56 |
After consulting with a few others, I decided in December to transition |
57 |
Gentoo to this now in the belief that the long term benefits outweigh |
58 |
the short term pain of the transition. Specifically, I want to exchange |
59 |
all of the pain the /dev/zfs ABI being unstable will cause over years |
60 |
for a brief period of pain now. |
61 |
|
62 |
Having any pain at all is not ideal, but this is the first time we have |
63 |
had a plan to ensure that this will be the last time (for the subset I |
64 |
mentioned, things outside of it will likely be added in the future based |
65 |
on need/importance). |
66 |
|
67 |
Doing an update today to fix the regressions that were reported has |
68 |
given me the opportunity to reflect on how I have handled things since |
69 |
the December update. At present, I am working on multiple things and |
70 |
while it is hard to keep track of every issue, I would like to minimize |
71 |
the amount of pain that occurs during this transition. My plan is to |
72 |
complete the transition by marking things stable 2 weeks after I stop |
73 |
hearing reports of regressions. |
74 |
|
75 |
If there are any regressions I have missed, I would like to hear about |
76 |
them. Please contact me in #zfsonlinux on the freenode IRC network so |
77 |
that I can resolve it ASAP. That way the regression can cut in line in |
78 |
my queue and be handled faster than the regressions I missed prior to |
79 |
the December code push. |
80 |
|
81 |
Having said that, those on other distributions are welcome to the code |
82 |
and to contact me about issues (please ping through freenode for the |
83 |
fastest response). It can be found on github: |
84 |
|
85 |
https://github.com/ryao/zfs/commits/gentoo-zfs-0.6.5.3-release |
86 |
https://github.com/ryao/spl/commits/gentoo-spl-0.6.5.3-release |
87 |
|
88 |
Tarballs of patches can be found here: |
89 |
|
90 |
http://dev.gentoo.org/~ryao/dist/zfs-0.6.5.3-patches-p1.tar.xz |
91 |
SHA256: 765a66adf67d0a3ae6a699561b98a5158d464e3b6ed413a72bdbbe6e6252ba66 |
92 |
SHA1: 56079ecd2543c44191cd747ce28a28a2bab8c064 |
93 |
MD5: 0a92dae487f507616e0850ee9760932f |
94 |
|
95 |
http://dev.gentoo.org/~ryao/dist/spl-0.6.5.3-patches-p0.tar.xz |
96 |
SHA256: 8e652d41eba421720bcecee99077d3f3c375153809426011f04a2c64aa181ca7 |
97 |
SHA1: 50cf449d7ba1772b967446bad7c12ac29fee7b6c |
98 |
MD5: 6d3c2fe3bfff26f575120aac623f8dda |
99 |
|
100 |
The ZFS shortlog: |
101 |
|
102 |
AndCycle (1): |
103 |
Obey arc_meta_limit default size when changing arc_max |
104 |
|
105 |
Benjamin Albrecht (1): |
106 |
Activate LVM volume groups before looking for zpools. |
107 |
|
108 |
Brian Behlendorf (15): |
109 |
Fix maybe uninitialized |
110 |
Follow 0/-E convention for module load errors |
111 |
Fix --enable-linux-builtin |
112 |
Use large stacks when available |
113 |
Either _ILP32 or _LP64 must be defined |
114 |
Fix zfsctl_lookup_objset() deadlock |
115 |
Change zfs_snapshot_lock from mutex to rw lock |
116 |
Set 'zfs_expire_snapshot=0' to disable auto-unmount |
117 |
Hold the zfs_snapentry_t before dispatch |
118 |
Handle block pointers with a corrupt logical size |
119 |
Handle damaged blk_birth in dsl_deadlist_insert() |
120 |
Fix vdev_queue_aggregate() deadlock |
121 |
Fix zfs_vdev_aggregation_limit bounds checking |
122 |
Fix ztest truncated cache file |
123 |
Fix z_xattr_lock/z_teardown_lock inversion |
124 |
|
125 |
Chunwei Chen (11): |
126 |
Fix fail path in zfs_znode_alloc |
127 |
Fix snapshot automount behavior when concurrent or fail |
128 |
Linux 4.4 compat: make_request_fn returns blk_qc_t |
129 |
Linux 4.4 compat: xattr operations takes xattr_handler |
130 |
Fix zdb calling behavior in ztest |
131 |
Fix zdb_dump_block on little endian systems |
132 |
Use spa as key besides objsetid for snapentry |
133 |
Fix snapshot automount race cause EREMOTE |
134 |
Fix uio_prefaultpages for 0 length iovec |
135 |
Fix empty xattr dir causing lockup |
136 |
Make xattr dir truncate and remove in one tx |
137 |
|
138 |
DHE (1): |
139 |
libzfs: handle EDOM errors |
140 |
|
141 |
Jason Zaman (1): |
142 |
sysmacros: Make P2ROUNDUP not trigger int overflow |
143 |
|
144 |
Kamil Domański (1): |
145 |
Skip GPL-only symbols test when cross-compiling |
146 |
|
147 |
Ned Bass (1): |
148 |
Prevent SA length overflow |
149 |
|
150 |
Olaf Faaland (1): |
151 |
Remove "index" column from dbufstat.py |
152 |
|
153 |
Richard Yao (5): |
154 |
ClusterHQ Proposed API extensions |
155 |
Only trigger SET_ERROR tracepoint event on error |
156 |
Unconditionally build zdb and ztest with -DDEBUG |
157 |
Revert "Switch ztest mmap(2) ASSERTs to VERIFYs" |
158 |
Refresh ClusterHQ Proposed API extensions against ZoL PR |
159 |
|
160 |
Turbo Fredriksson (1): |
161 |
Unmount is part of the shutdown process, not the boot process. |
162 |
|
163 |
tuxoko (3): |
164 |
Fix null pointer in arc_kmem_reap_now on 32-bit |
165 |
Fix zfs_dirty_data_max overflow on 32-bit |
166 |
Prevent rm modules.* when make install |
167 |
|
168 |
The SPL shortlog: |
169 |
|
170 |
Brian Behlendorf (1): |
171 |
Fix --enable-linux-builtin |
172 |
|
173 |
Chunwei Chen (1): |
174 |
Don't call kmem_cache_shrink from shrinker |
175 |
|
176 |
Dimitri John Ledkov (1): |
177 |
spl-kmem-cache: include linux/prefetch.h for prefetchw() |
178 |
|
179 |
Jason Zaman (1): |
180 |
sysmacros: Make P2ROUNDUP not trigger int overflow |
181 |
|
182 |
Richard Yao (2): |
183 |
Fix race between getf() and areleasef() |
184 |
Make taskq_member() use ->journal_info |
185 |
|
186 |
tuxoko (2): |
187 |
Fix taskq dynamic spawning |
188 |
Prevent rm modules.* when make install |