<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/fs/dlm, branch v2.6.20</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>[DLM] fix compile warning</title>
<updated>2006-12-15T17:51:22+00:00</updated>
<author>
<name>Patrick Caulfield</name>
<email>pcaulfie@redhat.com</email>
</author>
<published>2006-12-08T19:31:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=c80e7c83d56866a735236b45441f024b589f9e88'/>
<id>c80e7c83d56866a735236b45441f024b589f9e88</id>
<content type='text'>
This patch fixes a compile warning in lowcomms-tcp.c indicating that
kmem_cache_t is deprecated.

Signed-Off-By: Patrick Caulfield &lt;pcaulfie@redhat.com&gt;
Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch fixes a compile warning in lowcomms-tcp.c indicating that
kmem_cache_t is deprecated.

Signed-Off-By: Patrick Caulfield &lt;pcaulfie@redhat.com&gt;
Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge master.kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw</title>
<updated>2006-12-07T17:13:20+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@woody.osdl.org</email>
</author>
<published>2006-12-07T17:13:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=1c1afa3c053d4ccdf44e5a4e159005cdfd48bfc6'/>
<id>1c1afa3c053d4ccdf44e5a4e159005cdfd48bfc6</id>
<content type='text'>
* master.kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw: (73 commits)
  [DLM] Clean up lowcomms
  [GFS2] Change gfs2_fsync() to use write_inode_now()
  [GFS2] Fix indent in recovery.c
  [GFS2] Don't flush everything on fdatasync
  [GFS2] Add a comment about reading the super block
  [GFS2] Mount problem with the GFS2 code
  [GFS2] Remove gfs2_check_acl()
  [DLM] fix format warnings in rcom.c and recoverd.c
  [GFS2] lock function parameter
  [DLM] don't accept replies to old recovery messages
  [DLM] fix size of STATUS_REPLY message
  [GFS2] fs/gfs2/log.c:log_bmap() fix printk format warning
  [DLM] fix add_requestqueue checking nodes list
  [GFS2] Fix recursive locking in gfs2_getattr
  [GFS2] Fix recursive locking in gfs2_permission
  [GFS2] Reduce number of arguments to meta_io.c:getbuf()
  [GFS2] Move gfs2_meta_syncfs() into log.c
  [GFS2] Fix journal flush problem
  [GFS2] mark_inode_dirty after write to stuffed file
  [GFS2] Fix glock ordering on inode creation
  ...
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* master.kernel.org:/pub/scm/linux/kernel/git/steve/gfs2-2.6-nmw: (73 commits)
  [DLM] Clean up lowcomms
  [GFS2] Change gfs2_fsync() to use write_inode_now()
  [GFS2] Fix indent in recovery.c
  [GFS2] Don't flush everything on fdatasync
  [GFS2] Add a comment about reading the super block
  [GFS2] Mount problem with the GFS2 code
  [GFS2] Remove gfs2_check_acl()
  [DLM] fix format warnings in rcom.c and recoverd.c
  [GFS2] lock function parameter
  [DLM] don't accept replies to old recovery messages
  [DLM] fix size of STATUS_REPLY message
  [GFS2] fs/gfs2/log.c:log_bmap() fix printk format warning
  [DLM] fix add_requestqueue checking nodes list
  [GFS2] Fix recursive locking in gfs2_getattr
  [GFS2] Fix recursive locking in gfs2_permission
  [GFS2] Reduce number of arguments to meta_io.c:getbuf()
  [GFS2] Move gfs2_meta_syncfs() into log.c
  [GFS2] Fix journal flush problem
  [GFS2] mark_inode_dirty after write to stuffed file
  [GFS2] Fix glock ordering on inode creation
  ...
