From: Nathan Rutman Date: Mon, 25 Jan 2010 20:01:21 +0000 (-0800) Subject: b=21746 compare full filename when writeconf'ing X-Git-Tag: 1.10.0.36~22 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=271823e89e7c00a390ee27ad7d4b8fc6ac9cfda1;ds=inline b=21746 compare full filename when writeconf'ing When erasing MGS logs, we could confuse fsname e.g. test with test2 and erase both sets of logs. i=breitz i=brian --- diff --git a/lustre/mgs/mgs_llog.c b/lustre/mgs/mgs_llog.c index 37e0e65..4848990 100644 --- a/lustre/mgs/mgs_llog.c +++ b/lustre/mgs/mgs_llog.c @@ -2814,6 +2814,7 @@ int mgs_erase_logs(struct obd_device *obd, char *fsname) cfs_list_t dentry_list; struct l_linux_dirent *dirent, *n; int rc, len = strlen(fsname); + char *suffix; ENTRY; /* Find all the logs in the CONFIGS directory */ @@ -2833,9 +2834,14 @@ int mgs_erase_logs(struct obd_device *obd, char *fsname) cfs_list_for_each_entry_safe(dirent, n, &dentry_list, lld_list) { cfs_list_del(&dirent->lld_list); - if (strncmp(fsname, dirent->lld_name, len) == 0) { - CDEBUG(D_MGS, "Removing log %s\n", dirent->lld_name); - mgs_erase_log(obd, dirent->lld_name); + suffix = strrchr(dirent->lld_name, '-'); + if (suffix != NULL) { + if ((len == suffix - dirent->lld_name) && + (strncmp(fsname, dirent->lld_name, len) == 0)) { + CDEBUG(D_MGS, "Removing log %s\n", + dirent->lld_name); + mgs_erase_log(obd, dirent->lld_name); + } } OBD_FREE(dirent, sizeof(*dirent)); }