<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/fs/nfs/objlayout, branch v3.3.6</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/fs/nfs/objlayout?h=v3.3.6</id>
<link rel='self' href='https://git.amat.us/linux/atom/fs/nfs/objlayout?h=v3.3.6'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2012-01-06T13:55:33Z</updated>
<entry>
<title>pnfs-obj: Must return layout on IO error</title>
<updated>2012-01-06T13:55:33Z</updated>
<author>
<name>Boaz Harrosh</name>
<email>bharrosh@panasas.com</email>
</author>
<published>2012-01-06T07:31:20Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=fe0fe83585f88346557868a803a479dfaaa0688a'/>
<id>urn:sha1:fe0fe83585f88346557868a803a479dfaaa0688a</id>
<content type='text'>
As mandated by the standard. In case of an IO error, a pNFS
objects layout driver must return it's layout. This is because
all device errors are reported to the server as part of the
layout return buffer.

This is implemented the same way PNFS_LAYOUTRET_ON_SETATTR
is done, through a bit flag on the pnfs_layoutdriver_type-&gt;flags
member. The flag is set by the layout driver that wants a
layout_return preformed at pnfs_ld_{write,read}_done in case
of an error.
(Though I have not defined a wrapper like pnfs_ld_layoutret_on_setattr
 because this code is never called outside of pnfs.c and pnfs IO
 paths)

Without this patch 3.[0-2] Kernels leak memory and have an annoying
WARN_ON after every IO error utilizing the pnfs-obj driver.

[This patch is for 3.2 Kernel. 3.1/0 Kernels need a different patch]
CC: Stable Tree &lt;stable@kernel.org&gt;
Signed-off-by: Boaz Harrosh &lt;bharrosh@panasas.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>pnfs-obj: pNFS errors are communicated on iodata-&gt;pnfs_error</title>
<updated>2012-01-06T13:55:23Z</updated>
<author>
<name>Boaz Harrosh</name>
<email>bharrosh@panasas.com</email>
</author>
<published>2012-01-06T07:28:12Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=5c0b4129c07b902b27d3f3ebc087757f534a3abd'/>
<id>urn:sha1:5c0b4129c07b902b27d3f3ebc087757f534a3abd</id>
<content type='text'>
Some time along the way pNFS IO errors were switched to
communicate with a special iodata-&gt;pnfs_error member instead
of the regular RPC members. But objlayout was not switched
over.

Fix that!
Without this fix any IO error is hanged, because IO is not
switched to MDS and pages are never cleared or read.

[Applies to 3.2.0. Same bug different patch for 3.1/0 Kernels]
CC: Stable Tree &lt;stable@kernel.org&gt;
Signed-off-by: Boaz Harrosh &lt;bharrosh@panasas.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>pnfs-obj: Support for RAID5 read-4-write interface.</title>
<updated>2011-11-03T03:56:09Z</updated>
<author>
<name>Boaz Harrosh</name>
<email>bharrosh@panasas.com</email>
</author>
<published>2011-10-31T22:16:54Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=278c023a99b0d6b471d0f4a79835c703482e29ac'/>
<id>urn:sha1:278c023a99b0d6b471d0f4a79835c703482e29ac</id>
<content type='text'>
The ore need suplied a r4w_get_page/r4w_put_page API
from Filesystem so it can get cache pages to read-into when
writing parial stripes.

Signed-off-by: Boaz Harrosh &lt;bharrosh@panasas.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>pnfs-obj: move to ore 03: Remove old raid engine</title>
<updated>2011-11-03T03:56:08Z</updated>
<author>
<name>Boaz Harrosh</name>
<email>bharrosh@panasas.com</email>
</author>
<published>2011-10-31T22:16:15Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=04291b628c450ab6fdb606836585f16336662a4e'/>
<id>urn:sha1:04291b628c450ab6fdb606836585f16336662a4e</id>
<content type='text'>
Finally remove all the old raid engine, which is by now
dead code.

Signed-off-by: Boaz Harrosh &lt;bharrosh@panasas.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>pnfs-obj: move to ore 02: move to ORE</title>
<updated>2011-11-03T03:56:08Z</updated>
<author>
<name>Boaz Harrosh</name>
<email>bharrosh@panasas.com</email>
</author>
<published>2011-10-31T22:15:38Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=eecfc6312a24e6d0d2883de0a9a6ccf8e993f472'/>
<id>urn:sha1:eecfc6312a24e6d0d2883de0a9a6ccf8e993f472</id>
<content type='text'>
In this patch we are actually moving to the ORE.
(Object Raid Engine).

objio_state holds a pointer to an ore_io_state. Once
we have an ore_io_state at hand we can call the ore
for reading/writing. We register on the done path
to kick off the nfs io_done mechanism.

Again for Ease of reviewing the old code is "#if 0"
but is not removed so the diff command works better.
The old code will be removed in the next patch.

fs/exofs/Kconfig::ORE is modified to also be auto-included
if PNFS_OBJLAYOUT is set. Since we now depend on ORE.
(See comments in fs/exofs/Kconfig)