</pre>
</div>
</content>
</entry>
<entry>
<title>[PATCH] slab: remove kmem_cache_t</title>
<updated>2006-12-07T16:39:25+00:00</updated>
<author>
<name>Christoph Lameter</name>
<email>clameter@sgi.com</email>
</author>
<published>2006-12-07T04:33:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=e18b890bb0881bbab6f4f1a6cd20d9c60d66b003'/>
<id>e18b890bb0881bbab6f4f1a6cd20d9c60d66b003</id>
<content type='text'>
Replace all uses of kmem_cache_t with struct kmem_cache.

The patch was generated using the following script:

	#!/bin/sh
	#
	# Replace one string by another in all the kernel sources.
	#

	set -e

	for file in `find * -name "*.c" -o -name "*.h"|xargs grep -l $1`; do
		quilt add $file
		sed -e "1,\$s/$1/$2/g" $file &gt;/tmp/$$
		mv /tmp/$$ $file
		quilt refresh
	done

The script was run like this

	sh replace kmem_cache_t "struct kmem_cache"

Signed-off-by: Christoph Lameter &lt;clameter@sgi.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Replace all uses of kmem_cache_t with struct kmem_cache.

The patch was generated using the following script:

	#!/bin/sh
	#
	# Replace one string by another in all the kernel sources.
	#

	set -e

	for file in `find * -name "*.c" -o -name "*.h"|xargs grep -l $1`; do
		quilt add $file
		sed -e "1,\$s/$1/$2/g" $file &gt;/tmp/$$
		mv /tmp/$$ $file
		quilt refresh
	done

The script was run like this

	sh replace kmem_cache_t "struct kmem_cache"

Signed-off-by: Christoph Lameter &lt;clameter@sgi.com&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@osdl.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[DLM] Clean up lowcomms</title>
<updated>2006-12-07T14:25:13+00:00</updated>
<author>
<name>Patrick Caulfield</name>
<email>pcaulfie@redhat.com</email>
</author>
<published>2006-12-06T15:10:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=ac33d0710595579e3cfca42dde2257eb0b123f6d'/>
<id>ac33d0710595579e3cfca42dde2257eb0b123f6d</id>
<content type='text'>
This fixes up most of the things pointed out by akpm and Pavel Machek
with comments below indicating why some things have been left:

