LLAPI\_CHANGELOG\_REGISTER(3) Lustre Library Functions LLAPI\_CHANGELOG\_REGISTER(3)

# [NAME](#NAME)

llapi\_changelog\_register - Register changelog user on specific MDT device.

# [SYNOPSIS](#SYNOPSIS)

```
#include <lustre/lustreapi.h>
```

```
int llapi_changelog_register(const char *mdtname, const char *username,
                    const char *usermask, char *regname, size_t reglen);
```

# [DESCRIPTION](#DESCRIPTION)

The function **llapi\_changelog\_register()** registers a changelog *username* using an optional application-specific identifier (e.g. '**audit**') on the specified MDT device *mdtname* (e.g. **lustrefs-MDT0000**) with user-specific *usermask*, and returns the registered full consumer name *regname* with *reglen* length. The **llapi\_changelog\_register()** command must run on the MDS where the MDT is mounted as the root user for each *mdtname* in the filesystem to be monitored.

The *username* must be under **CHANGELOG\_USER\_NAMELEN** bytes in size, as this length includes a trailing NUL character. The name must start with a letter and only contain ASCII alphanumeric ([**isalnum**(3)](/man/enterprise-packages/lustre/isalnum.3)), dash '**-**'**,** and underscore '**\_**' characters.

The *regname* argument is a character array that should be long enough to hold the *username* plus the changelog user number, with *reglen* at least **CHANGELOG\_USER\_NAMELEN\_FULL** bytes in size.

The *usermask* argument contains a comma- or '+' separated list of changelog record type names that should be activated while this user is registered.

# [RETURN VALUES](#RETURN_VALUES)

Return changelog user ID on success or a negative errno value on failure.

# [ERRORS](#ERRORS)

-EEXIST

Username already exists.

-EILSEQ

Mask is in a wrong format.

-EINVAL

MDT device name is invalid or not found.

-ENAMETOOLONG

The specified *username* is too long, shorten it.

-EOVERFLOW

The *regname* buffer is too small, increase its size and its corresponding *reglen* and/or shorten *username*.

-EPROTO

Assigned username is invalid.

# [EXAMPLE](#EXAMPLE)

To register a new changelog user on the specified MDT:

```
#include <lustre/lustreapi.h>
int main(int argc, char *argv[])
{
	char *mdtname = argv[1];  /* e.g. "testfs-MDT0000" */
	char *username = argv[2]; /* e.g. "audit" */
	char *usermask = argv[3]; /* e.g. "open,creat,renam,unlnk" */
	char regname[CHANGELOG_USER_NAMELEN_FULL];
	int rc;
	rc = llapi_changelog_register(mdtname, username, usermask,
	                              regname, sizeof(regname));
}
```

# [AVAILABILITY](#AVAILABILITY)

**llapi\_changelog\_register()** is part of the [**lustre**(7)](/man/enterprise-packages/lustre/lustre.7) user application interface library since release 2.18.0.

# [SEE ALSO](#SEE_ALSO)

[**llapi\_changelog\_clear**(3)](/man/enterprise-packages/lustre/llapi_changelog_clear.3), [**llapi\_changelog\_deregister**(3)](/man/enterprise-packages/lustre/llapi_changelog_deregister.3), [**llapi\_changelog\_get\_fd**(3)](/man/enterprise-packages/lustre/llapi_changelog_get_fd.3), [**llapi\_changelog\_recv**(3)](/man/enterprise-packages/lustre/llapi_changelog_recv.3), [**llapi\_changelog\_start**(3)](/man/enterprise-packages/lustre/llapi_changelog_start.3), [**lustreapi**(7)](/man/enterprise-packages/lustre/lustreapi.7), [**lctl-changelog\_register**(8)](/man/enterprise-packages/lustre/lctl-changelog_register.8)

2026-09-12 Lustre User API

---

Document: llapi_changelog_register(3) from lustre 2.17.60-r0 (Chainguard OS)
Source: https://github.com/lustre/lustre-release