Signed-off-by: Boaz Harrosh &lt;bharrosh@panasas.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>pnfs-obj: move to ore 01: ore_layout &amp; ore_components</title>
<updated>2011-11-03T03:56:07Z</updated>
<author>
<name>Boaz Harrosh</name>
<email>bharrosh@panasas.com</email>
</author>
<published>2011-10-31T22:04:19Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=af4f5b54bcf0379089d01518e818f37258708fb7'/>
<id>urn:sha1:af4f5b54bcf0379089d01518e818f37258708fb7</id>
<content type='text'>
For Ease of reviewing I split the move to ore into 3 parts
	move to ore 01: ore_layout &amp; ore_components
	move to ore 02: move to ORE
	move to ore 03: Remove old raid engine

This patch modifies the objio_lseg, layout-segment level
and devices and components arrays to use the ORE types.

Though it will be removed soon, also the raid engine
is modified to actually compile, possibly run, with
the new types. So it is the same old raid engine but
with some new ORE types.

For Ease of reviewing, some of the old code is
"#if 0" but is not removed so the diff command works
better. The old code will be removed in the 3rd patch.

Signed-off-by: Boaz Harrosh &lt;bharrosh@panasas.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>pnfs-obj: Rename objlayout_io_state =&gt; objlayout_io_res</title>
<updated>2011-11-03T03:56:06Z</updated>
<author>
<name>Boaz Harrosh</name>
<email>bharrosh@panasas.com</email>
</author>
<published>2011-10-31T22:03:35Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=e2e04355d9647305c666462a49223f2942a635f0'/>
<id>urn:sha1:e2e04355d9647305c666462a49223f2942a635f0</id>
<content type='text'>
* All instances of objlayout_io_state =&gt; objlayout_io_res
* All instances of state =&gt; oir;
* All instances of ol_state =&gt; oir;

Big but nothing to it

Signed-off-by: Boaz Harrosh &lt;bharrosh@panasas.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>pnfs-obj: Get rid of objlayout_{alloc,free}_io_state</title>
<updated>2011-11-03T03:56:05Z</updated>
<author>
<name>Boaz Harrosh</name>
<email>bharrosh@panasas.com</email>
</author>
<published>2011-10-31T21:47:32Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=96218556b03d3c6505e2880a097338bf277fd783'/>
<id>urn:sha1:96218556b03d3c6505e2880a097338bf277fd783</id>
<content type='text'>
This is part of moving objio_osd to use the ORE.

objlayout_io_state had two functions:
1. It was used in the error reporting mechanism at layout_return.
   This function is kept intact.
   (Later patch will rename objlayout_io_state =&gt; objlayout_io_res)
2. Carrier of rw io members into the objio_read/write_paglist API.
   This is removed in this patch.

The {r,w}data received from NFS are passed directly to the
objio_{read,write}_paglist API. The io_engine is now allocating
it's own IO state as part of the read/write. The minimal
functionality that was part of the generic allocation is passed
to the io_engine.

So part of this patch is rename of:
	ios-&gt;ol_state.foo =&gt; ios-&gt;foo

At objlayout_{read,write}_done an objlayout_io_state is passed that
denotes the result of the IO. (Hence the later name change).
If the IO is successful objlayout calls an objio_free_result() API
immediately (Which for objio_osd causes the release of the io_state).
If the IO ended in an error it is hanged onto until reported in
layout_return and is released later through the objio_free_result()
API. (All this is not new just renamed and cleaned)

Signed-off-by: Boaz Harrosh &lt;bharrosh@panasas.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>pnfs-obj: Return PNFS_NOT_ATTEMPTED in case of read/write_pagelist</title>
<updated>2011-11-03T03:56:03Z</updated>
<author>
<name>Boaz Harrosh</name>
<email>bharrosh@panasas.com</email>
</author>
<published>2011-10-31T21:45:46Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=e6c40fe3f4c4967f1cb486191ed4a5d5f55f3f7e'/>
<id>urn:sha1:e6c40fe3f4c4967f1cb486191ed4a5d5f55f3f7e</id>
<content type='text'>
objlayout driver was always returning PNFS_ATTEMPTED from it's
read/write_pagelist operations. Even on error. Fix that.

Start by establishing an error return API from io-engine, by
not returning ssize_t (length-or-error) but returning "int"
0=OK, 0&gt;Error. And clean up all return types in io-engine.

Then if io-engine returned error return PNFS_NOT_ATTEMPTED
to generic layer. (With a dprint)

Signed-off-by: Boaz Harrosh &lt;bharrosh@panasas.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
<entry>
<title>pnfs-obj: Remove redundant EOF from objlayout_io_state</title>
<updated>2011-11-03T03:56:00Z</updated>
<author>
<name>Boaz Harrosh</name>
<email>bharrosh@panasas.com</email>
</author>
<published>2011-10-31T21:45:06Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=4cdc685c7d06f659ef6c336d4242005cdd8df401'/>
<id>urn:sha1:4cdc685c7d06f659ef6c336d4242005cdd8df401</id>
<content type='text'>
The EOF calculation was done on .read_pagelist(), cached
in objlayout_io_state-&gt;eof, and set in objlayout_read_done()
into nfs_read_data-&gt;res.eof.

So set it directly into nfs_read_data-&gt;res.eof and avoid
the extra member.

Signed-off-by: Boaz Harrosh &lt;bharrosh@panasas.com&gt;
Signed-off-by: Trond Myklebust &lt;Trond.Myklebust@netapp.com&gt;
</content>
</entry>
</feed>
