63x34+35x34+68

2012运筹学第三次上机作业_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
2012运筹学第三次上机作业
上传于||文档简介
&&D​U​T
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩4页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢Linux/drivers/mtd/nand/fsmc_nand.c - Linux Cross Reference - Free Electrons
Version: &&&&&&&&&&&&&&&&&&&&&4.8
* drivers/mtd/nand/fsmc_nand.c
* ST Microelectronics
* Flexible Static Memory Controller (FSMC)
* Driver for NAND portions
* Copyright (C) 2010 ST Microelectronics
* Vipin Kumar &vipin.&
* Ashish Priyadarshi
* Based on drivers/mtd/nand/nomadik_nand.c
* This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any
* warranty of any kind, whether express or implied.
#include &linux/clk.h&
#include &linux/completion.h&
#include &linux/dmaengine.h&
#include &linux/dma-direction.h&
#include &linux/dma-mapping.h&
#include &linux/err.h&
#include &linux/init.h&
#include &linux/module.h&
#include &linux/resource.h&
#include &linux/sched.h&
#include &linux/types.h&
#include &linux/mtd/mtd.h&
#include &linux/mtd/nand.h&
#include &linux/mtd/nand_ecc.h&
#include &linux/platform_device.h&
#include &linux/of.h&
#include &linux/mtd/partitions.h&
#include &linux/io.h&
#include &linux/slab.h&
#include &linux/mtd/fsmc.h&
#include &linux/amba/bus.h&
#include &mtd/mtd-abi.h&
static int (struct
*oobregion)
if ( &= -&ecc.)
oobregion-& = ( * 16) + 2;
oobregion-& = 3;
static int (struct
*oobregion)
if ( &= -&ecc.)
oobregion-& = ( * 16) + 8;
if ( & -&ecc. - 1)
oobregion-& = 8;
oobregion-& = -&oobsize - oobregion-&;
static const struct
* ECC placement definitions in oobfree type format.
* There are 13 bytes of ecc for every 512 byte block and it has to be read
* consecutively and immediately after the 512 byte data block for hardware to
* generate the error bit offsets in 512 byte data.
static int (struct
*oobregion)
if ( &= -&ecc.)
oobregion-& = -&ecc.;
if (! && -&writesize &= 512)
oobregion-& = 0;
oobregion-& = ( * 16) + 2;
static int (struct
*oobregion)
if ( &= -&ecc.)
oobregion-& = ( * 16) + 15;
if ( & -&ecc. - 1)
oobregion-& = 3;
oobregion-& = -&oobsize - oobregion-&;
static const struct
* struct fsmc_nand_data - structure for FSMC NAND device state
Part ID on the AMBA PrimeCell format
MTD info for a NAND flash.
Chip related info for a NAND flash.
* @partitions:
Partition info for a NAND Flash.
* @nr_partitions:
Total number of partition of a NAND flash.
Bank number for probed device.
Clock structure for FSMC.
* @read_dma_chan:
DMA channel for read access
* @write_dma_chan:
DMA channel for write access to NAND
* @dma_access_complete: Completion structure
* @data_pa:
NAND Physical port for Data.
* @data_va:
NAND port for Data.
* @cmd_va:
NAND port for Command.
* @addr_va:
NAND port for Address.
* @regs_va:
FSMC regs base address.
unsigned int
/* DMA related objects */
*read_dma_
*write_dma_
dma_access_
(*select_chip)( bank,
static inline struct
return ((), struct , nand);
/* Assert CS signal based on chipnr */
static void (struct
*, int chipnr)
switch (chipnr) {
-&cmd_ctrl(, , 0 | );
if (-&select_chip)
-&select_chip(chipnr,
(-&, "unsupported chip-select %d\n", chipnr);
* fsmc_cmd_ctrl - For facilitaing Hardware access
* This routine allows hardware specific access to control-lines(ALE,CLE)
static void (struct
*, int , unsigned int )
* = -&regs_
unsigned int bank = -&
if ( & ) {
if ( & ) {
-&IO_ADDR_R = -&cmd_
-&IO_ADDR_W = -&cmd_
} else if ( & ) {
-&IO_ADDR_R = -&addr_
-&IO_ADDR_W = -&addr_
-&IO_ADDR_R = -&data_
-&IO_ADDR_W = -&data_
= ((, bank, ));
&= ~FSMC_ENABLE;
(, (, bank, ));
(, -&IO_ADDR_W);
* fsmc_nand_setup - FSMC (Flexible Static Memory Controller) init routine
* This routine initializes timing parameters related to NAND memory access in
* FSMC registers
static void (void
busw, struct
tclr, tar, thiz, thold, twait,
default_timings = {
tims = &default_
tclr = (tims-&tclr & ) && ;
tar = (tims-&tar & ) && ;
thiz = (tims-&thiz & ) && ;
thold = (tims-&thold & ) && ;
twait = (tims-&twait & ) && ;
tset = (tims-&tset & ) && ;
(, bank, ));
(, bank, ));
(((, bank, )) | tclr | tar,
(, bank, ));
(thiz | thold | twait | tset,
(, bank, ));
(thiz | thold | twait | tset,
(, bank, ));
* fsmc_enable_hwecc - Enables Hardware ECC through FSMC registers
static void (struct
* = -&regs_
(((, bank, )) & ~FSMC_ECCPLEN_256,
(, bank, ));
(((, bank, )) & ~FSMC_ECCEN,
(, bank, ));
(((, bank, )) | ,
(, bank, ));
* fsmc_read_hwecc_ecc4 - Hardware ECC calculator for ecc4 option supported by
* FSMC. ECC is 13 bytes for 512 bytes of data (supports error correction up to
* max of 8-bits)
static int (struct
* = -&regs_
unsigned long
if (((, bank, )) & )
} while (!(, ));
if ((, )) {
(-&, "calculate ecc timed out\n");
ecc_tmp = ((, bank, ));
ecc[0] = () (ecc_tmp && 0);
ecc[1] = () (ecc_tmp && 8);
ecc[2] = () (ecc_tmp && 16);
ecc[3] = () (ecc_tmp && 24);
ecc_tmp = ((, bank, ));
ecc[4] = () (ecc_tmp && 0);
ecc[5] = () (ecc_tmp && 8);
ecc[6] = () (ecc_tmp && 16);
ecc[7] = () (ecc_tmp && 24);
ecc_tmp = ((, bank, ));
ecc[8] = () (ecc_tmp && 0);
ecc[9] = () (ecc_tmp && 8);
ecc[10] = () (ecc_tmp && 16);
ecc[11] = () (ecc_tmp && 24);
ecc_tmp = ((, bank, ));
ecc[12] = () (ecc_tmp && 16);
* fsmc_read_hwecc_ecc1 - Hardware ECC calculator for ecc1 option supported by
* FSMC. ECC is 3 bytes for 512 bytes of data (supports error correction up to
* max of 1-bit)
static int (struct
* = -&regs_
ecc_tmp = ((, bank, ));
ecc[0] = () (ecc_tmp && 0);
ecc[1] = () (ecc_tmp && 8);
ecc[2] = () (ecc_tmp && 16);
/* Count the number of 0's in buff upto a max of max_bits */
static int ( *buff, int , int max_bits)
int k, written_bits = 0;
for (k = 0; k & ; k++) {
written_bits += (~buff[k]);
if (written_bits & max_bits)
return written_
static void (void *)
(&-&dma_access_complete);
static int (struct
*, void *, int ,
dma_dst, dma_src, dma_
unsigned long
= DMA_CTRL_ACK | DMA_PREP_INTERRUPT;
unsigned long time_
if ( == DMA_TO_DEVICE)
= -&write_dma_
else if ( == DMA_FROM_DEVICE)
= -&read_dma_
dma_addr = (-&, , , );
if ( == DMA_TO_DEVICE) {
dma_src = dma_
dma_dst = -&data_
dma_src = -&data_
dma_dst = dma_
= -&device_prep_dma_memcpy(, dma_dst, dma_src,
(-&, "device_prep_dma_memcpy error\n");
cookie = -&tx_submit();
= (cookie);
(-&, "dma_submit_error %d\n", cookie);
time_left =
(&-&dma_access_complete,
if (time_left == 0) {
(-&, "wait_for_completion_timeout\n");
(-&, dma_addr, , );
* fsmc_write_buf - write buffer to chip
MTD device structure
data buffer
number of bytes to write
static void (struct
if (((), sizeof()) &&
(, sizeof())) {
for ( = 0;
([], -&IO_ADDR_W);
for ( = 0;
([], -&IO_ADDR_W);
* fsmc_read_buf - read chip data into buffer
MTD device structure
buffer to store date
number of bytes to read
static void (struct
if (((), sizeof()) &&
(, sizeof())) {
for ( = 0;
[] = (-&IO_ADDR_R);
for ( = 0;
[] = (-&IO_ADDR_R);
* fsmc_read_buf_dma - read chip data into buffer
MTD device structure
buffer to store date
number of bytes to read
static void (struct
(, , , DMA_FROM_DEVICE);
* fsmc_write_buf_dma - write buffer to chip
MTD device structure
data buffer
number of bytes to write
static void (struct
(, (void *), , DMA_TO_DEVICE);
* fsmc_read_page_hwecc
mtd info structure
nand chip info structure
buffer to store read data
* @oob_required:
caller expects OOB data read to chip-&oob_poi
page number to read
* This routine is needed for fsmc version 8 as reading from NAND chip has to be
* performed in a strict sequence as follows:
* data(512 byte) -& ecc(13 byte)
* After this read, fsmc hardware generates and reports error data bits(up to a
* max of 8 bits)
static int (struct
*, int oob_required, int )
int , , , , eccsize = -&ecc.;
int eccbytes = -&ecc.;
int eccsteps = -&ecc.;
*ecc_calc = -&-&
*ecc_code = -&-&
* ecc_oob is intentionally taken as uint16_t. In 16bit devices, we
* end up reading 14 bytes (7 words) from oob. The local array is
* to maintain word alignment
ecc_oob[7];
* = ( *)&ecc_oob[0];
unsigned int max_bitflips = 0;
for ( = 0,
+= eccbytes,
+= eccsize) {
-&cmdfunc(, ,
* eccsize, );
-&ecc.hwctl(, );
-&(, , eccsize);
for ( = 0;
= (, ++, &oobregion);
= oobregion.;
= oobregion.;
* length is intentionally kept a higher multiple of 2
* to read at least 13 bytes even in case of 16 bit NAND
if (-& & )
-&cmdfunc(, , , );
(&ecc_code[], , -&ecc.);
-&ecc.(, , &ecc_calc[]);
= -&ecc.correct(, , &ecc_code[], &ecc_calc[]);
if ( & 0) {
-&ecc_stats.++;
-&ecc_stats.corrected += ;
max_bitflips = (unsigned int, max_bitflips, );
return max_
* fsmc_bch8_correct_data
mtd info structure
buffer of read data
* @read_ecc:
ecc read from device spare area
* @calc_ecc:
ecc calculated from read data
* calc_ecc is a 104 bit information containing maximum of 8 error
* offset informations of 13 bits each in 512 bytes of read data.
static int (struct
*read_ecc,
*calc_ecc)
* = -&regs_
unsigned int bank = -&
err_idx[8];
num_err, ;
ecc1, , ecc3, ecc4;
num_err = (((, bank, )) && 10) & 0xF;
/* no bit flipping */
if ((num_err == 0))
/* too many errors */
if ((num_err & 8)) {
* This is a temporary erase check. A newly erased page read
* would result in an ecc error because the oob data is also
* erased to FF and the calculated ecc for an FF data is not
* This is a workaround to skip performing correction in case
* data is FF..FF
* For every page, each bit written as 0 is counted until these
* number of bits are greater than 8 (the maximum correction
* capability of FSMC for each 512 + 13 bytes)
int bits_ecc = (read_ecc, -&ecc., 8);
int bits_data = (dat, -&ecc., 8);
if ((bits_ecc + bits_data) &= 8) {
if (bits_data)
(dat, 0xff, -&ecc.);
return bits_
* ------------------- calc_ecc[] bit wise -----------|--13 bits--|
* |---idx[7]--|--.....-----|---idx[2]--||---idx[1]--||---idx[0]--|
* calc_ecc is a 104 bit information containing maximum of 8 error
* offset informations of 13 bits each. calc_ecc is copied into a
* uint64_t array and error offset indexes are populated in err_idx
ecc1 = ((, bank, ));
= ((, bank, ));
ecc3 = ((, bank, ));
ecc4 = ((, bank, ));
err_idx[0] = (ecc1 && 0) & 0x1FFF;
err_idx[1] = (ecc1 && 13) & 0x1FFF;
err_idx[2] = ((( && 0) & 0x7F) && 6) | ((ecc1 && 26) & 0x3F);
err_idx[3] = ( && 7) & 0x1FFF;
err_idx[4] = (((ecc3 && 0) & 0x1) && 12) | (( && 20) & 0xFFF);
err_idx[5] = (ecc3 && 1) & 0x1FFF;
err_idx[6] = (ecc3 && 14) & 0x1FFF;
err_idx[7] = (((ecc4 && 16) & 0xFF) && 5) | ((ecc3 && 27) & 0x1F);
while (num_err--) {
(0, (unsigned long *)&err_idx[]);
(1, (unsigned long *)&err_idx[]);
if (err_idx[] & -&ecc. * 8) {
(err_idx[], (unsigned long *)dat);
*, void *)
#ifdef CONFIG_OF
static int (struct
* = (&-&);
/* Set default NAND width to 8 bits */
if (!(, "bank-width", &)) {
if ( == 2) {
} else if ( != 1) {
(&-&, "invalid bank-width %u\n", );
if ((, "nand-skip-bbtscan", ))
-&nand_timings = (&-&,
sizeof(*-&nand_timings), );
if (!-&nand_timings)
= (, "timings", ( *)-&nand_timings,
sizeof(*-&nand_timings));
(&-&, "No timings in dts specified, using default timings!\n");
-&nand_timings = ;
/* Set default NAND bank to 0 */
-&bank = 0;
if (!(, "bank", &)) {
if ( & 3) {
(&-&, "invalid bank %u\n", );
-&bank = ;
static int (struct
* fsmc_nand_probe - Probe function
platform device structure
static int
* = (&-&);
* = -&.of_
= (&-&, sizeof(*), );
(&-&, "no platform data\n");
(&-&, "platform data is NULL\n");
/* Allocate memory for the device structure (and zero it) */
= (&-&, sizeof(*), );
= (, , "nand_data");
-&data_va = (&-&, );
if ((-&data_va))
return (-&data_va);
-&data_pa = ()-&;
= (, , "nand_addr");
-&addr_va = (&-&, );
if ((-&addr_va))
return (-&addr_va);
= (, , "nand_cmd");
-&cmd_va = (&-&, );
if ((-&cmd_va))
return (-&cmd_va);
= (, , "fsmc_regs");
-&regs_va = (&-&, );
if ((-&regs_va))
return (-&regs_va);
-& = (&-&, );
if ((-&)) {
(&-&, "failed to fetch block clock\n");
return (-&);
goto err_clk_prepare_
* This device ID is actually a common AMBA ID as used on the
* AMBA PrimeCell bus. However it is not a PrimeCell.
for ( = 0,
|= ((-&regs_va + () - 0x20 + 4 * ) & 255) && ( * 8);
(&-&, "FSMC device partno %03x, manufacturer %02x, "
"revision %02x, config %02x\n",
-&bank = -&
-&select_chip = -&select_
-&nr_partitions = -&nr_
-&dev_timings = -&nand_
if (-& == USE_DMA_ACCESS)
(&-&dma_access_complete);
/* Link all private pointers */
= (&-&nand);
nand = &-&
-&. = &-&;
nand-&IO_ADDR_R = -&data_
nand-&IO_ADDR_W = -&data_
nand-&cmd_ctrl = ;
nand-&chip_delay = 30;
* Setup default ECC mode. nand_dt_init() called from nand_scan_ident()
* can overwrite this value if the DT provides a different value.
nand-&ecc. = NAND_ECC_HW;
nand-&ecc.hwctl = ;
nand-&ecc. = 512;
nand-& = -&;
nand-&select_chip = ;
nand-&badblockbits = 7;
if (-& == )
nand-& |= ;
switch (-&) {
case USE_DMA_ACCESS:
(DMA_MEMCPY, );
-&read_dma_chan = (, ,
-&read_dma_priv);
if (!-&read_dma_chan) {
(&-&, "Unable to get read dma channel\n");
goto err_req_read_
-&write_dma_chan = (, ,
-&write_dma_priv);
if (!-&write_dma_chan) {
(&-&, "Unable to get write dma channel\n");
goto err_req_write_
nand-& = ;
nand-& = ;
case USE_WORD_ACCESS:
nand-& = ;
nand-& = ;
(-&regs_va, -&bank,
nand-& & ,
-&dev_timings);
if ((-&) &= 8) {
nand-&ecc. = ;
nand-&ecc. = ;
nand-&ecc.correct = ;
nand-&ecc. = 13;
nand-&ecc.strength = 8;
* Scan to find existence of the device
if ((, 1, )) {
(&-&, "No NAND Device found!\n");
goto err_scan_
if ((-&) &= 8) {
switch (-&oobsize) {
(&-&, "No oob scheme defined for oobsize %d\n",
-&oobsize);
switch (nand-&ecc.) {
case NAND_ECC_HW:
(&-&, "Using 1-bit HW ECC scheme\n");
nand-&ecc. = ;
nand-&ecc.correct = ;
nand-&ecc. = 3;
nand-&ecc.strength = 1;
case NAND_ECC_SOFT:
if (nand-&ecc. == NAND_ECC_BCH) {
(&-&, "Using 4-bit SW BCH ECC scheme\n");
(&-&, "Unsupported ECC mode!\n");
* Don't set layout for BCH4 SW ECC. This will be
* generated later in nand_bch_init() later.
if (nand-&ecc. == NAND_ECC_HW) {
switch (-&oobsize) {
"No oob scheme defined for oobsize %d\n",
-&oobsize);
/* Second stage of scan to fill MTD data-structures */
* The partition information can is accessed by (in the same precedence)
* command line through Bootloader,
* platform data,
* default partition information present in driver.
* Check for partition info passed
-& = "nand";
= (, -&, -&nr_partitions);
(&-&, "FSMC NAND driver registration successful\n");
err_probe:
err_scan_ident:
if (-& == USE_DMA_ACCESS)
(-&write_dma_chan);
err_req_write_chnl:
if (-& == USE_DMA_ACCESS)
(-&read_dma_chan);
err_req_read_chnl:
err_clk_prepare_enable:
* Clean up routine
static int (struct
((&-&nand));
if (-& == USE_DMA_ACCESS) {
(-&write_dma_chan);
(-&read_dma_chan);
#ifdef CONFIG_PM_SLEEP
static int (struct
static int (struct
(-&regs_va, -&bank,
-&nand. & ,
-&dev_timings);
static (fsmc_nand_pm_ops, , );
#ifdef CONFIG_OF
static const struct
{ .compatible = "st,spear600-fsmc-nand" },
{ .compatible = "stericsson,fsmc-nand" },
static struct
. = "fsmc-nand",
.of_match_table = (),
. = &fsmc_nand_pm_ops,
("Vipin Kumar &vipin.&, Ashish Priyadarshi");
("NAND driver for SPEAr Platforms");
This page was automatically generated by
Linux is a registered trademark of Linus Torvaldsopen guides
survival stuff
audio stuff
cable stuff
protocol stuff
Chapter 12. LDAP Trouble & Errors
OpenLDAP is sometimes criticised for poor error messages and diagnostics. Partly this is due to the generic standardisation of error messages which limits the implementation's ability to be informative and creative (in all fairness they also add a textual element to help pin-point the problem) and partly to the fact that many error messages are reported via clients which can do some serious mangling of any original diagnostics.
The best information comes from OpenLDAP's rather voluminous logging (certainly when using ).
We document below some information on reading
with some hints as to where the possible cause may lie.
Standard LDAP Error Messages
These error messages are defined in , a draft RFC on the
and inspection of OpenLDAP LDAPResult.h.
Error Name
Explanation/Causes
LDAP_SUCCESS
The request was successful.
LDAP_OPERATIONS_ERROR
An operations error occurred.
LDAP_PROTOCOL_ERROR
A protocol violation was detected.
LDAP_TIMELIMIT_EXCEEDED
An LDAP time limit was exceeded.
LDAP_SIZELIMIT_EXCEEDED
An LDAP size limit was exceeded.
LDAP_COMPARE_FALSE
A compare operation returned false.
LDAP_COMPARE_TRUE
A compare operation returned true.
LDAP_STRONG_AUTH_NOT_SUPPORTED
The LDAP server does not support strong authentication.
LDAP_STRONG_AUTH_REQUIRED
Strong authentication is required for the operation.
LDAP_PARTIAL_RESULTS
Partial results only returned.
LDAP_REFERRAL
Indicates a LDAP Referral response. The message will include one or more LDAP URLs to which the client should re-direct subsequent operations for this DN.
LDAP_ADMINLIMIT_EXCEEDED
Indicates that any limit placed on the number of entries to be searched within the server has been exceeded.
LDAP_UNAVAILABLE_CRITICAL_EXTENSION
Indicates that a control or matching rule, requested in the operation, is not supported by this server.
LDAP_CONFIDENTIALITY_REQUIRED
The server configuration requires some form of confidentiality (TLS/SSL or SASL) when performing the bind with the provided DN, for example, a global or database security directive may requires some form of SSF during simple_bind, or update operations.
LDAP_SASL_BIND_IN_PROGRESS
The server is currently performing a SASL bind and the requested operation is invalid in this context.
LDAP_NO_SUCH_ATTRIBUTE
The attribute specified in the request does not exist in the entry.
LDAP_UNDEFINED_TYPE
The attribute type specified in the request was invalid.
LDAP_INAPPROPRIATE_MATCHING
Indicates the extensible match filter matching rule is not supported for the specified attribute type.
LDAP_CONSTRAINT_VIOLATION
An attribute value specified in an operation violates some constraint
Possible causes:
1. string too long
2. wrong type - string written to numeric attribute
2. Invalid value, for example, attribute may take a specific value or one of a set of values
LDAP_TYPE_OR_VALUE_EXISTS
An attribute type or attribute value specified already exists in the entry.
Possible Causes:
1. Adding entry - one or more attributes in an LDIF (or add/replace operation) for an entry are exactly the same (duplicated)
LDAP_INVALID_SYNTAX
An invalid attribute value was specified.
(x'16 - x'1F). Unused.
LDAP_NO_SUCH_OBJECT
The specified entry does not exist in the directory (DIT).
LDAP_ALIAS_PROBLEM
An alias in the DIT points to a nonexistent entry.
LDAP_INVALID_DN_SYNTAX
A syntactically invalid DN was specified. May also happen if you use an LDIF format file (dn: cn=xxx etc.) with ldapdelete which only requires a plain DN.
Reserved and unused in LDAPv3 (LDAPv2: LDAP_IS_LEAF The object specified is a leaf)
LDAP_ALIAS_DEREF_PROBLEM
A problem was encountered when dereferencing an alias. See also 33.
(x'25 - x'2F). Unused.
LDAP_INAPPROPRIATE_AUTH
Inappropriate authentication was specified, for example, LDAP_AUTH_SIMPLE was specified and the entry does not have a userPassword attribute.
LDAP_INVALID_CREDENTIALS
Invalid credentials were presented, for example, the wrong password
Additional text: unable to get TLS Client DN
Possible Cause:
1. No client certificate when TLSVerifyClient is 'demand'
2. No client certificate when TLSVerifyClient is 'never' in which case the error message is not fatal and service continues.
LDAP_INSUFFICIENT_ACCESS
The user has insufficient access to perform the operation.
The server (DSA) is too busy to perform the requested operation.
LDAP_UNAVAILABLE
The DSA is unavailable, for example, it may be halted, paused or initialising.
LDAP_UNWILLING_TO_PERFORM
The server (DSA) is unwilling to perform the operation.
Additional text:
no global superior knowledge - the name that is being added or modified does not exist in any naming context or does not have a valid referral.
Possible cause:
1. no olcSuffix attribute (or no suffix directive in slapd.conf) for the referenced DIT
Additional Text: S no update referral - the DIT being updated is a replica in read only mode and the absence of an updateref directive means a referral cannot be returned.
Possible Causes:
1. A write had been attempted to a read-only replica (the consumer in a syncrepl configuration is always read-only).
2. In a multi-master syncrepl configuration mirrormode true may be missing from the slapd.conf file.
3. If slapd was loaded using a slapd.conf file and a slapd.d directory (cn=config) also exists them subsequent modifications to a DIT can fail with this message. FreeBSD in particular needs an explicit entry in rc.conf (slapd_cn_config="YES") to force use of slapd.d.
LDAP_LOOP_DETECT
A loop was detected.
(x'37 - x'3B). Unused.
LDAP_SORT_CONTROL_MISSING
Unused in standards. Sun LDAP Directory Server only. Server did not receive a required server-side sorting control.
LDAP_RANGE_INDEX_ERROR
Unused in standards. Sun LDAP Directory Server only. The search results exceeded the range specified by the requested offsets.
(x'3E - x'3F). Unused.
LDAP_NAMING_VIOLATION
Indicates the rquest contained a naming violation within the current DIT.
LDAP_OBJECT_CLASS_VIOLATION
An object class violation occurred when using the current schema, for example, a "must" attribute was missing when adding an entry.
LDAP_NOT_ALLOWED_ON_NONLEAF
The operation is not allowed on a nonleaf (one that has child entries) entry.
LDAP_NOT_ALLOWED_ON_RDN
The operation is not allowed on an RDN, for example, deleting an attribute that is used as an RDN within the DN.
LDAP_ALREADY_EXISTS
The entry already exists in this DIT.
LDAP_NO_OBJECT_CLASS_MODS
Object class modifications are not allowed.
LDAP_RESULTS_TOO_LARGE
C API (draft) only. Results too large to be contained in this message.
LDAP_AFFECTS_MULTIPLE_DSAS
Indicates the operation needs to be performed on multiple servers (DSAs) and this is not permitted.
(x'48 - x'4F). Unused.
LDAP_OTHER
An unknown error occurred.
Possible Cause:
Attempting to delete an attribute (especially in cn=config) that is not permitted
Additional text:
olcDbDirectory: value #0: invalid path: No such file or directory
Possible Cause:
The path for the database must exist before inializing a new database.
LDAP_SERVER_DOWN
C API (draft) only. The LDAP library can't contact the LDAP server.
LDAP_LOCAL_ERROR
C API (draft) only. Some local error occurred. This is usually a failed dynamic memory allocation.
LDAP_ENCODING_ERROR
C API (draft) only. An error was encountered encoding parameters to send to the LDAP server.
LDAP_DECODING_ERROR
C API (draft) only. An error was encountered decoding a result from the LDAP server.
LDAP_TIMEOUT
C API (draft) only. A timelimit was exceeded while waiting for a result.
LDAP_AUTH_UNKNOWN
C API (draft) only. The authentication method specified to ldap_bind() is not known.
LDAP_FILTER_ERROR
C API (draft) only. An invalid filter was supplied to ldap_search() (for instance, unbalanced parentheses).
LDAP_USER_CANCELLED
C API (draft) only. Indicates the user canceled the requested operation.
LDAP_PARAM_ERROR
C API (draft) only. An ldap routine was called with a bad parameter.
LDAP_NO_MEMORY
C API (draft) only. An memory allocation (e.g., malloc(3) or other dynamic memory allocator) call failed in an ldap library routine.
LDAP_CONNECT_ERROR
C API (draft) only. A Library/Client cannot connect to an LDAP server defined in a URL.
LDAP_NOT_SUPPORTED
C API (draft) only. Indicates request uses feature not supported by this server.
LDAP_CONTROL_NOT_FOUND
C API (draft) only. A requested control control was not found on this server.
LDAP_NO_RESULTS_RETURNED
C API (draft) only. The requested operation was successful but no results were returned (obtained).
LDAP_MORE_RESULTS_TO_RETURN
C API (draft) only. The requested operation was succesful but more results need to be returned than could fit in the current message.
LDAP_CLIENT_LOOP
C API (draft) only. Client detected a loop, for example, following referrals.
LDAP_REFERRAL_LIMIT_EXCEEDED
C API (draft) only. The server or client exceeded any defined referral limit.
OpenLDAP Log
This section shows some annotated OpenLDAP logs. Lines beginning # are comments inserted for the purposes of annotation and would not be present in a normal log.
Problems, comments, suggestions, corrections (including broken links) or something to add? Please take the time from a busy life to 'mail us' (at top of screen), the webmaster (below) or . You will have a warm inner glow for the rest of the day.
big picture
quickstart
operations
appendices
This work is licensed under a
If you are happy it's OK - but your browser is giving a less than optimal experience on our site. You could, at no charge, upgrade to a W3C STANDARDS COMPLIANT browser such as
Organizations
Copyright & 1994 - 2016 ZyTrax, Inc. All rights reserved.
Page modified: May 12 2016.}

我要回帖

更多关于 119.146.68.34 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信