<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/gfs2/ops_export.c, branch linux-2.6.28.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.28.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.28.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2008-10-23T09:13:01Z</updated>
<entry>
<title>[PATCH] switch all filesystems over to d_obtain_alias</title>
<updated>2008-10-23T09:13:01Z</updated>
<author>
<name>Christoph Hellwig</name>
</author>
<published>2008-08-11T13:49:04Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=440037287c5ebb07033ab927ca16bb68c291d309'/>
<id>urn:sha1:440037287c5ebb07033ab927ca16bb68c291d309</id>
<content type='text'>
Switch all users of d_alloc_anon to d_obtain_alias.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>[PATCH] don't pass nameidata to gfs2_lookupi()</title>
<updated>2008-07-27T00:53:36Z</updated>
<author>
<name>Al Viro</name>
</author>
<published>2008-07-23T18:42:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a569c711f63995ad80c23918525111e0cdb0bc73'/>
<id>urn:sha1:a569c711f63995ad80c23918525111e0cdb0bc73</id>
<content type='text'>
Signed-off-by: Al Viro &lt;viro@zeniv.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>[GFS2] test for IS_ERR rather than 0</title>
<updated>2008-03-31T09:41:46Z</updated>
<author>
<name>Julia Lawall</name>
</author>
<published>2008-03-24T18:08:48Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=773adff8e983cba1f5844c3be3be224ca6645f26'/>
<id>urn:sha1:773adff8e983cba1f5844c3be3be224ca6645f26</id>
<content type='text'>
The function gfs2_inode_lookup always returns either a valid pointer or a
value made with ERR_PTR, so its result should be tested with IS_ERR, not
with a test for 0.

