<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/exofs/super.c, branch linux-3.3.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.3.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.3.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2012-01-09T01:19:12Z</updated>
<entry>
<title>exofs: oops after late failure in mount</title>
<updated>2012-01-09T01:19:12Z</updated>
<author>
<name>Al Viro</name>
</author>
<published>2012-01-09T00:45:28Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=da01636a6511c3bd0c1cf546c47b8e92a837a613'/>
<id>urn:sha1:da01636a6511c3bd0c1cf546c47b8e92a837a613</id>
<content type='text'>
We have already set -&gt;s_root, so -&gt;put_super() is going to be called.
Freeing -&gt;s_fs_info is a bloody bad idea when it's going to be
dereferenced very shortly...

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>vfs: fix the stupidity with i_dentry in inode destructors</title>
<updated>2012-01-04T03:52:40Z</updated>
<author>
<name>Al Viro</name>
</author>
<published>2011-12-12T20:51:45Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6b520e0565422966cdf1c3759bd73df77b0f248c'/>
<id>urn:sha1:6b520e0565422966cdf1c3759bd73df77b0f248c</id>
<content type='text'>
Seeing that just about every destructor got that INIT_LIST_HEAD() copied into
it, there is no point whatsoever keeping this INIT_LIST_HEAD in inode_init_once();
the cost of taking it into inode_init_always() will be negligible for pipes
and sockets and negative for everything else.  Not to mention the removal of
boilerplate code from -&gt;destroy_inode() instances...

Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>fs: add module.h to files that were implicitly using it</title>
<updated>2011-10-31T23:30:31Z</updated>
<author>
<name>Paul Gortmaker</name>
</author>
<published>2011-07-01T18:23:34Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=143cb494cb6662e37c4020b7fe9839837f718e56'/>
<id>urn:sha1:143cb494cb6662e37c4020b7fe9839837f718e56</id>
<content type='text'>
Some files were using the complete module.h infrastructure without
actually including the header at all.  Fix them up in advance so
once the implicit presence is removed, we won't get failures like this:

  CC [M]  fs/nfsd/nfssvc.o
fs/nfsd/nfssvc.c: In function 'nfsd_create_serv':
fs/nfsd/nfssvc.c:335: error: 'THIS_MODULE' undeclared (first use in this function)
fs/nfsd/nfssvc.c:335: error: (Each undeclared identifier is reported only once
fs/nfsd/nfssvc.c:335: error: for each function it appears in.)
fs/nfsd/nfssvc.c: In function 'nfsd':
fs/nfsd/nfssvc.c:555: error: implicit declaration of function 'module_put_and_exit'
make[3]: *** [fs/nfsd/nfssvc.o] Error 1

Signed-off-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
</content>
</entry>
<entry>
<title>ore/exofs: Define new ore_verify_layout</title>
<updated>2011-10-14T16:54:41Z</updated>
<author>
<name>Boaz Harrosh</name>
</author>
<published>2011-09-28T10:18:45Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5a51c0c7e9a913649aa65d8233470682bcbb7694'/>
<id>urn:sha1:5a51c0c7e9a913649aa65d8233470682bcbb7694</id>
<content type='text'>
All users of the ore will need to check if current code
supports the given layout. For example RAID5/6 is not
currently supported.

So move all the checks from exofs/super.c to a new
ore_verify_layout() to be used by ore users.

Note that any new layout should be passed through the
ore_verify_layout() because the ore engine will prepare
and verify some internal members of ore_layout, and
assumes it's called.

Signed-off-by: Boaz Harrosh &lt;bharrosh@panasas.com&gt;
</content>
</entry>
<entry>
<title>ore/exofs: Change the type of the devices array (API change)</title>
<updated>2011-10-04T10:13:59Z</updated>
<author>
<name>Boaz Harrosh</name>
</author>
<published>2011-09-28T11:43:09Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d866d875f68fdeae63df334d291fe138dc636d96'/>
<id>urn:sha1:d866d875f68fdeae63df334d291fe138dc636d96</id>
<content type='text'>
In the pNFS obj-LD the device table at the layout level needs
to point to a device_cache node, where it is possible and likely
that many layouts will point to the same device-nodes.

In Exofs we have a more orderly structure where we have a single
array of devices that repeats twice for a round-robin view of the
device table

This patch moves to a model that can be used by the pNFS obj-LD
where struct ore_components holds an array of ore_dev-pointers.
(ore_dev is newly defined and contains a struct osd_dev *od
 member)

Each pointer in the array of pointers will point to a bigger
user-defined dev_struct. That can be accessed by use of the
container_of macro.

In Exofs an __alloc_dev_table() function allocates the
ore_dev-pointers array as well as an exofs_dev array, in one
allocation and does the addresses dance to set everything pointing
correctly. It still keeps the double allocation trick for the
inodes round-robin view of the table.

The device table is always allocated dynamically, also for the
single device case. So it is unconditionally freed at umount.

Signed-off-by: Boaz Harrosh &lt;bharrosh@panasas.com&gt;
</content>
</entry>
<entry>
<title>exofs: Remove unused data_map member from exofs_sb_info</title>
<updated>2011-10-03T15:07:51Z</updated>
<author>
<name>Boaz Harrosh</name>
</author>
<published>2011-08-10T21:15:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8d2d83a8352b0f9c1da82c36f741722f2960feea'/>
<id>urn:sha1:8d2d83a8352b0f9c1da82c36f741722f2960feea</id>
<content type='text'>
The struct pnfs_osd_data_map data_map member of exofs_sb_info was
never used after mount. In fact all it's members were duplicated
by the ore_layout structure. So just remove the duplicated information.

