SOURCES: patch.4.7.25.1 (NEW) - from upstream

arekm arekm at pld-linux.org
Tue Sep 2 15:55:54 CEST 2008


Author: arekm                        Date: Tue Sep  2 13:55:54 2008 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- from upstream

---- Files affected:
SOURCES:
   patch.4.7.25.1 (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/patch.4.7.25.1
diff -u /dev/null SOURCES/patch.4.7.25.1:1.1
--- /dev/null	Tue Sep  2 15:55:54 2008
+++ SOURCES/patch.4.7.25.1	Tue Sep  2 15:55:48 2008
@@ -0,0 +1,75 @@
+*** sequence/sequence.c.orig	2008-05-05 13:25:09.000000000 -0700
+--- sequence/sequence.c	2008-08-15 09:58:46.000000000 -0700
+***************
+*** 187,193 ****
+  	if ((ret = __db_get_flags(dbp, &tflags)) != 0)
+  		goto err;
+  
+! 	if (DB_IS_READONLY(dbp)) {
+  		ret = __db_rdonly(dbp->env, "DB_SEQUENCE->open");
+  		goto err;
+  	}
+--- 187,197 ----
+  	if ((ret = __db_get_flags(dbp, &tflags)) != 0)
+  		goto err;
+  
+! 	/*
+! 	 * We can let replication clients open sequences, but must
+! 	 * check later that they do not update them.
+! 	 */
+! 	if (F_ISSET(dbp, DB_AM_RDONLY)) {
+  		ret = __db_rdonly(dbp->env, "DB_SEQUENCE->open");
+  		goto err;
+  	}
+***************
+*** 244,249 ****
+--- 248,258 ----
+  		if ((ret != DB_NOTFOUND && ret != DB_KEYEMPTY) ||
+  		    !LF_ISSET(DB_CREATE))
+  			goto err;
++ 		if (IS_REP_CLIENT(env) &&
++ 		    !F_ISSET(dbp, DB_AM_NOT_DURABLE)) {
++ 			ret = __db_rdonly(env, "DB_SEQUENCE->open");
++ 			goto err;
++ 		}
+  		ret = 0;
+  
+  		rp = &seq->seq_record;
+***************
+*** 296,302 ****
+  	 */
+  	rp = seq->seq_data.data;
+  	if (rp->seq_version == DB_SEQUENCE_OLDVER) {
+! oldver:		rp->seq_version = DB_SEQUENCE_VERSION;
+  		if (!F_ISSET(env, ENV_LITTLEENDIAN)) {
+  			if (IS_DB_AUTO_COMMIT(dbp, txn)) {
+  				if ((ret =
+--- 305,316 ----
+  	 */
+  	rp = seq->seq_data.data;
+  	if (rp->seq_version == DB_SEQUENCE_OLDVER) {
+! oldver:		if (IS_REP_CLIENT(env) &&
+! 		    !F_ISSET(dbp, DB_AM_NOT_DURABLE)) {
+! 			ret = __db_rdonly(env, "DB_SEQUENCE->open");
+! 			goto err;
+! 		}
+! 		rp->seq_version = DB_SEQUENCE_VERSION;
+  		if (!F_ISSET(env, ENV_LITTLEENDIAN)) {
+  			if (IS_DB_AUTO_COMMIT(dbp, txn)) {
+  				if ((ret =
+***************
+*** 707,712 ****
+--- 721,733 ----
+  
+  	MUTEX_LOCK(env, seq->mtx_seq);
+  
++ 	if (handle_check && IS_REP_CLIENT(env) &&
++ 	    !F_ISSET(dbp, DB_AM_NOT_DURABLE)) {
++ 		ret = __db_rdonly(env, "DB_SEQUENCE->get");
++ 		goto err;
++ 	}
++ 
++ 
+  	if (rp->seq_min + delta > rp->seq_max) {
+  		__db_errx(env, "Sequence overflow");
+  		ret = EINVAL;
================================================================


More information about the pld-cvs-commit mailing list