Andrew Morton wrote:
&gt;
&gt;&gt; +static struct nodeinfo *nodeid2nodeinfo(int nodeid, gfp_t alloc)
&gt;&gt; +{
&gt;&gt; +	struct nodeinfo *ni;
&gt;&gt; +	int r;
&gt;&gt; +	int n;
&gt;&gt; +
&gt;&gt; +	down_read(&amp;nodeinfo_lock);
&gt;
&gt; Given that this function can sleep, I wonder if `alloc' is useful.
&gt;
&gt; I see lots of callers passing in a literal "0" for `alloc'.  That's in fact
&gt; a secret (GFP_ATOMIC &amp; ~__GFP_HIGH).  I doubt if that's what you really
&gt; meant.  Particularly as the code could at least have used __GFP_WAIT (aka
&gt; GFP_NOIO) which is much, much more reliable than "0".  In fact "0" is the
&gt; least reliable mode possible.
&gt;
&gt; IOW, this is all bollixed up.

When 0 is passed into nodeid2nodeinfo the function does not try to allocate a
new structure at all. it's an indication that the caller only wants the nodeinfo
struct for that nodeid if there actually is one in existance.
I've tidied the function itself so it's more obvious, (and tidier!)

&gt;&gt; +/* Data received from remote end */
&gt;&gt; +static int receive_from_sock(void)
&gt;&gt; +{
&gt;&gt; +	int ret = 0;
&gt;&gt; +	struct msghdr msg;
&gt;&gt; +	struct kvec iov[2];
&gt;&gt; +	unsigned len;
&gt;&gt; +	int r;
&gt;&gt; +	struct sctp_sndrcvinfo *sinfo;
&gt;&gt; +	struct cmsghdr *cmsg;
&gt;&gt; +	struct nodeinfo *ni;
&gt;&gt; +
&gt;&gt; +	/* These two are marginally too big for stack allocation, but this
&gt;&gt; +	 * function is (currently) only called by dlm_recvd so static should be
&gt;&gt; +	 * OK.
&gt;&gt; +	 */
&gt;&gt; +	static struct sockaddr_storage msgname;
&gt;&gt; +	static char incmsg[CMSG_SPACE(sizeof(struct sctp_sndrcvinfo))];
&gt;
&gt; whoa.  This is globally singly-threaded code??

Yes. it is only ever run in the context of dlm_recvd.
&gt;&gt;
&gt;&gt; +static void initiate_association(int nodeid)
&gt;&gt; +{
&gt;&gt; +	struct sockaddr_storage rem_addr;
&gt;&gt; +	static char outcmsg[CMSG_SPACE(sizeof(struct sctp_sndrcvinfo))];
&gt;
&gt; Another static buffer to worry about.  Globally singly-threaded code?

Yes. Only ever called by dlm_sendd.

&gt;&gt; +
&gt;&gt; +/* Send a message */
&gt;&gt; +static int send_to_sock(struct nodeinfo *ni)
&gt;&gt; +{
&gt;&gt; +	int ret = 0;
&gt;&gt; +	struct writequeue_entry *e;
&gt;&gt; +	int len, offset;
&gt;&gt; +	struct msghdr outmsg;
&gt;&gt; +	static char outcmsg[CMSG_SPACE(sizeof(struct sctp_sndrcvinfo))];
&gt;
&gt; Singly-threaded?

Yep.

&gt;&gt;
&gt;&gt; +static void dealloc_nodeinfo(void)
&gt;&gt; +{
&gt;&gt; +	int i;
&gt;&gt; +
&gt;&gt; +	for (i=1; i&lt;=max_nodeid; i++) {
&gt;&gt; +		struct nodeinfo *ni = nodeid2nodeinfo(i, 0);
&gt;&gt; +		if (ni) {
&gt;&gt; +			idr_remove(&amp;nodeinfo_idr, i);
&gt;
&gt; Didn't that need locking?

Not. it's only ever called at DLM shutdown after all the other threads
have been stopped.

&gt;&gt;
&gt;&gt; +static int write_list_empty(void)
&gt;&gt; +{
&gt;&gt; +	int status;
&gt;&gt; +
&gt;&gt; +	spin_lock_bh(&amp;write_nodes_lock);
&gt;&gt; +	status = list_empty(&amp;write_nodes);
&gt;&gt; +	spin_unlock_bh(&amp;write_nodes_lock);
&gt;&gt; +
&gt;&gt; +	return status;
&gt;&gt; +}
&gt;
&gt; This function's return value is meaningless.  As soon as the lock gets
&gt; dropped, the return value can get out of sync with reality.
&gt;
&gt; Looking at the caller, this _might_ happen to be OK, but it's a nasty and
&gt; dangerous thing.  Really the locking should be moved into the caller.

It's just an optimisation to allow the caller to schedule if there is no work
to do. if something arrives immediately afterwards then it will get picked up
when the process re-awakes (and it will be woken by that arrival).

The 'accepting' atomic has gone completely. as Andrew pointed out it didn't
really achieve much anyway. I suspect it was a plaster over some other
startup or shutdown bug to be honest.


Signed-off-by: Patrick Caulfield &lt;pcaulfie@redhat.com&gt;
Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
Cc: Andrew Morton &lt;akpm@osdl.org&gt;
Cc: Pavel Machek &lt;pavel@ucw.cz&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This fixes up most of the things pointed out by akpm and Pavel Machek
with comments below indicating why some things have been left:

Andrew Morton wrote:
&gt;
&gt;&gt; +static struct nodeinfo *nodeid2nodeinfo(int nodeid, gfp_t alloc)
&gt;&gt; +{
&gt;&gt; +	struct nodeinfo *ni;
&gt;&gt; +	int r;
&gt;&gt; +	int n;
&gt;&gt; +
&gt;&gt; +	down_read(&amp;nodeinfo_lock);
&gt;
&gt; Given that this function can sleep, I wonder if `alloc' is useful.
&gt;
&gt; I see lots of callers passing in a literal "0" for `alloc'.  That's in fact
&gt; a secret (GFP_ATOMIC &amp; ~__GFP_HIGH).  I doubt if that's what you really
&gt; meant.  Particularly as the code could at least have used __GFP_WAIT (aka
&gt; GFP_NOIO) which is much, much more reliable than "0".  In fact "0" is the
&gt; least reliable mode possible.
&gt;
&gt; IOW, this is all bollixed up.

When 0 is passed into nodeid2nodeinfo the function does not try to allocate a
new structure at all. it's an indication that the caller only wants the nodeinfo
struct for that nodeid if there actually is one in existance.
I've tidied the function itself so it's more obvious, (and tidier!)

&gt;&gt; +/* Data received from remote end */
&gt;&gt; +static int receive_from_sock(void)
&gt;&gt; +{
&gt;&gt; +	int ret = 0;
&gt;&gt; +	struct msghdr msg;
&gt;&gt; +	struct kvec iov[2];
&gt;&gt; +	unsigned len;
&gt;&gt; +	int r;
&gt;&gt; +	struct sctp_sndrcvinfo *sinfo;
&gt;&gt; +	struct cmsghdr *cmsg;
&gt;&gt; +	struct nodeinfo *ni;
&gt;&gt; +
&gt;&gt; +	/* These two are marginally too big for stack allocation, but this
&gt;&gt; +	 * function is (currently) only called by dlm_recvd so static should be
&gt;&gt; +	 * OK.
&gt;&gt; +	 */
&gt;&gt; +	static struct sockaddr_storage msgname;
&gt;&gt; +	static char incmsg[CMSG_SPACE(sizeof(struct sctp_sndrcvinfo))];
&gt;
&gt; whoa.  This is globally singly-threaded code??

Yes. it is only ever run in the context of dlm_recvd.
&gt;&gt;
&gt;&gt; +static void initiate_association(int nodeid)
&gt;&gt; +{
&gt;&gt; +	struct sockaddr_storage rem_addr;
&gt;&gt; +	static char outcmsg[CMSG_SPACE(sizeof(struct sctp_sndrcvinfo))];
&gt;
&gt; Another static buffer to worry about.  Globally singly-threaded code?

Yes. Only ever called by dlm_sendd.

&gt;&gt; +
&gt;&gt; +/* Send a message */
&gt;&gt; +static int send_to_sock(struct nodeinfo *ni)
&gt;&gt; +{
&gt;&gt; +	int ret = 0;
&gt;&gt; +	struct writequeue_entry *e;
&gt;&gt; +	int len, offset;
&gt;&gt; +	struct msghdr outmsg;
&gt;&gt; +	static char outcmsg[CMSG_SPACE(sizeof(struct sctp_sndrcvinfo))];
&gt;
&gt; Singly-threaded?

Yep.

&gt;&gt;
&gt;&gt; +static void dealloc_nodeinfo(void)
&gt;&gt; +{
&gt;&gt; +	int i;
&gt;&gt; +
&gt;&gt; +	for (i=1; i&lt;=max_nodeid; i++) {
&gt;&gt; +		struct nodeinfo *ni = nodeid2nodeinfo(i, 0);
&gt;&gt; +		if (ni) {
&gt;&gt; +			idr_remove(&amp;nodeinfo_idr, i);
&gt;
&gt; Didn't that need locking?

Not. it's only ever called at DLM shutdown after all the other threads
have been stopped.

&gt;&gt;
&gt;&gt; +static int write_list_empty(void)
&gt;&gt; +{
&gt;&gt; +	int status;
&gt;&gt; +
&gt;&gt; +	spin_lock_bh(&amp;write_nodes_lock);
&gt;&gt; +	status = list_empty(&amp;write_nodes);
&gt;&gt; +	spin_unlock_bh(&amp;write_nodes_lock);
&gt;&gt; +
&gt;&gt; +	return status;
&gt;&gt; +}
&gt;
&gt; This function's return value is meaningless.  As soon as the lock gets
&gt; dropped, the return value can get out of sync with reality.
&gt;
&gt; Looking at the caller, this _might_ happen to be OK, but it's a nasty and
&gt; dangerous thing.  Really the locking should be moved into the caller.

It's just an optimisation to allow the caller to schedule if there is no work
to do. if something arrives immediately afterwards then it will get picked up
when the process re-awakes (and it will be woken by that arrival).

The 'accepting' atomic has gone completely. as Andrew pointed out it didn't
really achieve much anyway. I suspect it was a plaster over some other
startup or shutdown bug to be honest.


Signed-off-by: Patrick Caulfield &lt;pcaulfie@redhat.com&gt;
Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
Cc: Andrew Morton &lt;akpm@osdl.org&gt;
Cc: Pavel Machek &lt;pavel@ucw.cz&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>[DLM] fix format warnings in rcom.c and recoverd.c</title>
<updated>2006-11-30T15:37:22+00:00</updated>
<author>
<name>Ryusuke Konishi</name>
<email>ryusuke@osrg.net</email>
</author>
<published>2006-11-29T14:33:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=57adf7eede38d315e0e328c52484d6a596e9a238'/>
<id>57adf7eede38d315e0e328c52484d6a596e9a238</id>
<content type='text'>
This fixes the following gcc warnings generated on
the architectures where uint64_t != unsigned long long (e.g. ppc64).

fs/dlm/rcom.c:154: warning: format '%llx' expects type 'long long unsigned int', but argument 4 has type 'uint64_t'
fs/dlm/rcom.c:154: warning: format '%llx' expects type 'long long unsigned int', but argument 5 has type 'uint64_t'
fs/dlm/recoverd.c:48: warning: format '%llx' expects type 'long long unsigned int', but argument 3 has type 'uint64_t'
fs/dlm/recoverd.c:202: warning: format '%llx' expects type 'long long unsigned int', but argument 3 has type 'uint64_t'
fs/dlm/recoverd.c:210: warning: format '%llx' expects type 'long long unsigned int', but argument 3 has type 'uint64_t'

Signed-off-by: Ryusuke Konishi &lt;ryusuke@osrg.net&gt;
Signed-off-by: Patrick Caulfield &lt;pcaulfie@redhat.com&gt;
Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This fixes the following gcc warnings generated on
the architectures where uint64_t != unsigned long long (e.g. ppc64).

fs/dlm/rcom.c:154: warning: format '%llx' expects type 'long long unsigned int', but argument 4 has type 'uint64_t'
fs/dlm/rcom.c:154: warning: format '%llx' expects type 'long long unsigned int', but argument 5 has type 'uint64_t'
fs/dlm/recoverd.c:48: warning: format '%llx' expects type 'long long unsigned int', but argument 3 has type 'uint64_t'
fs/dlm/recoverd.c:202: warning: format '%llx' expects type 'long long unsigned int', but argument 3 has type 'uint64_t'
fs/dlm/recoverd.c:210: warning: format '%llx' expects type 'long long unsigned int', but argument 3 has type 'uint64_t'

Signed-off-by: Ryusuke Konishi &lt;ryusuke@osrg.net&gt;
Signed-off-by: Patrick Caulfield &lt;pcaulfie@redhat.com&gt;
Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[DLM] don't accept replies to old recovery messages</title>
<updated>2006-11-30T15:37:14+00:00</updated>
<author>
<name>David Teigland</name>
<email>teigland@redhat.com</email>
</author>
<published>2006-11-27T19:19:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=98f176fb32f33795b6d0f83856008b932123ab38'/>
<id>98f176fb32f33795b6d0f83856008b932123ab38</id>
<content type='text'>
We often abort a recovery after sending a status request to a remote node.
We want to ignore any potential status reply we get from the remote node.
If we get one of these unwanted replies, we've often moved on to the next
recovery message and incremented the message sequence counter, so the
reply will be ignored due to the seq number.  In some cases, we've not
moved on to the next message so the seq number of the reply we want to
ignore is still correct, causing the reply to be accepted.  The next
recovery message will then mistake this old reply as a new one.

To fix this, we add the flag RCOM_WAIT to indicate when we can accept a
new reply.  We clear this flag if we abort recovery while waiting for a
reply.  Before the flag is set again (to allow new replies) we know that
any old replies will be rejected due to their sequence number.  We also
initialize the recovery-message sequence number to a random value when a
lockspace is first created.  This makes it clear when messages are being
rejected from an old instance of a lockspace that has since been
recreated.

Signed-off-by: David Teigland &lt;teigland@redhat.com&gt;
Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We often abort a recovery after sending a status request to a remote node.
We want to ignore any potential status reply we get from the remote node.
If we get one of these unwanted replies, we've often moved on to the next
recovery message and incremented the message sequence counter, so the
reply will be ignored due to the seq number.  In some cases, we've not
moved on to the next message so the seq number of the reply we want to
ignore is still correct, causing the reply to be accepted.  The next
recovery message will then mistake this old reply as a new one.

To fix this, we add the flag RCOM_WAIT to indicate when we can accept a
new reply.  We clear this flag if we abort recovery while waiting for a
reply.  Before the flag is set again (to allow new replies) we know that
any old replies will be rejected due to their sequence number.  We also
initialize the recovery-message sequence number to a random value when a
lockspace is first created.  This makes it clear when messages are being
rejected from an old instance of a lockspace that has since been
recreated.

Signed-off-by: David Teigland &lt;teigland@redhat.com&gt;
Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[DLM] fix size of STATUS_REPLY message</title>
<updated>2006-11-30T15:37:08+00:00</updated>
<author>
<name>David Teigland</name>
<email>teigland@redhat.com</email>
</author>
<published>2006-11-27T19:18:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=1babdb453138f17b8ed3d1d5711089c4e2fa5ace'/>
<id>1babdb453138f17b8ed3d1d5711089c4e2fa5ace</id>
<content type='text'>
When the not_ready routine sends a "fake" status reply with blank status
flags, it needs to use the correct size for a normal STATUS_REPLY by
including the size of the would-be config parameters.  We also fill in the
non-existant config parameters with an invalid lvblen value so it's easier
to notice if these invalid paratmers are ever being used.

Signed-off-by: David Teigland &lt;teigland@redhat.com&gt;
Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When the not_ready routine sends a "fake" status reply with blank status
flags, it needs to use the correct size for a normal STATUS_REPLY by
including the size of the would-be config parameters.  We also fill in the
non-existant config parameters with an invalid lvblen value so it's easier
to notice if these invalid paratmers are ever being used.

Signed-off-by: David Teigland &lt;teigland@redhat.com&gt;
Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[DLM] fix add_requestqueue checking nodes list</title>
<updated>2006-11-30T15:37:00+00:00</updated>
<author>
<name>David Teigland</name>
<email>teigland@redhat.com</email>
</author>
<published>2006-11-27T17:31:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=2896ee37ccc1f9acb244c9b02becb74a43661009'/>
<id>2896ee37ccc1f9acb244c9b02becb74a43661009</id>
<content type='text'>
Requests that arrive after recovery has started are saved in the
requestqueue and processed after recovery is done.  Some of these requests
are purged during recovery if they are from nodes that have been removed.
We move the purging of the requests (dlm_purge_requestqueue) to later in
the recovery sequence which allows the routine saving requests
(dlm_add_requestqueue) to avoid filtering out requests by nodeid since the
same will be done by the purge.  The current code has add_requestqueue
filtering by nodeid but doesn't hold any locks when accessing the list of
current nodes.  This also means that we need to call the purge routine
when the lockspace is being shut down since the add routine will not be
rejecting requests itself any more.

Signed-off-by: David Teigland &lt;teigland@redhat.com&gt;
Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Requests that arrive after recovery has started are saved in the
requestqueue and processed after recovery is done.  Some of these requests
are purged during recovery if they are from nodes that have been removed.
We move the purging of the requests (dlm_purge_requestqueue) to later in
the recovery sequence which allows the routine saving requests
(dlm_add_requestqueue) to avoid filtering out requests by nodeid since the
same will be done by the purge.  The current code has add_requestqueue
filtering by nodeid but doesn't hold any locks when accessing the list of
current nodes.  This also means that we need to call the purge routine
when the lockspace is being shut down since the add routine will not be
rejecting requests itself any more.

Signed-off-by: David Teigland &lt;teigland@redhat.com&gt;
Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[DLM] Fix DLM config</title>
<updated>2006-11-30T15:35:41+00:00</updated>
<author>
<name>Patrick Caulfield</name>
<email>pcaulfie@redhat.com</email>
</author>
<published>2006-11-15T17:29:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=b98c95af01c10827e3443157651eb469071391a3'/>
<id>b98c95af01c10827e3443157651eb469071391a3</id>
<content type='text'>
The attached patch fixes the DLM config so that it selects the chosen network
transport. It should fix the bug where DLM can be left selected when NET gets
unselected. This incorporates all the comments received about this patch.

Cc: Adrian Bunk &lt;bunk@stusta.de&gt;
Cc: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-Off-By: Patrick Caulfield &lt;pcaulfie@redhat.com&gt;
Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The attached patch fixes the DLM config so that it selects the chosen network
transport. It should fix the bug where DLM can be left selected when NET gets
unselected. This incorporates all the comments received about this patch.

Cc: Adrian Bunk &lt;bunk@stusta.de&gt;
Cc: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-Off-By: Patrick Caulfield &lt;pcaulfie@redhat.com&gt;
Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>[DLM] clear sbflags on lock master</title>
<updated>2006-11-30T15:35:27+00:00</updated>
<author>
<name>David Teigland</name>
<email>teigland@redhat.com</email>
</author>
<published>2006-11-10T20:16:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=6f90a8b1b87f97144911790390d56f695b59db9b'/>
<id>6f90a8b1b87f97144911790390d56f695b59db9b</id>
<content type='text'>
RH BZ 211622

The ALTMODE flag can be set in the lock master's copy of the lock but
never cleared, so ALTMODE will also be returned in a subsequent conversion
of the lock when it shouldn't be.  This results in lock_dlm incorrectly
switching to the alternate lock mode when returning the result to gfs
which then asserts when it sees the wrong lock state.  The fix is to
propagate the cleared sbflags value to the master node when the lock is
requested.  QA's d_rwrandirectlarge test triggers this bug very quickly.

Signed-off-by: David Teigland &lt;teigland@redhat.com&gt;
Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
RH BZ 211622

The ALTMODE flag can be set in the lock master's copy of the lock but
never cleared, so ALTMODE will also be returned in a subsequent conversion
of the lock when it shouldn't be.  This results in lock_dlm incorrectly
switching to the alternate lock mode when returning the result to gfs
which then asserts when it sees the wrong lock state.  The fix is to
propagate the cleared sbflags value to the master node when the lock is
requested.  QA's d_rwrandirectlarge test triggers this bug very quickly.

Signed-off-by: David Teigland &lt;teigland@redhat.com&gt;
Signed-off-by: Steven Whitehouse &lt;swhiteho@redhat.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