Also removed some stupid, but perfectly supported, restrictions on
layout parameters. The case where num_devices is not divisible by
mirror_count+1 is perfectly fine since the rotating device view
will eventually use all the devices it can get.

Signed-off-by: Boaz Harrosh &lt;bharrosh@panasas.com&gt;
Signed-off-by: Benny Halevy &lt;bhalevy@tonian.com&gt;
</content>
</entry>
<entry>
<title>exofs: Rename struct ore_components comps =&gt; oc</title>
<updated>2011-10-03T15:07:50Z</updated>
<author>
<name>Boaz Harrosh</name>
</author>
<published>2011-09-28T08:39:59Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=5bf696dad4beecb6174e701c97e1f2574e6a2c96'/>
<id>urn:sha1:5bf696dad4beecb6174e701c97e1f2574e6a2c96</id>
<content type='text'>
ore_components already has a comps member so this leads
to things like comps-&gt;comps which is annoying. the name oc
was already used in new code. So rename all old usage of
ore_components comps =&gt; ore_components oc.

Signed-off-by: Boaz Harrosh &lt;bharrosh@panasas.com&gt;
</content>
</entry>
<entry>
<title>exofs/super.c: local functions should be static</title>
<updated>2011-10-03T15:07:29Z</updated>
<author>
<name>H Hartley Sweeten</name>
</author>
<published>2011-09-23T20:46:51Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=de74b05ace743b4a7aefad9e9b33ff899979b34a'/>
<id>urn:sha1:de74b05ace743b4a7aefad9e9b33ff899979b34a</id>
<content type='text'>
This quiets the following sparse noise:

warning: symbol 'exofs_sync_fs' was not declared. Should it be static?
warning: symbol 'exofs_free_sbi' was not declared. Should it be static?
warning: symbol 'exofs_get_parent' was not declared. Should it be static?

Signed-off-by: H Hartley Sweeten &lt;hsweeten@visionengravers.com&gt;
Signed-off-by: Boaz Harrosh &lt;bharrosh@panasas.com&gt;
</content>
</entry>
<entry>
<title>exofs: Rename raid engine from exofs/ios.c =&gt; ore</title>
<updated>2011-08-07T02:36:18Z</updated>
<author>
<name>Boaz Harrosh</name>
</author>
<published>2011-08-07T02:26:31Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8ff660ab85f524bdc7652eb5d38aaef1d66aa9c7'/>
<id>urn:sha1:8ff660ab85f524bdc7652eb5d38aaef1d66aa9c7</id>
<content type='text'>
ORE stands for "Objects Raid Engine"

This patch is a mechanical rename of everything that was in ios.c
and its API declaration to an ore.c and an osd_ore.h header. The ore
engine will later be used by the pnfs objects layout driver.

* File ios.c =&gt; ore.c

* Declaration of types and API are moved from exofs.h to a new
  osd_ore.h

* All used types are prefixed by ore_ from their exofs_ name.

* Shift includes from exofs.h to osd_ore.h so osd_ore.h is
  independent, include it from exofs.h.

Other than a pure rename there are no other changes. Next patch
will move the ore into it's own module and will export the API
to be used by exofs and later the layout driver

Signed-off-by: Boaz Harrosh &lt;bharrosh@panasas.com&gt;
</content>
</entry>
<entry>
<title>exofs: ios: Move to a per inode components &amp; device-table</title>
<updated>2011-08-07T02:35:32Z</updated>
<author>
<name>Boaz Harrosh</name>
</author>
<published>2011-08-05T22:06:04Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9e9db45649eb5d3ee5622fdad741914ecf1016a0'/>
<id>urn:sha1:9e9db45649eb5d3ee5622fdad741914ecf1016a0</id>
<content type='text'>
Exofs raid engine was saving on memory space by having a single layout-info,
single pid, and a single device-table, global to the filesystem. Then passing
a credential and object_id info at the io_state level, private for each
inode. It would also devise this contraption of rotating the device table
view for each inode-&gt;ino to spread out the device usage.

This is not compatible with the pnfs-objects standard, demanding that
each inode can have it's own layout-info, device-table, and each object
component it's own pid, oid and creds.

So: Bring exofs raid engine to be usable for generic pnfs-objects use by:

* Define an exofs_comp structure that holds obj_id and credential info.

* Break up exofs_layout struct to an exofs_components structure that holds a
  possible array of exofs_comp and the array of devices + the size of the
  arrays.

* Add a "comps" parameter to get_io_state() that specifies the ids creds
  and device array to use for each IO.

  This enables to keep the layout global, but the device-table view, creds
  and IDs at the inode level. It only adds two 64bit to each inode, since
  some of these members already existed in another form.

* ios raid engine now access layout-info and comps-info through the passed
  pointers. Everything is pre-prepared by caller for generic access of
  these structures and arrays.

At the exofs Level:

* Super block holds an exofs_components struct that holds the device
  array, previously in layout. The devices there are in device-table
  order. The device-array is twice bigger and repeats the device-table
  twice so now each inode's device array can point to a random device
  and have a round-robin view of the table, making it compatible to
  previous exofs versions.

* Each inode has an exofs_components struct that is initialized at
  load time, with it's own view of the device table IDs and creds.
  When doing IO this gets passed to the io_state together with the
  layout.

While preforming this change. Bugs where found where credentials with the
wrong IDs where used to access the different SB objects (super.c). As well
as some dead code. It was never noticed because the target we use does not
check the credentials.

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