The problem was found using the following semantic match.
(http://www.emn.fr/x-info/coccinelle/)

//&lt;smpl&gt;
@a@
expression E, E1;
statement S,S1;
position p;
@@

E = gfs2_inode_lookup(...)
... when != E = E1
if@p (E) S else S1

@n@
position a.p;
expression E,E1;
statement S,S1;
@@

E = NULL
... when != E = E1
if@p (E) S else S1

@depends on !n@
expression E;
statement S,S1;
position a.p;
@@

* if@p (E)
  S else S1
//&lt;/smpl&gt;

Signed-off-by: Julia Lawall &lt;julia@diku.dk&gt;
Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
</entry>
<entry>
<title>Convert ERR_PTR(PTR_ERR(p)) instances to ERR_CAST(p)</title>
<updated>2008-02-07T16:42:26Z</updated>
<author>
<name>David Howells</name>
</author>
<published>2008-02-07T08:15:26Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e231c2ee64eb1c5cd3c63c31da9dac7d888dcf7f'/>
<id>urn:sha1:e231c2ee64eb1c5cd3c63c31da9dac7d888dcf7f</id>
<content type='text'>
Convert instances of ERR_PTR(PTR_ERR(p)) to ERR_CAST(p) using:

perl -spi -e 's/ERR_PTR[(]PTR_ERR[(](.*)[)][)]/ERR_CAST(\1)/' `grep -rl 'ERR_PTR[(]*PTR_ERR' fs crypto net security`

Signed-off-by: David Howells &lt;dhowells@redhat.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>exportfs: make struct export_operations const</title>
<updated>2007-10-22T15:13:21Z</updated>
<author>
<name>Christoph Hellwig</name>
</author>
<published>2007-10-21T23:42:17Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=39655164405940d4818224a085e35420e2f97aed'/>
<id>urn:sha1:39655164405940d4818224a085e35420e2f97aed</id>
<content type='text'>
Now that nfsd has stopped writing to the find_exported_dentry member we an
mark the export_operations const

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Cc: Neil Brown &lt;neilb@suse.de&gt;
Cc: "J. Bruce Fields" &lt;bfields@fieldses.org&gt;
Cc: &lt;linux-ext4@vger.kernel.org&gt;
Cc: Dave Kleikamp &lt;shaggy@austin.ibm.com&gt;
Cc: Anton Altaparmakov &lt;aia21@cantab.net&gt;
Cc: David Chinner &lt;dgc@sgi.com&gt;
Cc: Timothy Shimmin &lt;tes@sgi.com&gt;
Cc: OGAWA Hirofumi &lt;hirofumi@mail.parknet.co.jp&gt;
Cc: Hugh Dickins &lt;hugh@veritas.com&gt;
Cc: Chris Mason &lt;mason@suse.com&gt;
Cc: Jeff Mahoney &lt;jeffm@suse.com&gt;
Cc: "Vladimir V. Saveliev" &lt;vs@namesys.com&gt;
Cc: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
Cc: Mark Fasheh &lt;mark.fasheh@oracle.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>gfs2: new export ops</title>
<updated>2007-10-22T15:13:20Z</updated>
<author>
<name>Christoph Hellwig</name>
</author>
<published>2007-10-21T23:42:14Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=34c0d154243dd913c5690ae6ceb9557017429b9c'/>
<id>urn:sha1:34c0d154243dd913c5690ae6ceb9557017429b9c</id>
<content type='text'>
Convert gfs2 to the new ops.  Uses a similar structure to the generic helpers,
but gfs2 has it's own file handle formats.

Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Cc: Neil Brown &lt;neilb@suse.de&gt;
Cc: "J. Bruce Fields" &lt;bfields@fieldses.org&gt;
Cc: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>[GFS2] Alternate gfs2_iget to avoid looking up inodes being freed</title>
<updated>2007-10-10T07:56:29Z</updated>
<author>
<name>Benjamin Marzinski</name>
</author>
<published>2007-09-18T18:33:18Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7a9f53b3c1875bef22ad4588e818bc046ef183da'/>
<id>urn:sha1:7a9f53b3c1875bef22ad4588e818bc046ef183da</id>
<content type='text'>
There is a possible deadlock between two processes on the same node, where one
process is deleting an inode, and another process is looking for allocated but
unused inodes to delete in order to create more space.

process A does an iput() on inode X, and it's i_count drops to 0. This causes
iput_final() to be called, which puts an inode into state I_FREEING at
generic_delete_inode(). There no point between when iput_final() is called, and
when I_FREEING is set where GFS2 could acquire any glocks. Once I_FREEING is
set, no other process on that node can successfully look up that inode until
the delete finishes.

process B locks the the resource group for the same inode in get_local_rgrp(),
which is called by gfs2_inplace_reserve_i()

process A tries to lock the resource group for the inode in
gfs2_dinode_dealloc(), but it's already locked by process B

process B waits in find_inode for the inode to have the I_FREEING state cleared.

Deadlock.

This patch solves the problem by adding an alternative to gfs2_iget(),
gfs2_iget_skip(), that simply skips any inodes that are in the I_FREEING
state.o The alternate test function is just like the original one, except that
it fails if the inode is being freed, and sets a skipped flag. The alternate
set function is just like the original, except that it fails if the skipped
flag is set. Only try_rgrp_unlink() calls gfs2_iget_skip() instead of
gfs2_iget().

Signed-off-by: Benjamin E. Marzinski &lt;bmarzins@redhat.com&gt;
Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
</entry>
<entry>
<title>knfsd: exportfs: add exportfs.h header</title>
<updated>2007-07-17T17:23:06Z</updated>
<author>
<name>Christoph Hellwig</name>
</author>
<published>2007-07-17T11:04:28Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a569425512253992cc64ebf8b6d00a62f986db3e'/>
<id>urn:sha1:a569425512253992cc64ebf8b6d00a62f986db3e</id>
<content type='text'>
currently the export_operation structure and helpers related to it are in
fs.h.  fs.h is already far too large and there are very few places needing the
export bits, so split them off into a separate header.

[akpm@linux-foundation.org: fix cifs build]
Signed-off-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Neil Brown &lt;neilb@suse.de&gt;
Cc: Steven French &lt;sfrench@us.ibm.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>[GFS2] Accept old format NFS filehandles</title>
<updated>2007-07-10T11:28:27Z</updated>
<author>
<name>Steven Whitehouse</name>
</author>
<published>2007-07-10T11:28:27Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3ebf44902f77537b5784eb5059c2b78d8b5a920a'/>
<id>urn:sha1:3ebf44902f77537b5784eb5059c2b78d8b5a920a</id>
<content type='text'>
On Tue, 2007-07-10 at 10:06 +0100, Christoph Hellwig wrote:
&gt; &gt; -#define GFS2_LARGE_FH_SIZE 10
&gt; &gt; -
&gt; &gt; -struct gfs2_fh_obj {
&gt; &gt; -   struct gfs2_inum_host this;
&gt; &gt; -   u32 imode;
&gt; &gt; -};
&gt; &gt; +#define GFS2_LARGE_FH_SIZE 8
&gt;
&gt; Because gfs2_decode_fh only accepts file handles with GFS2_LARGE_FH_SIZE
&gt; or GFS2_LARGE_FH_SIZE you don't accept filehandles sent out by and older
&gt; gfs version anymore.  Stale filehandles because of a new kernel version
&gt; are a big no-no, so please add back code to handle the old filehandles
&gt; on the decode side.
&gt;

This should fix that problem I think since its only relating to end of
the fh we can just ignore that field in order to accept the older
format.

Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
Cc: Christoph Hellwig &lt;hch@infradead.org&gt;
Cc: Wendy Cheng &lt;wcheng@redhat.com&gt;
</content>
</entry>
<entry>
<title>[GFS2] Remove i_mode passing from NFS File Handle</title>
<updated>2007-07-09T07:24:11Z</updated>
<author>
<name>Wendy Cheng</name>
</author>
<published>2007-06-27T21:07:53Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=35dcc52e3a916184b145fd840250244b81004200'/>
<id>urn:sha1:35dcc52e3a916184b145fd840250244b81004200</id>
<content type='text'>
GFS2 has been passing i_mode within NFS File Handle. Other than the
wrong assumption that there is always room for this extra 16 bit value,
the current gfs2_get_dentry doesn't really need the i_mode to work
correctly. Note that GFS2 NFS code does go thru the same lookup code
path as direct file access route (where the mode is obtained from name
lookup) but gfs2_get_dentry() is coded for different purpose. It is not
used during lookup time. It is part of the file access procedure call.
When the call is invoked, if on-disk inode is not in-memory, it has to
be read-in. This makes i_mode passing a useless overhead.

Signed-off-by: S. Wendy Cheng &lt;wcheng@redhat.com&gt;
Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
</entry>
</feed>
