Revision 62e252eeefda62eb8cae9f4286270317ab8d5a42 authored by Steven Whitehouse on 30 July 2012, 10:06:08 UTC, committed by Steven Whitehouse on 13 September 2012, 09:30:58 UTC
The claim_reserved_blks() function was not taking account of
the possibility of "blockages" while performing allocation.
This can be caused by another node allocating something in
the same extent which has been reserved locally.

This patch tests for this condition and then skips the remainder
of the reservation in this case. This is a relatively rare event,
so that it should not affect the general performance improvement
which the block reservations provide.

The claim_reserved_blks() function also appears not to be able
to deal with reservations which cross bitmap boundaries, but
that can be dealt with in a future patch since we don't generate
boundary crossing reservations currently.

Signed-off-by: Steven Whitehouse <swhiteho@redhat.com>
Reported-by: David Teigland <teigland@redhat.com>
Cc: Bob Peterson <rpeterso@redhat.com>
1 parent 645b2cc
Raw File
llc_sap.h
#ifndef LLC_SAP_H
#define LLC_SAP_H

#include <asm/types.h>

/*
 * Copyright (c) 1997 by Procom Technology,Inc.
 * 		 2001-2003 by Arnaldo Carvalho de Melo <acme@conectiva.com.br>
 *
 * This program can be redistributed or modified under the terms of the
 * GNU General Public License as published by the Free Software Foundation.
 * This program is distributed without any warranty or implied warranty
 * of merchantability or fitness for a particular purpose.
 *
 * See the GNU General Public License for more details.
 */
struct llc_sap;
struct net_device;
struct sk_buff;
struct sock;

extern void llc_sap_rtn_pdu(struct llc_sap *sap, struct sk_buff *skb);
extern void llc_save_primitive(struct sock *sk, struct sk_buff* skb,
			       unsigned char prim);
extern struct sk_buff *llc_alloc_frame(struct sock *sk, struct net_device *dev,
				       u8 type, u32 data_size);

extern void llc_build_and_send_test_pkt(struct llc_sap *sap,
				        struct sk_buff *skb,
					unsigned char *dmac,
					unsigned char dsap);
extern void llc_build_and_send_xid_pkt(struct llc_sap *sap,
				       struct sk_buff *skb,
				       unsigned char *dmac,
				       unsigned char dsap);
#endif /* LLC_SAP_H */
back to top