-/* We need the full mdc name, and we shouldn't just grep from proc... */
-static void do_get_mdcname(char *obd_type_name, char *obd_name,
- char *obd_uuid, void *name)
-{
- if (strncmp(obd_name, (char *)name, strlen((char *)name)) == 0)
- strcpy((char *)name, obd_name);
-}
-
-static int get_mdcdev(const char *mdtname)
-{
- char name[MAX_OBD_NAME];
- char *type[] = { "mdc" };
- int rc;
-
- strcpy(name, mdtname);
- rc = llapi_target_iterate(1, type, (void *)name, do_get_mdcname);
- rc = rc < 0 ? : -rc;
- if (rc < 0) {
- llapi_err(LLAPI_MSG_ERROR, "Device %s not found %d\n", name,rc);
- return rc;
- }
- return dev_name2dev(name);
-}
-
-int llapi_changelog_clear(const char *mdtname, const char *idstr,
- long long endrec)
-{
- struct obd_ioctl_data data;
- int dev, id, rc;
-
- if (endrec < 0) {
- llapi_err(LLAPI_MSG_ERROR | LLAPI_MSG_NO_ERRNO,
- "can't purge negative records\n");
- return -EINVAL;
- }
-
- id = strtol(idstr + strlen(CHANGELOG_USER_PREFIX), NULL, 10);
- if ((id == 0) || (strncmp(idstr, CHANGELOG_USER_PREFIX,
- strlen(CHANGELOG_USER_PREFIX)) != 0)) {
- llapi_err(LLAPI_MSG_ERROR | LLAPI_MSG_NO_ERRNO,
- "expecting id of the form '"CHANGELOG_USER_PREFIX
- "<num>'; got '%s'\n", idstr);
- return -EINVAL;
- }
-
- dev = get_mdcdev(mdtname);
- if (dev < 0) {
- llapi_err(LLAPI_MSG_ERROR | LLAPI_MSG_NO_ERRNO,
- "can't find mdc for '%s'\n", mdtname);
- return dev;
- }
-
- memset(&data, 0, sizeof(data));
- data.ioc_u32_1 = id;
- data.ioc_u64_1 = endrec;
- rc = dev_ioctl(&data, dev, OBD_IOC_CHANGELOG_CLEAR);
- if (rc)
- llapi_err(LLAPI_MSG_ERROR | LLAPI_MSG_NO_ERRNO,
- "ioctl err %d", rc);
- return rc;
-}
-
-