CVSROOT:        /cvs/cluster
Module name:    cluster
Branch:         RHEL5
Changes by:     [EMAIL PROTECTED]       2007-10-25 20:02:51

Modified files:
        gfs/gfs_grow   : main.c 

Log message:
        Resolves: bz 337961: gfs_grow /mountpoint/ does not work

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/cluster/gfs/gfs_grow/main.c.diff?cvsroot=cluster&only_with_tag=RHEL5&r1=1.5.2.1&r2=1.5.2.2

--- cluster/gfs/gfs_grow/main.c 2007/01/17 19:08:25     1.5.2.1
+++ cluster/gfs/gfs_grow/main.c 2007/10/25 20:02:51     1.5.2.2
@@ -729,33 +729,42 @@
  */
 
 static int
-find_fs(char *name)
+find_fs(const char *name)
 {
        FILE *fp = fopen("/proc/mounts", "r");
        char buffer[4096];
        char fstype[80];
        int fsdump, fspass;
+       char *realname;
 
+       realname = realpath(name, NULL);
+       if (!realname) {
+               perror(name);
+               return -1;
+       }
        if (fp == NULL) {
                perror("open: /proc/mounts");
                exit(EXIT_FAILURE);
        }
        while ((fgets(buffer, 4095, fp)) != NULL) {
                buffer[4095] = 0;
-               if (strstr(buffer, name) == 0)
+               if (strstr(buffer, realname) == 0)
                        continue;
                if (sscanf(buffer, "%s %s %s %s %d %d", device, fspath, fstype,
                           fsoptions, &fsdump, &fspass) != 6)
                        continue;
                if (strcmp(fstype, "gfs") != 0)
                        continue;
-               if ((strcmp(device, name) != 0) && (strcmp(fspath, name) != 0))
+               if ((strcmp(device, realname) != 0) &&
+                   (strcmp(fspath, realname) != 0))
                        continue;
                fclose(fp);
+               free(realname);
                return 0;
        }
        fprintf(stderr, "GFS Filesystem %s not found\n", name);
        fclose(fp);
+       free(realname);
        return 1;
 }
 

Reply via email to