Эх сурвалжийг харах

Merge tag 'for-linus' of git://github.com/martinbrandenburg/linux

Pull OrangeFS fixes from Martin Brandenburg:
 "Two bugfixes for OrangeFS.

  One is a reference counting bug and the other is a typo in client
  minimum version"

* tag 'for-linus' of git://github.com/martinbrandenburg/linux:
  orangefs: minimum userspace version is 2.9.3
  orangefs: don't put readdir slot twice
Linus Torvalds 9 жил өмнө
parent
commit
22fed39775

+ 3 - 5
fs/orangefs/dir.c

@@ -235,7 +235,7 @@ get_new_buffer_index:
 	if (ret == -EIO && op_state_purged(new_op)) {
 	if (ret == -EIO && op_state_purged(new_op)) {
 		gossip_err("%s: Client is down. Aborting readdir call.\n",
 		gossip_err("%s: Client is down. Aborting readdir call.\n",
 			__func__);
 			__func__);
-		goto out_slot;
+		goto out_free_op;
 	}
 	}
 
 
 	if (ret < 0 || new_op->downcall.status != 0) {
 	if (ret < 0 || new_op->downcall.status != 0) {
@@ -244,14 +244,14 @@ get_new_buffer_index:
 			     new_op->downcall.status);
 			     new_op->downcall.status);
 		if (ret >= 0)
 		if (ret >= 0)
 			ret = new_op->downcall.status;
 			ret = new_op->downcall.status;
-		goto out_slot;
+		goto out_free_op;
 	}
 	}
 
 
 	dents_buf = new_op->downcall.trailer_buf;
 	dents_buf = new_op->downcall.trailer_buf;
 	if (dents_buf == NULL) {
 	if (dents_buf == NULL) {
 		gossip_err("Invalid NULL buffer in readdir response\n");
 		gossip_err("Invalid NULL buffer in readdir response\n");
 		ret = -ENOMEM;
 		ret = -ENOMEM;
-		goto out_slot;
+		goto out_free_op;
 	}
 	}
 
 
 	bytes_decoded = decode_dirents(dents_buf, new_op->downcall.trailer_size,
 	bytes_decoded = decode_dirents(dents_buf, new_op->downcall.trailer_size,
@@ -363,8 +363,6 @@ out_destroy_handle:
 out_vfree:
 out_vfree:
 	gossip_debug(GOSSIP_DIR_DEBUG, "vfree %p\n", dents_buf);
 	gossip_debug(GOSSIP_DIR_DEBUG, "vfree %p\n", dents_buf);
 	vfree(dents_buf);
 	vfree(dents_buf);
-out_slot:
-	orangefs_readdir_index_put(buffer_index);
 out_free_op:
 out_free_op:
 	op_release(new_op);
 	op_release(new_op);
 	gossip_debug(GOSSIP_DIR_DEBUG, "orangefs_readdir returning %d\n", ret);
 	gossip_debug(GOSSIP_DIR_DEBUG, "orangefs_readdir returning %d\n", ret);

+ 1 - 1
fs/orangefs/protocol.h

@@ -407,7 +407,7 @@ enum {
  * space. Zero signifies the upstream version of the kernel module.
  * space. Zero signifies the upstream version of the kernel module.
  */
  */
 #define ORANGEFS_KERNEL_PROTO_VERSION 0
 #define ORANGEFS_KERNEL_PROTO_VERSION 0
-#define ORANGEFS_MINIMUM_USERSPACE_VERSION 20904
+#define ORANGEFS_MINIMUM_USERSPACE_VERSION 20903
 
 
 /*
 /*
  * describes memory regions to map in the ORANGEFS_DEV_MAP ioctl.
  * describes memory regions to map in the ORANGEFS_DEV_MAP ioctl.